java-forum.org - Java programmieren aus Leidenschaft
Java 6 Einstieg und professioneller Einsatz
Alter Preis: 34,90 EUR
Jetzt: 0,00 EUR

zzgl. Versandkosten

Zurück   java-forum.org - Java programmieren aus Leidenschaft > Enterprise Java > Application Tier

Application Tier EJB, Spring

Antwort     Ist dieses Thema erledigt?
Themen-Optionen Thema durchsuchen Ansicht
Alt 13.10.2010, 10:59   #1 (permalink)
Stammbenutzer
Viertel Gigabyte
 
Registriert seit: 29.05.2007
Fachbeiträge: 4.932
Abgegebene Danke: 192
Erhielt 229 Danke für 225 Beiträge
Standard Spring Remoting und OSGi

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.ä?
SirWayne ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 13.10.2010, 18:46   #2 (permalink)
Stammbenutzer
Megabyte
 
Registriert seit: 14.04.2006
Fachbeiträge: 1.570
Abgegebene Danke: 7
Erhielt 65 Danke für 65 Beiträge
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
Angehängte Dateien
Dateityp: zip spring-dm-sample-web.zip (63,7 KB, 6x aufgerufen)
raiL ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Danke sagt:
SirWayne (13.10.2010)
Alt 13.10.2010, 18:48   #3 (permalink)
Stammbenutzer
Viertel Gigabyte
Themenstarter
 
Registriert seit: 29.05.2007
Fachbeiträge: 4.932
Abgegebene Danke: 192
Erhielt 229 Danke für 225 Beiträge
Werd ich mir übers We mal anschauen. Danke =)
SirWayne ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 15.10.2010, 08:54   #4 (permalink)
Stammbenutzer
Viertel Gigabyte
Themenstarter
 
Registriert seit: 29.05.2007
Fachbeiträge: 4.932
Abgegebene Danke: 192
Erhielt 229 Danke für 225 Beiträge
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 ...
Spring DM: Problem mit Tomcat als OSGI-Service

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?

Geändert von SirWayne (15.10.2010 um 09:39 Uhr)
SirWayne ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 15.10.2010, 10:49   #5 (permalink)
Stammbenutzer
Viertel Gigabyte
Themenstarter
 
Registriert seit: 29.05.2007
Fachbeiträge: 4.932
Abgegebene Danke: 192
Erhielt 229 Danke für 225 Beiträge
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 Code: Quelltext in neuem Fenster öffnen
1
osgi>
nicht mehr aber mein jetty ist unter http://localhost:8080/test nicht zu erreichen.

Mein Manifest sieht wie in dem Tutorial aus
XML Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
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

Muss ich den Server manuell starten (start.jar) und die Anwendung deployen?

Geändert von SirWayne (15.10.2010 um 10:54 Uhr)
SirWayne ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 15.10.2010, 18:35   #6 (permalink)
Stammbenutzer
Megabyte
 
Registriert seit: 14.04.2006
Fachbeiträge: 1.570
Abgegebene Danke: 7
Erhielt 65 Danke für 65 Beiträge
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
raiL ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Danke sagt:
SirWayne (16.10.2010)
Alt 16.10.2010, 16:42   #7 (permalink)
Stammbenutzer
Viertel Gigabyte
Themenstarter
 
Registriert seit: 29.05.2007
Fachbeiträge: 4.932
Abgegebene Danke: 192
Erhielt 229 Danke für 225 Beiträge
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
SirWayne ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 16.10.2010, 17:31   #8 (permalink)
Stammbenutzer
Megabyte
 
Registriert seit: 14.04.2006
Fachbeiträge: 1.570
Abgegebene Danke: 7
Erhielt 65 Danke für 65 Beiträge
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
raiL ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 16.10.2010, 19:35   #9 (permalink)
Stammbenutzer
Viertel Gigabyte
Themenstarter
 
Registriert seit: 29.05.2007
Fachbeiträge: 4.932
Abgegebene Danke: 192
Erhielt 229 Danke für 225 Beiträge
hehe danke auch net schlecht
SirWayne ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 17.10.2010, 17:10   #10 (permalink)
Stammbenutzer
Megabyte
 
Registriert seit: 14.04.2006
Fachbeiträge: 1.570
Abgegebene Danke: 7
Erhielt 65 Danke für 65 Beiträge
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.

Geändert von raiL (17.10.2010 um 17:13 Uhr)
raiL ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Danke sagt:
SirWayne (17.10.2010)
Alt 17.10.2010, 18:19   #11 (permalink)
Stammbenutzer
Viertel Gigabyte
Themenstarter
 
Registriert seit: 29.05.2007
Fachbeiträge: 4.932
Abgegebene Danke: 192
Erhielt 229 Danke für 225 Beiträge
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.
SirWayne ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 18.10.2010, 09:12   #12 (permalink)
Stammbenutzer
Viertel Gigabyte
Themenstarter
 
Registriert seit: 29.05.2007
Fachbeiträge: 4.932
Abgegebene Danke: 192
Erhielt 229 Danke für 225 Beiträge
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 Code: Quelltext in neuem Fenster öffnen
1
<Host name="localhost" unpackWARs="false" autoDeploy="false"

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

Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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?
SirWayne ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 18.10.2010, 12:20   #13 (permalink)
Stammbenutzer
Viertel Gigabyte
Themenstarter
 
Registriert seit: 29.05.2007
Fachbeiträge: 4.932
Abgegebene Danke: 192
Erhielt 229 Danke für 225 Beiträge
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 Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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

wenn ich nun auf http://localhost:8080/hello gehe
dann bekomme ich folgende exception
Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
HTTP ERROR: 404
 
NOT_FOUND
 
RequestURI=/hello
 
Powered by jetty://

Geändert von SirWayne (18.10.2010 um 12:55 Uhr)
SirWayne ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 18.10.2010, 18:46   #14 (permalink)
Stammbenutzer
Megabyte
 
Registriert seit: 14.04.2006
Fachbeiträge: 1.570
Abgegebene Danke: 7
Erhielt 65 Danke für 65 Beiträge
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.

Zitat:
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.

Zitat:
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.

Geändert von raiL (18.10.2010 um 18:50 Uhr)
raiL ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Danke sagt:
SirWayne (19.10.2010)
Alt 19.10.2010, 07:57   #15 (permalink)
Stammbenutzer
Viertel Gigabyte
Themenstarter
 
Registriert seit: 29.05.2007
Fachbeiträge: 4.932
Abgegebene Danke: 192
Erhielt 229 Danke für 225 Beiträge
Zitat: raiL
Beitrag anzeigen

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

Zitat: raiL
Beitrag anzeigen
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.

Zitat: raiL
Beitrag anzeigen
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.
Zitat: raiL
Beitrag anzeigen
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
SirWayne ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 19.10.2010, 12:35   #16 (permalink)
Stammbenutzer
Viertel Gigabyte
Themenstarter
 
Registriert seit: 29.05.2007
Fachbeiträge: 4.932
Abgegebene Danke: 192
Erhielt 229 Danke für 225 Beiträge
Sagt jemand was die Fehlermeldung

Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
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 Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
<?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:osgi="http://www.springframework.org/schema/osgi"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        [url=http://www.springframework.org/schema/context]Index of /schema/context[/url] http://www.springframework.org/schema/context/spring-context.xsd
        [url=http://www.springframework.org/schema/osgi]Index of /schema/osgi[/url] 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>

remoting-servlet.xml
XML Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
<?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>

web.xml
XML Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?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>

Und auf der clienSeite
XML Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
  <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>

Geändert von SirWayne (19.10.2010 um 13:35 Uhr)
SirWayne ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 19.10.2010, 18:03   #17 (permalink)
Stammbenutzer
Megabyte
 
Registriert seit: 14.04.2006
Fachbeiträge: 1.570
Abgegebene Danke: 7
Erhielt 65 Danke für 65 Beiträge
Java Code: Quelltext in neuem Fenster öffnen
1
Import-Package: org.springframework.aop;version="[3.0.0,4.0.0)"
raiL ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Danke sagt:
SirWayne (20.10.2010)
Alt 20.10.2010, 09:09   #18 (permalink)
Stammbenutzer
Viertel Gigabyte
Themenstarter
 
Registriert seit: 29.05.2007
Fachbeiträge: 4.932
Abgegebene Danke: 192
Erhielt 229 Danke für 225 Beiträge
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 Code: Quelltext in neuem Fenster öffnen
1
2
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

Geändert von SirWayne (20.10.2010 um 16:39 Uhr)
SirWayne ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 20.10.2010, 18:13   #19 (permalink)
Stammbenutzer
Megabyte
 
Registriert seit: 14.04.2006
Fachbeiträge: 1.570
Abgegebene Danke: 7
Erhielt 65 Danke für 65 Beiträge
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, ...
raiL ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 21.10.2010, 08:34   #20 (permalink)
Stammbenutzer
Viertel Gigabyte
Themenstarter
 
Registriert seit: 29.05.2007
Fachbeiträge: 4.932
Abgegebene Danke: 192
Erhielt 229 Danke für 225 Beiträge
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.
SirWayne ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Antwort     Ist dieses Thema erledigt?

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
OSGi, Spring, RCP MQue Plauderecke 16 25.08.2010 20:38
Spring mit OSGi, aber welcher JPA Provider? t.stein Application Tier 8 21.07.2010 13:13
OSGi und Spring Generic1 Allgemeine Java-Themen 19 09.03.2010 12:09
tuscany vs spring remoting ARadauer Allgemeine Java-Themen 1 16.04.2009 13:55
midle tier spring rmi remoting - security ARadauer Allgemeines EE 2 07.09.2008 22:01


Lesezeichen

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 Uhr.


Powered by vBulletin® Version 3.8.6 (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de