Spring Remoting und OSGi

G

Gast2

Gast
Hallo zusammen,

ich hab bis jetzt noch nicht viel gemacht was mit Server und OSGi zu tun hatte, darum stellen sich mir einige Fragen. Ich habe gerade eine Standalone RCP Anwendung in den folgende Bundles vorliegen:
GUI,Model,Service,DAO,Logging,DB (Derby).
Nun will ich auf dem Client nur noch die GUI und evtl. die Models benutzen. Und auf einem Server die Model,Service,DAO usw. Bundles.

Für das Remoting habe ich mir mal die Doku und den Artikel angeschaut.
Enterprise Eclipse RCP - Teil 2: Remoting und Caching

So wie meine Strukur aufgebaut ist muss ich die Services noch exportieren und mein client muss diese importieren.
1. Benötige ich für die remoting-servlet.xml und web.xml ein eigenes Bundle???
2. Danach benötige ich ja noch einen Server, was benutz ich am besten hab mal den Tipp für Spring DM Server bekommen? Aber reicht der mit oder brauch ich noch nen Tomcat o.ä?
 
G

Gelöschtes Mitglied 5909

Gast
Wenn ich mich nicht täsche, dann basiert Spring Remoting doch auf RMI, und dann brauchst du nix.

Ansonsten würd ich einfach den Tomcat nehmen der bei Spring DM dabei ist, nicht Spring DM Server.
Und dann machst du ein extra bundle.

Manifest:
Code:
Web-ContextPath: web
Bundle-Version: 1.0.0.qualifier
Bundle-ClassPath: WEB-INF/classes/,
 WEB-INF/lib/,
 .

Web-Contextpath ist dann der pfad unter der du die Anwendung findest.
Jedes web-bundle ist ne eigene webapp.

Beispiel siehe anhang.

Bundles die du noch brauchst:

catalina.start.osgi-1.0.0.jar <- das fährt tomcat hoch
catalina.osgi-5.5.23-SNAPSHOT.jar <- das ist der tomcat

Und natürlich der Spring Web-Extender (scannt die Manifest der Bundles):

spring-osgi-web-1.2.1.jar
spring-osgi-web-extender-1.2.1.jar
 
G

Gast2

Gast
Okay das mit dem web Bundle habe ich auch so gemacht =) außer dass ich kein Servlet benötige sondern da drin meine Remoting Sachen habe.
Aber für was genau brauch ich das Bundle tomcat config?
Und was genau muss ich jetzt auf dem Server deployen? Alle Bundles?
Das mit den 2 Tomcat Bundles habe ich auch nicht so richtig verstanden? Wo muss ich die einfügen weil ich starte den Tomcat doch ganz normal über die startup.bat?

Und wie macht man am besten die launch Dateien, manuell?

EDIT: Okay wie hier gelesen hab soll ein Jetty besser sein :D...
http://www.java-forum.org/application-tier/97023-spring-dm-problem-tomcat-osgi-service.html

Aber das Prinzip hab ich immer noch nicht gerafft. Ich integrier den Server einfach als OSGi Bundle (also nehm ihn in meine target platform mit auf)? Und der fährt sich dann automatisch hoch oder wie?
 
Zuletzt bearbeitet von einem Moderator:
G

Gast2

Gast
Okay ich glaub ich will zuviel aufeinmal ^^... Fang ich mal klein an.
Also ich hab den Jetty in meine target platform mit aufgenommen (OSGi Update Repositories )
Jetty/Starting/Downloads - Eclipsepedia
Danach hab ich die jetty.zip runtergeladen und entpackt.
Hab in der Umgebungsvariablen JETTY_HOME eingetragen.
Und das kleine Tutorial ab "Setup Jetty and a first Web-bundle" druchgemacht.
Jetty/Tutorial/Jetty-OSGi SDK - Eclipsepedia

Wenn ich das Bundle starte bekomme ich immer als consolen Ausgabe
Java:
osgi>
nicht mehr aber mein jetty ist unter http://localhost:8080/test nicht zu erreichen.

Mein Manifest sieht wie in dem Tutorial aus
[XML]
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Xxx
Bundle-SymbolicName: xxx
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: xxx.Activator
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: javax.servlet;version="2.5.0",
javax.servlet.http;version="2.5.0",
org.osgi.framework;version="1.3.0"
Web-ContextPath: /test
[/XML]

Muss ich den Server manuell starten (start.jar) und die Anwendung deployen?
 
Zuletzt bearbeitet von einem Moderator:
G

Gelöschtes Mitglied 5909

Gast
Du denkst verkehrtrum. Du willst den Tomcat wie bisher starten und dort deine sachen deployen.

Wir sind aber hier in OSGi. Du Startest das OSGi Framework in in dem Framework startest du Tomcat - nicht umgekehrt.

Dazu hat Spring den normalen Tomcat einfach verbundled. Damit er auch gestartet wird, wird in dem catalina.start.osgi-1.0.0.jar bundle per java code der server erstellt. Da kommt dann schon die nexte Antwort auf deine Frage: in dem tomcat.config fragment ist die server.xml von tomcat enthalten. Da sich bundles und fragmente den gleichen classloader teilen,
kann das catalina.start.osgi-1.0.0.jar bundle auf die server.xml des fragments zugreifen und so den tomcat konfigurieren.
Da ist z.b. der Port drinnen.

Jetzt ist der Server gestartet. Aber wie schauts aus mit den webapps?

Dazu wird zunächst noch der StandardService (StandardService (Tomcat API Documentation) <- der hier) vom catalina.start.osgi-1.0.0.jar bundle veröffentlicht.

Jetzt hast du in der OSGi Registry den StandardService vom Tomcat, mit dem du quasi alles machen kannst.

Damit du jetzt nicht selber hergehn muss und dir den Service holst, die webapp registrierst etc. hat spring den WebExtender geschrieben. Der geht her und scannt alle Manifests aller bundles.
Tauchen dort die EInträge Web-ContextPath und Module-Type : Web auf, weiß der extender dass es sich um eine webapp handelt. Ergo wird es als webapp deployed.

Nun zum Thema jetty:

Jetty kann man einfacher in eine Java - App integrieren. Aber: Wenn du nicht die Spring version verwendest, wird der Jetty im normalfall (z.b. bei der Eclipse distribution [womit z.b. das Help-System gemacht wird]) in form des HttpService (HttpService (OSGi Service Platform Release 4 Version 4.2)) registriert. Sieht auf den ersten blick nicht schlimm aus, du kannst Servlets registrieren.

Jetzt kommt das große aber:

1. du musst dir den service selber holen und deine servlets registrieren (oder über plugin.xml)
2. die web.xml wird NICHT ünterstützt: keine authentifizierung, keine filter, keine listener, keine jsps, NICHTS

Jetzt gibt es noch den pax-web-extender, der kann ein bischen mehr.

Pax Web - OPS4J

aber auch er kann nicht alles.

Deshalb veröffentlich Spring in den tomcat/jetty bundles aus ihrem repo den jeweiligen service, mit dem man _alles_ machen kann, was in der web.xml ist.

Ich hoffe es war verständlich :)
 
G

Gast2

Gast
Ja okay danke, habe mir schon fast gedacht dass ich irgendwo einen Denkfehler drin hatte.
Also das heißt wenn ich das OSGi Framework hochfahre kümmert sich dieses darum den Server zu starten?

Okay zum Thema Jetty oder Tomcat, welcher ist geeigneter für den Einstieg?

Ich versuch grad den Jetty zu benutzen muss ich dann beim Spring Repo irgendwas runterladen?

Aber was ich noch nicht versteh ich hab das Tutorial gemacht. Das OSGi Framework hochgefahren aber der Jetty ist nicht erreichbar.
Jetty/Tutorial/Jetty-OSGi SDK - Eclipsepedia
 
G

Gelöschtes Mitglied 5909

Gast
Das ist ein feature von den spring dm bundles. Die standard Jetty Version macht das nicht automatisch

ich lad dir mal meinen workspace hoch, da ist alles drinn, dann startest du ihn und probierst mal rum :)
 
G

Gelöschtes Mitglied 5909

Gast
verstehst du es nun? Ich hatte am Anfang auch erst den Jetty benutzt, und zwar den ganz normalen.

Aber dann funktioniert der Spring DM Web-Extender nicht.

Wichtig ist, dass der funktioniert, da ansonsten die webapps nicht automatisch deployed werden. (wenn das webappbundle gestartet wurde).

Die Spring DM distribution hat aber sowohl eine tomcat, als auch eine jetty Version dabei.

Was du noch ausprobieren könntest ist die klasse als OSGi Service (Catalina StandardService bei Tomcat) zu veröffentlichen, welche der spring web-extender benötigt. Welche das beim jetty ist kann ich dir aber net auf anhieb sagen. (mit der spring mitgelieferten version ausprobieren und in der osgi konsole nach dem service schaun)

Dann könntest du z.b. auch die jetty-hightide version ausprobieren, die hat jsp support dabei und noch einiges mehr.
Ich brauche keine jsps, von daher hab ichs noch nicht ausprobiert. Es gibt aber auch aktuellere versionen von tomcat im spring bundle repo

Noch ein tipp am rande:

Apache Felix - Apache Felix File Install das ist ein sehr nützliches kleines bundle. denn anders als unter eclipse (launch config) werden normalerweise bundles nicht automatisch gestartet. Da müsstest du normalerweise alle bundles in die config.ini aufnehmen, was bei >50 bundles schon keinen spaß mehr macht.

Außerdem kannst du mit dem bundle dann quasi hot deployment machen. Jar austauschen und gut ist.

Das war aber auch schon in dem ersten workspace mit dem binary dabei, den ich dir mal gegeben hab.
 
Zuletzt bearbeitet von einem Moderator:
G

Gast2

Gast
Nee konnte es noch nicht anschaun, war übers we nicht daheim. Aber werd ich in der Laufe der Woche nachholen.

Ich benötige auch keine jsp ich will ja nur das Spring Remoting für meine eclipseRCP verwenden.
 
G

Gast2

Gast
Okay hier mal meine 1ten Fragen ;). Erstmal danke nochmal dass du dir soviel Mühe gemacht hast.
1. Ich hab es ohne Mühe zum Laufen gebracht. Aber unter http://localhost:8080/hello habe ich keine Seite angezeigt bekommen? Dazu ist mir die Zeile in der server.xml aufgefallen:
[XML]
<Host name="localhost" unpackWARs="false" autoDeploy="false"
[/XML]

Heißt das die Anwendung ist noch nicht deployed oder übernimmt genau das jetzt derspring-osgi-web-extender ?

Java:
osgi> 2010-10-18 09:57:59,090 INFO : Unable to find a cluster rule set in the classpath. Will load the default rule set.
2010-10-18 09:57:59,106 INFO : Unable to find a cluster rule set in the classpath. Will load the default rule set.
2010-10-18 09:57:59,372 INFO : Initializing Coyote HTTP/1.1 on http-8080
2010-10-18 09:57:59,372 INFO : Initialization processed in 266 ms
2010-10-18 09:57:59,372 INFO : Starting service Catalina
2010-10-18 09:57:59,372 INFO : Starting Servlet Engine: Apache Tomcat/5.5.23
2010-10-18 09:57:59,387 INFO : XML validation disabled
2010-10-18 09:57:59,434 INFO : Starting Coyote HTTP/1.1 on http-8080
2010-10-18 09:57:59,887 WARN : Could not get url for /javax/servlet/jsp/resources/web-jsptaglibrary_1_1.dtd
2010-10-18 09:57:59,887 WARN : Could not get url for /javax/servlet/jsp/resources/web-jsptaglibrary_1_2.dtd
2010-10-18 09:57:59,950 INFO : Initializing Spring root WebApplicationContext
2010-10-18 09:58:06,075 INFO : Constructing new Person...
2010-10-18 09:58:08,325 INFO : Person null Max Mustermann constructed
2010-10-18 09:58:08,684 INFO : Insert Person...
2010-10-18 09:58:10,950 INFO : Person inserted
2010-10-18 09:58:11,341 INFO : Query all Persons
2010-10-18 09:58:12,763 INFO : 1 Persons found.
2010-10-18 09:58:13,841 INFO : 1 Max Mustermann

2. Die catalina jars sind das die aus dem Spring DM distrubution?
Das heißt wenn ich nen Jetty benutzen wollen würde müsste ich die jars austauschen und das tomcat config Bundle?
3. Was ich auch nicht richtig durchschaut habe wie man so ne . launch Datei anlegen kann? Das macht du nicht von Hand oder?
4. Was ist das osgi_R4_compendium-1.0.jar?
 
G

Gast2

Gast
Okay grad mal die Spring DM with dep runter geladen und seh die Jetty jars. Mal mitaufnehmen in die target platform.

Gibts eigentlich irgendo ne Seite für Vor/Nachteile Jetty und Tomcat?

Muss ich bei Jetty anstatt der server.xml die jetty.xml verwenden?


Also ich hab jetzt mal die jetty.xml verwendet und bekomm das als Ausgabe in der osgi console

[XML]
osgi> 2010-10-18 13:54:17,944 INFO : Logging to org.slf4j.impl.Log4jLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog
2010-10-18 13:54:18,053 INFO : Redirecting stderr/stdout to C:\Programme\eclipse-rcp-helios-win32\eclipse\logs\2010_10_18.stderrout.log
2010-10-18 13:54:18,053 INFO : jetty-6.1.x
2010-10-18 13:54:18,069 INFO : Opened C:\Programme\eclipse-rcp-helios-win32\eclipse\logs\2010_10_18.request.log
2010-10-18 13:54:18,100 INFO : Started SelectChannelConnector@0.0.0.0:8080
2010-10-18 13:54:19,147 INFO : Constructing new Person...
2010-10-18 13:54:19,147 INFO : Person null Max Mustermann constructed
2010-10-18 13:54:19,147 INFO : Insert Person...
2010-10-18 13:54:19,459 INFO : Person inserted
2010-10-18 13:54:19,459 INFO : Query all Persons
2010-10-18 13:54:19,600 WARN : Unable to proxy method [public final void org.mortbay.component.AbstractLifeCycle.start() throws java.lang.Exception] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2010-10-18 13:54:19,600 WARN : Unable to proxy method [public final void org.mortbay.component.AbstractLifeCycle.start() throws java.lang.Exception] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2010-10-18 13:54:19,600 WARN : Unable to proxy method [public final void org.mortbay.component.AbstractLifeCycle.stop() throws java.lang.Exception] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2010-10-18 13:54:19,600 WARN : Unable to proxy method [public final void org.mortbay.component.AbstractLifeCycle.stop() throws java.lang.Exception] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2010-10-18 13:54:19,678 INFO : 1 Persons found.
2010-10-18 13:54:19,678 INFO : 1 Max Mustermann
2010-10-18 13:54:19,944 INFO : Initializing Spring root WebApplicationContext
[/XML]

wenn ich nun auf http://localhost:8080/hello gehe
dann bekomme ich folgende exception
Java:
HTTP ERROR: 404

NOT_FOUND

RequestURI=/hello

Powered by jetty://
 
Zuletzt bearbeitet von einem Moderator:
G

Gelöschtes Mitglied 5909

Gast
1. Beitrag

Zu 1.:

Quizfrage: wenn du ein zweites web-bundle hast, was glaubst du wohin es deployed wird? :)

Du hast den Betrag von oben nicht genau genug gelesen.

Code:
Web-ContextPath: web

Das ist das root-path der Anwendung. Wenn man also ein Servlet auf /hello mapped,
dann ist es unter localhost:8080/web/hello erreichbar. Der Port ist der aus der server.xml.

Und nein das autodeploy musst du nicht auf true setzen, das macht der web-extender.

2010-10-18 09:57:59,950 INFO : Initializing Spring root WebApplicationContext

das heißt die Anwendung wurde deployed - sollte also laufen. Normalerweise steht aber auchnoch der web-contextpath dahinter (bei der logausgabe).

2. Ja, das sind die die bei der Spring DM Distribution dabei sind (im folder libs oder so)
Wenn du den jetty willst musst du nur die bundles austauschen (sind analog zum jetty glaub ich 2)

Das Fragment mit der server.xml für den tomcat macht dann natürlich keinen sinn mehr.

3. So ne launch konfiguration erzeugst du unter Eclipse, in dem du bei run-as eine neue osgi-framework konfig erzeugst.
Mit Export -> Launch configuration (rechts auf irgendein projekt clicken) kannst du die als datei exportieren.

4. Die OSGi-Compendium jar enthält die offizielle API für diverse OSGi Standard-Services.
Das wären unter anderem der LogService, der ConfigAdmin und noch ein paar andere.
Eine Implementierung ist in diesem Fall nicht dabei. Schaust du dir aber mal den 1. workspace an den ich dir mal hochgeladen hab, findest du das im binary.

Ist dann nämlich z.b. org.eclipse.equinox.cm_1.0.200.v20100520.jar, was die implementierung von Equinox bzw Eclipse ist.

2. Beitrag

ja du musst die jetty.xml statt der server.xml nehmen. Die Web.xml ist die gleiche. Jetty bietet noch die möglichkeit an, eine jetty-web.xml zu verwenden, da kann man noch ein bischen mehr machen (brauch man aber normalerweise nicht bzw. lässt sich mit der server.xml bei tomcat abbilden. Die jetty.xml musst du natürlich an den jetty attachen (Fragment-host). Welches das ist kann ich dir nicht sagen, da ich das noch nicht ausprobiert habe. Sollte aber analog das jetty-start bundle sein.

2010-10-18 13:54:19,944 INFO : Initializing Spring root WebApplicationContext

Auch hier hast du die Anwendung wieder richtig deployed, sie sollte auch erreichbar sein. Nur die url stimmt wieder nicht (und ggf. der port, je nachdem was in der jetty-xml steht - aber oben steht ja auch 8080)


// Edit:
noch zu tomcat vs. jetty:

Das ist eine Entscheidung die ihr selber machen müsst. Das hat eigentlich nix damit zu tun, ob es in OSGi läuft oder nicht.
Artikel gibts dazu genug im Netz. Was man noch sagen kann ist, dass Tomcat in dieser Version soweit ich weiß noch nicht java.nio verwendet. Jetty hingegen schon. Wenn es um das letzte bischen Performace geht, ist das vielleicht ein Argument für Jetty. Aber du kannst auch mal eine neuere Version von Tomcat aus dem Bundle Repo versuchen. Bei unserer App kann man das vernachlässigen.
 
Zuletzt bearbeitet von einem Moderator:
G

Gast2

Gast
Zu 1.:

Quizfrage: wenn du ein zweites web-bundle hast, was glaubst du wohin es deployed wird? :)

Du hast den Betrag von oben nicht genau genug gelesen.

Code:
Web-ContextPath: web

Omg ich Esel^^... Daran hab ich ehrlich gesagt gar nicht mehr gedacht... Geht jetzt!!! =)
Denk mal das 2te Bundle wird zum Web-ContextPath deployed ;)

2. Ja, das sind die die bei der Spring DM Distribution dabei sind (im folder libs oder so)
Wenn du den jetty willst musst du nur die bundles austauschen (sind analog zum jetty glaub ich 2)

Das Fragment mit der server.xml für den tomcat macht dann natürlich keinen sinn mehr.
jop das hab ich hinbekommen.

3. So ne launch konfiguration erzeugst du unter Eclipse, in dem du bei run-as eine neue osgi-framework konfig erzeugst.
Mit Export -> Launch configuration (rechts auf irgendein projekt clicken) kannst du die als datei exportieren.
Okay das probier ich mal aus, sowas hab ich gesucht.
4. Die OSGi-Compendium jar enthält die offizielle API für diverse OSGi Standard-Services.
Das wären unter anderem der LogService, der ConfigAdmin und noch ein paar andere.
Eine Implementierung ist in diesem Fall nicht dabei. Schaust du dir aber mal den 1. workspace an den ich dir mal hochgeladen hab, findest du das im binary.

Ist dann nämlich z.b. org.eclipse.equinox.cm_1.0.200.v20100520.jar, was die implementierung von Equinox bzw Eclipse ist.
Ah okay
 
G

Gast2

Gast
Sagt jemand was die Fehlermeldung

Java:
Caused by: java.lang.IllegalArgumentException: interface org.springframework.aop.SpringProxy is not visible from class loader
	at java.lang.reflect.Proxy.getProxyClass(Unknown Source)
	at java.lang.reflect.Proxy.newProxyInstance(Unknown Source)
	at org.springframework.aop.framework.JdkDynamicAopProxy.getProxy(JdkDynamicAopProxy.java:117)
	at org.springframework.aop.framework.ProxyFactory.getProxy(ProxyFactory.java:112)
	at org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean.afterPropertiesSet(HttpInvokerProxyFactoryBean.java:62)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1469)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409)
	... 14 more

Also meine Server XML sieht so aus:
applicationContext.xml
[XML]
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:eek:sgi="http://www.springframework.org/schema/osgi"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
Index of /schema/context http://www.springframework.org/schema/context/spring-context.xsd
Index of /schema/osgi http://www.springframework.org/schema/osgi/spring-osgi-1.2.xsd">

<osgi:reference id="personDaoRef" interface="org.java.forum.sample.dao.PersonDao"></osgi:reference>
<osgi:reference id="personServiceRef" interface="org.java.forum.sample.business.PersonService"></osgi:reference>
</beans>

[/XML]

remoting-servlet.xml
[XML]
<?xml version="1.0" encoding="ISO-8859-1"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- remoting exporters -->
<bean class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter" name="/PersonService">
<property name="service" ref="personServiceRef"/>
<property name="serviceInterface" value="org.java.forum.sample.business.PersonService"/>
</bean>
</beans>
[/XML]

web.xml
[XML]
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">

<context-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.osgi.web.context.support.OsgiBundleXmlWebApplicationContext</param-value>
</context-param>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>org.java.forum.sample.web.servlet.HelloServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>remoting</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>remoting</servlet-name>
<url-pattern>/remoting/*</url-pattern>
</servlet-mapping>

</web-app>
[/XML]

Und auf der clienSeite
[XML]
<bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="properties">
<props>
<prop key="remoteServer">localhost</prop>
<prop key="remotePort">8080</prop>
<prop key="remoteContext">web/remoting</prop>
</props>
</property>
</bean>
<bean id="personService" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
<property name="serviceUrl" value="http://${remoteServer}:${remotePort}/${remoteContext}/PersonService" />
<property name="serviceInterface" value="org.java.forum.sample.business.PersonService" />
</bean>

[/XML]
 
Zuletzt bearbeitet von einem Moderator:
G

Gelöschtes Mitglied 5909

Gast
Java:
Import-Package: org.springframework.aop;version="[3.0.0,4.0.0)"
 
G

Gast2

Gast
Perfekt jetzt klappts gut die Fehlermeldung muss ich mir merken dass bei der imports fehlen^^...

Ah eine Frage hab ich noch?!

Wie starte ich denn die ganze Sache nicht aus Eclipse raus? Also meinen RCP bekomme ich gebaut und kann ihn ausführen wie läuft das mit dem OSGi Container?

EDIT:

Seit ich alles in meinen eigenen workspace ausgeführt habe. Bekomme ich immer die Meldung
Java:
osgi> log4j:WARN No appenders could be found for logger (org.springframework.scheduling.timer.TimerTaskExecutor).
log4j:WARN Please initialize the log4j system properly.

Was könnte mir den fehlen? Ich hab ein log4j fragment...
In meiner launch habe ich das org.springframework.osgi.log4j.osgi aufgenommen
 
Zuletzt bearbeitet von einem Moderator:
G

Gelöschtes Mitglied 5909

Gast
Mit dem Build Prozess (automatisiert) kann ich dir leider nicht helfen, das macht bei uns gerade ein anderer.

Aber was du machen kannst ist in Eclipse -> export -> deployable plugins and fragments.

Als Runtime nimmst du idealerweise Apache Felix Karaf (ehemals ServiceMix Kernel)

Apache Felix - Apache Felix Karaf

Oder du nimmst den plain container aus dem Anhang, da musst du nur deine bundles in den bundles Ordner schmeißen.
Gestartet werden sie automatisch.

equinox 3.6.zip ... at ul.to - Free File Hosting, Free Image Hosting, Free Music Hosting, Free Video Hosting, ...
 
G

Gast2

Gast
Okay werd ich mal ausprobieren denke automatisiert muss am anfang nicht sein soweit passt es mal.

Noch ein Tip für das log4j Fragement? Irgendwie habe ich unsere beiden Versionen verglichen finde kein Unterschied aber klappt einfach nicht.
 
G

Gelöschtes Mitglied 5909

Gast
Sind beide in der target platform und auch in der launch config?

mal ss in der console gemacht und nachgeschaut?
 
G

Gast2

Gast
Deine Bundles
Code:
10	RESOLVED    org.java.forum.sample.log4j.config_1.0.0.qualifier
	            Master=50
31	RESOLVED    com.springsource.slf4j.log4j_1.5.0
	            Master=23
32	ACTIVE      com.springsource.slf4j.org.apache.commons.logging_1.5.0
50	ACTIVE      org.springframework.osgi.log4j.osgi_1.2.15.SNAPSHOT
	            Fragments=10

Meine Bundle

Code:
157	RESOLVED    com.springsource.slf4j.log4j_1.5.0
	            Master=167
184	ACTIVE      org.springframework.osgi.log4j.osgi_1.2.15.SNAPSHOT
	            Fragments=231
214	ACTIVE      com.springsource.slf4j.org.apache.commons.logging_1.5.0
231	RESOLVED    log4j.config_1.0.0.qualifier
	            Master=184

Das Manifest noch
Java:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Log4J Config Fragment
Bundle-SymbolicName: log4j.config
Bundle-Version: 1.0.0.qualifier
Bundle-ClassPath: log4j.config
Fragment-Host: org.springframework.osgi.log4j.osgi;bundle-version="[1.2.15,2.0.0)"
Bundle-RequiredExecutionEnvironment: JavaSE-1.6

Code:
log4j:WARN No appenders could be found for logger (org.springframework.scheduling.timer.TimerTaskExecutor).
log4j:WARN Please initialize the log4j system properly.

Das witzig ist ich hab einen workspace der geht.

Dann hab ich alles plugins von dort in einen neuen workspace mit import importiert.
Und genau die gleiche target platform verlinkt... Geht auch nicht bekomm ich die fehlermeldung
Code:
osgi> log4j:WARN No appenders could be found for logger (org.mortbay.log).
log4j:WARN Please initialize the log4j system properly.

sehr verwirrend^^
 
Zuletzt bearbeitet von einem Moderator:
G

Gast2

Gast
Echt witzig hab 2 identendisch workspace mit den gleichen target platform bei dem einen tuts bei dem anderen nicht???:L???:L


aaaaaaaaaaaaaaaaaaaaaaaaaaaah interessant :) ich habs... :toll::applaus:


wenn man den eclipse import plugin und fragements benutzt setzt er bei allen importierten plugins den classpath auf den bundle namen :noe:... und dann geht gar nichts mehr !!!
 
Zuletzt bearbeitet von einem Moderator:
G

Gast2

Gast
Sagt dir die Fehlermeldung was? Versteh nicht warum er auf einmal meine Klasse nicht mehr findet Oo...

Java:
2010-10-25 15:04:00,805 INFO : Initializing Spring root WebApplicationContext
2010-10-25 15:04:01,711 WARN : EXCEPTION 
java.lang.ClassNotFoundException: web.servlet.HelloServlet
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.net.FactoryURLClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at org.mortbay.util.Loader.loadClass(Loader.java:91)
	at org.mortbay.util.Loader.loadClass(Loader.java:71)
	at org.mortbay.jetty.servlet.Holder.doStart(Holder.java:73)
	at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:242)
	at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
	at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
	at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
	at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
	at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
	at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
	at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
	at org.springframework.osgi.web.deployer.jetty.JettyWarDeployer.startWebAppContext(JettyWarDeployer.java:210)
	at org.springframework.osgi.web.deployer.jetty.JettyWarDeployer.startDeployment(JettyWarDeployer.java:122)
	at org.springframework.osgi.web.deployer.support.AbstractWarDeployer.deploy(AbstractWarDeployer.java:93)
	at org.springframework.osgi.web.extender.internal.activator.WarLoaderListener$DeploymentManager$DeployTask.doRun(WarLoaderListener.java:257)
	at org.springframework.osgi.web.extender.internal.activator.WarLoaderListener$DeploymentManager$BaseTask.run(WarLoaderListener.java:215)
	at org.springframework.scheduling.timer.DelegatingTimerTask.run(DelegatingTimerTask.java:70)
	at java.util.TimerThread.mainLoop(Unknown Source)
	at java.util.TimerThread.run(Unknown Source)
2010-10-25 15:04:01,711 INFO : Unavailable javax.servlet.UnavailableException: web.servlet.HelloServlet
2010-10-25 15:04:01,711 WARN : failed Hello: java.lang.NullPointerException
2010-10-25 15:04:01,711 ERROR: Failed startup of context org.mortbay.jetty.webapp.WebAppContext@9effe0{}
java.lang.NullPointerException
	at java.lang.Class.isAssignableFrom(Native Method)
	at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:256)
	at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
	at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
	at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
	at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
	at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
	at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
	at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
	at org.springframework.osgi.web.deployer.jetty.JettyWarDeployer.startWebAppContext(JettyWarDeployer.java:210)
	at org.springframework.osgi.web.deployer.jetty.JettyWarDeployer.startDeployment(JettyWarDeployer.java:122)
	at org.springframework.osgi.web.deployer.support.AbstractWarDeployer.deploy(AbstractWarDeployer.java:93)
	at org.springframework.osgi.web.extender.internal.activator.WarLoaderListener$DeploymentManager$DeployTask.doRun(WarLoaderListener.java:257)
	at org.springframework.osgi.web.extender.internal.activator.WarLoaderListener$DeploymentManager$BaseTask.run(WarLoaderListener.java:215)
	at org.springframework.scheduling.timer.DelegatingTimerTask.run(DelegatingTimerTask.java:70)
	at java.util.TimerThread.mainLoop(Unknown Source)
	at java.util.TimerThread.run(Unknown Source)
 
G

Gast2

Gast
Naja hab das Bundle neu angelegt die import Package kopiert und nun tuts wieder komisch aber egal :D...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Spring Remoting Architektur Frameworks - Spring, Play, Blade, Vaadin & Co 32
L Spring Remoting Stateful Frameworks - Spring, Play, Blade, Vaadin & Co 1
8u3631984 Ist es möglich in Spring Entity generische Listen verwenden Frameworks - Spring, Play, Blade, Vaadin & Co 3
R Spring Boot Test Assertions mit Objekten Frameworks - Spring, Play, Blade, Vaadin & Co 6
8u3631984 Pfad zu Test Datei in application.yml in Spring Boot Test Frameworks - Spring, Play, Blade, Vaadin & Co 7
R Spring Boot sql Beziehungen Frameworks - Spring, Play, Blade, Vaadin & Co 12
8u3631984 Spring JPA Probleme beim SPeichern von Sets Frameworks - Spring, Play, Blade, Vaadin & Co 3
M Spring Boot 3 Datenbanken zur Laufzeit Verbinden Frameworks - Spring, Play, Blade, Vaadin & Co 5
8u3631984 Spring JDBC Probleme beim Spaltennamen Frameworks - Spring, Play, Blade, Vaadin & Co 3
LimDul Spring-Batches in Docker über Rest starten/verfolgen Frameworks - Spring, Play, Blade, Vaadin & Co 0
ExceptionOfExpectation In Meiner Spring-Boot Applikation verlangt die Datenbank Wert für eine ID Frameworks - Spring, Play, Blade, Vaadin & Co 5
H Spring Boot Applikation und JHM Benchmark sowie ContextConfiguration in H2 Tests ich bekomme es nicht hin Frameworks - Spring, Play, Blade, Vaadin & Co 2
ExceptionOfExpectation Tests in Spring-Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
R Eure Erfahrungen mit Primefaces und Spring - wer managed die Beans Frameworks - Spring, Play, Blade, Vaadin & Co 4
Avalon Get Request doppelt abfeuern ohne Post Redirect Get Pattern. Spring Boot Thymeleaf MVC Frameworks - Spring, Play, Blade, Vaadin & Co 12
thor_norsk Konfigurationsprobleme mit Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 9
R Spring Boot Integration-testing mit Keycloak Frameworks - Spring, Play, Blade, Vaadin & Co 1
R Spring Boot Integration-testing mit Keycloak Frameworks - Spring, Play, Blade, Vaadin & Co 13
L Spring Data und Rest Controller? Frameworks - Spring, Play, Blade, Vaadin & Co 4
thor_norsk Spring Boot Fehler Frameworks - Spring, Play, Blade, Vaadin & Co 1
L Spring Data und Rest Conroller? Frameworks - Spring, Play, Blade, Vaadin & Co 4
thor_norsk Spring Boot und Docker Frameworks - Spring, Play, Blade, Vaadin & Co 5
B Spring Amazon-SP-Api Frameworks - Spring, Play, Blade, Vaadin & Co 3
8u3631984 Aktualisiere Spring Controller Frameworks - Spring, Play, Blade, Vaadin & Co 4
L Spring Data: Modellierung mit einer Embeddable bean Frameworks - Spring, Play, Blade, Vaadin & Co 2
D Spring Boot Test ob Validation geprüft wurde Frameworks - Spring, Play, Blade, Vaadin & Co 8
K Spring Boot OneToMany Frameworks - Spring, Play, Blade, Vaadin & Co 6
8u3631984 Spring Boot Docker Image erstellen und mit docker-compose konfigurieren Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Wann Spring Batch nutzen? Frameworks - Spring, Play, Blade, Vaadin & Co 1
P Spring Hessian Remote Beispiel Frameworks - Spring, Play, Blade, Vaadin & Co 20
8u3631984 Spring 2.7.8 Info Enpoint nicht zuerreichen Frameworks - Spring, Play, Blade, Vaadin & Co 1
gradlew.bat spring-boot:run funktioniert nicht Frameworks - Spring, Play, Blade, Vaadin & Co 4
Zrebna Spring Boot/Thymeleaf: Bestätigungsemail senden. Frameworks - Spring, Play, Blade, Vaadin & Co 2
Zrebna Spring - Thymeleaf: Wieso wird gem. Fallunterscheidung entsprechende View nicht geladen? Frameworks - Spring, Play, Blade, Vaadin & Co 3
Dimax Spring UsernameNotFoundException(msg); auf der View msg ausdrücken Frameworks - Spring, Play, Blade, Vaadin & Co 1
Dimax Spring UsernameNotFoundException(Message) auf der View Message ausdrücken Frameworks - Spring, Play, Blade, Vaadin & Co 2
B Spring Boot und JPA Error creating bean Frameworks - Spring, Play, Blade, Vaadin & Co 24
R Spring Security: Wie kommt 'UserDetails' an Username und Passwort ran? Frameworks - Spring, Play, Blade, Vaadin & Co 6
R Spring Security: Wie den User dynamisch authentifizieren? Frameworks - Spring, Play, Blade, Vaadin & Co 8
R Spring Security: Authentication & Permissions Frameworks - Spring, Play, Blade, Vaadin & Co 4
R Spring Boot: Warum soll PasswordEncoder in einer neuen Methode definiert sein? Frameworks - Spring, Play, Blade, Vaadin & Co 1
8u3631984 Cross-Origin beim Abrufen von Spring Endpoint Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Spring Boot und Microservices Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Boot additional Datasource for a single entity Frameworks - Spring, Play, Blade, Vaadin & Co 0
T Spring Resourcen Ordner ermitteln Frameworks - Spring, Play, Blade, Vaadin & Co 5
B Spring JPA und Repository Frameworks - Spring, Play, Blade, Vaadin & Co 12
D Mapstruct Dependency Injection funktioniert nicht mit Spring Frameworks - Spring, Play, Blade, Vaadin & Co 15
Avalon Wie sieht bei Euch das Deployment einer Spring Boot Anwendung aus? Frameworks - Spring, Play, Blade, Vaadin & Co 4
M Threads in Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 7
W DI-Problem in Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
T Spring Boot: Was bewirkt parent in maven genau? Frameworks - Spring, Play, Blade, Vaadin & Co 4
T Spring Security: Run-as replacement Einsatzbereich? Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand Vaadin+Spring Boot erster Seitenload nach Neustart endlos Frameworks - Spring, Play, Blade, Vaadin & Co 0
doncarlito87 Wie erhalte ich ein JSON aus eine NativeQuery (Spring Boot)? Frameworks - Spring, Play, Blade, Vaadin & Co 8
Avalon @Query Select Abfrage liefert falsche Werte (Spring Boot, JPA, Hibernate) Frameworks - Spring, Play, Blade, Vaadin & Co 3
Avalon Erstellung Dockerimage mit spring-boot:build-image in Spring Boot mit Umgebungsvariablen Frameworks - Spring, Play, Blade, Vaadin & Co 0
N Spring Integration - Logging Frameworks - Spring, Play, Blade, Vaadin & Co 7
D Spring Boot Field Injection in MapStruct Frameworks - Spring, Play, Blade, Vaadin & Co 5
D Spring Anfänger benötigt Hilfe Frameworks - Spring, Play, Blade, Vaadin & Co 9
OnDemand Spring Boot seltsame Logeinträge: Manipulationsversuche? Frameworks - Spring, Play, Blade, Vaadin & Co 2
D Spring Date keine neue Tabelle fuer Attribut Frameworks - Spring, Play, Blade, Vaadin & Co 1
T Spring Security Config File anpassen Frameworks - Spring, Play, Blade, Vaadin & Co 1
8u3631984 Spring Cloud : Resttemplate mit Loadballancer Frameworks - Spring, Play, Blade, Vaadin & Co 11
Dimax Spring resource not found Frameworks - Spring, Play, Blade, Vaadin & Co 2
M Spring MongoDB unique index Frameworks - Spring, Play, Blade, Vaadin & Co 3
M Spring Entity testen Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Entity testen Frameworks - Spring, Play, Blade, Vaadin & Co 5
Dimax Spring App Probleme beim Ausführen auf dem Tomcat Server Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Spring WebFlux Cors konfigurieren Frameworks - Spring, Play, Blade, Vaadin & Co 1
Dimax Schöne View mit anchor scrolling in Spring Frameworks - Spring, Play, Blade, Vaadin & Co 2
Dimax Spring JPA Multiple Keys Frameworks - Spring, Play, Blade, Vaadin & Co 3
S Spring Security mit oauth2 in lokaler Konfiguration principal mocken Frameworks - Spring, Play, Blade, Vaadin & Co 0
D Spring Boot Mile Stone und Snapshot Versionen Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand Spring Boot Exception Body Frameworks - Spring, Play, Blade, Vaadin & Co 2
D Was ist das Framework "Spring"? Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Unit/Integrations Testing Frameworks - Spring, Play, Blade, Vaadin & Co 3
D Spring Unit Test: UnsatisfiedDependencyException: Error creating bean with name Frameworks - Spring, Play, Blade, Vaadin & Co 2
H Resource Liste Lazy Autowired Spring Context Frameworks - Spring, Play, Blade, Vaadin & Co 2
M Java Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 5
M Spring Security Login with Credentials Frameworks - Spring, Play, Blade, Vaadin & Co 0
N Spring Boot - Overkill für private Projekte? Frameworks - Spring, Play, Blade, Vaadin & Co 3
krgewb Spring und GWT - & wird zu & amp; Frameworks - Spring, Play, Blade, Vaadin & Co 2
K Migration eines internen Frameworks zu Spring:Boot Frameworks - Spring, Play, Blade, Vaadin & Co 0
OnDemand JPA/Spring Repository Like Suche leeres Ergebnis Frameworks - Spring, Play, Blade, Vaadin & Co 0
Z Hibernate & Postgres in Spring Boot (Syntaxprobleme) Frameworks - Spring, Play, Blade, Vaadin & Co 2
Z Spring Boot mit JPA;, Hibernate, Rest & Lombok Frameworks - Spring, Play, Blade, Vaadin & Co 8
M Spring Initializer - Webservices Frameworks - Spring, Play, Blade, Vaadin & Co 0
D Spring Hateoas Frameworks - Spring, Play, Blade, Vaadin & Co 1
ma095 Spring und Postgresql Errors Frameworks - Spring, Play, Blade, Vaadin & Co 4
OnDemand Spring+Vaadin App startet nicht Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand Spring Request externe API SSL Error Frameworks - Spring, Play, Blade, Vaadin & Co 7
OnDemand Spring Repo speichert, aber es kommt in der DB nicht an Frameworks - Spring, Play, Blade, Vaadin & Co 3
Dimax Im Spring ,Mysql-Funktion aufrufen Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand Spring Security/Boot/Vaadin Cookie Problem bei iFrame Frameworks - Spring, Play, Blade, Vaadin & Co 4
OnDemand Spring Boot: Feld ignorieren Frameworks - Spring, Play, Blade, Vaadin & Co 3
8u3631984 Spring + Thymleaf : Checkbox Object mappen Frameworks - Spring, Play, Blade, Vaadin & Co 0
N Buch zum Spring Framework bzw. Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 3
OnDemand Jasypt Spring Boot HIbernate wie komme ich an den Key? Frameworks - Spring, Play, Blade, Vaadin & Co 4
8u3631984 Spring Boot im Docker Container - Logback wird nicht verwendet Frameworks - Spring, Play, Blade, Vaadin & Co 13
sascha-sphw Spring - Authentication object was not found Frameworks - Spring, Play, Blade, Vaadin & Co 3

Ähnliche Java Themen

Neue Themen


Oben