Spring DM: Problem mit Tomcat als OSGI-Service

Status
Nicht offen für weitere Antworten.

mari01

Neues Mitglied
Hallo,

ich habe eine fertige RCP-Anwendung und muss die Geschäftslogik auf einen remote Applikationserver auslagern. Das Ziel ist dabei, das eine so angepasste Anwendung installationsabhängig entweder als standalone RCP-Client oder als verteilte Server/Client RCP Anwendung deployed werden kann.

Dafür möchte ich Spring DM mit dem Spring HTTPInvoker für die Kommunikation zwischen RCP-Client und OSGI-Server einsetzen.

Beim Start vom Server OSGI Frameworks bekomme ich folgende Exceptions:

org.eclipse.osgi.framework.internal.core.AbstractBundle$BundleStatusException
at org.eclipse.osgi.framework.internal.core.AbstractBundle.beginStateChange(AbstractBundle.java:1073)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:278)
at org.eclipse.ui.internal.WorkbenchPlugin.start(WorkbenchPlugin.java:899)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:783)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:774)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:755)
at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:352)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:280)
at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:408)
at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:111)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:449)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:211)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:381)
at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:33)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:454)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:398)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:105)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:183)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:576)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:546)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:477)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:465)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:445)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:211)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:381)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:457)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:398)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:105)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:326)
at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:231)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:150)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:751)
at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:352)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:370)
at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1068)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:557)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:464)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:248)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:445)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:337)
log4j:WARN No appenders could be found for logger (org.springframework.osgi.web.tomcat.internal.Activator).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "Tomcat Catalina Start Thread" java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory
at org.apache.catalina.core.StandardService.<clinit>(StandardService.java:56)
at org.springframework.osgi.web.tomcat.internal.Activator.createServerFromXML(Activator.java:174)
at org.springframework.osgi.web.tomcat.internal.Activator.createCatalinaServer(Activator.java:170)
at org.springframework.osgi.web.tomcat.internal.Activator.access$300(Activator.java:58)
at org.springframework.osgi.web.tomcat.internal.Activator$1.run(Activator.java:95)
at java.lang.Thread.run(Thread.java:619)

Ich habe hier gleich zwei Probleme.

Erstrens, org.springframework.osgi.web.tomcat.internal.Activator findet die log4j- Config nicht.
Ich habe aber ein Fragment mit dem Host org.springframework.osgi.log4j.osgi und log4j.property (mit 4 Zeilen) im Root-Verzeichnis erstellt.
Manifest.mf:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Config
Bundle-SymbolicName: org.springframework.osgi.log4j.config
Bundle-Version: 1.2.15.qualifier
Bundle-Vendor:
Fragment-Host: org.springframework.osgi.log4j.osgi;bundle-version="1.2.15.SNAPSHOT"
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Warum funktioniert es nicht?

Zweitens, Tomcat als Web Container ist anscheinend nicht korrekt als OSGi Service installiert.
Ich habe ein Plugin org.apache.tomcat aus allen jars von Apache Tomcat 6.0.24
und ein Fragment server.config zum Host org.springframework.osgi.catalina.start.osgi erstellt.
Im Manifest.mf vom server.config habe ich Plugin org.apache.tomcat als Required Plugin eingetragen.

Ist es vielleicht die falsche Vorgehensweise?

Ich habe ein Spring-Target-Platform angelegt, das so aussieht:
/spring-target-platform
/spring-target-platform/server
/spring-target-platform/server/tomcat
/spring-target-platform/server/tomcat/catalina.osgi-5.5.23-SNAPSHOT.jar
/spring-target-platform/server/tomcat/catalina.start.osgi-1.0.0.jar
/spring-target-platform/server/tomcat/com.springsource.javax.el_1.0.0.jar
/spring-target-platform/server/tomcat/com.springsource.javax.servlet.jsp_2.1.0.jar
/spring-target-platform/server/tomcat/jasper.osgi-5.5.23-20081003.025534-28.jar
/spring-target-platform/server/org.springframework.web.servlet_3.0.0.RELEASE.jar
/spring-target-platform/server/spring-osgi-web-1.2.1.jar
/spring-target-platform/server/spring-osgi-web-extender-1.2.1.jar
/spring-target-platform/com.springsource.javax.servlet-2.4.0.jar
/spring-target-platform/com.springsource.org.aopalliance-1.0.0.jar
/spring-target-platform/com.springsource.slf4j.api-1.5.0.jar
/spring-target-platform/com.springsource.slf4j.log4j-1.5.0.jar
/spring-target-platform/com.springsource.slf4j.org.apache.commons.logging-1.5.0.jar
/spring-target-platform/log4j.osgi-1.2.15-SNAPSHOT.jar
/spring-target-platform/org.springframework.aop_3.0.0.RELEASE.jar
/spring-target-platform/org.springframework.asm_3.0.0.RELEASE.jar
/spring-target-platform/org.springframework.beans_3.0.0.RELEASE.jar
/spring-target-platform/org.springframework.context_3.0.0.RELEASE.jar
/spring-target-platform/org.springframework.context.support_3.0.0.RELEASE.jar
/spring-target-platform/org.springframework.core_3.0.0.RELEASE.jar
/spring-target-platform/org.springframework.expression_3.0.0.RELEASE.jar
/spring-target-platform/org.springframework.web_3.0.0.RELEASE.jar
/spring-target-platform/spring-osgi-core-1.2.1.jar
/spring-target-platform/spring-osgi-extender-1.2.1.jar
/spring-target-platform/spring-osgi-io-1.2.1.jar

Auf der Serverseite gibt 4 Bundles:

de.bean - Java-Beans impl. Serializable
de.service.intefaces -Interfaces
de.service.impl - Implementierungen
de.remoting.exporter.war - Exporter

Manifest vom Exporter:
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: org.aopalliance.aop;version="1.0.0",
org.osgi.framework;version="1.5.0",
org.springframework.aop;version="3.0.0.RELEASE",
org.springframework.aop.framework;version="3.0.0.RELEASE",
org.springframework.osgi.web.context.support;version="1.2.1",
org.springframework.remoting;version="3.0.0.RELEASE",
org.springframework.remoting.httpinvoker;version="3.0.0.RELEASE",
org.springframework.remoting.support;version="3.0.0.RELEASE",
org.springframework.web.servlet;version="3.0.0.RELEASE",
de.bean.authorisation,
de.interfaces
Export-Package: de.remoting.exporter.http

web.xml vom Exporter:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
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">

<display-name>RemoteServer</display-name>

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:**/*context.xml</param-name>
</context-param>

<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>remoting</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>META-INF/spring/*.xml</param-value>
</init-param>
<init-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.osgi.web.context.support.OsgiBundleXmlWebApplicationContext</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>remoting</servlet-name>
<url-pattern>/remoting/*</url-pattern>
</servlet-mapping>

</web-app>

im spring-context.xml:

<bean name="/UserService"
class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
<property name="service" ref="userService" />
<property name="serviceInterface" value="vas.interfaces.ITestAnmeldung" />
</bean>

im Spring-osgi-context.xml:

<osgi:reference id="userService" interface="vas.interfaces.ITestAnmeldung"
timeout="1000" />
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Problem beim Testen von einer Spring-Anwendung Application Tier 8
G Spring/Hibernate exception Application Tier 17
S Spring: Klassen in anderer "Anmelden" Application Tier 16
RaoulDuke Spring - Bugfixes in 2.5.x Application Tier 4
G Spring rollbackFor Application Tier 8
MQue Spring Security Form Application Tier 3
D Spring konfigurieren mit XML, Annotionen oder Java? Application Tier 2
MQue Spring in Zukunft Application Tier 5
I Passwort verschlüsseln in DB mit Spring Application Tier 5
MQue Spring https Application Tier 7
I Security bei Spring? Application Tier 31
MQue Spring beans Application Tier 10
I Wieviel Projekte bei Spring? Webprojekt Application Tier 2
G Transaktionen Spring Application Tier 58
Y Spring und Hibernate Application Tier 2
K Spring DI existierendes Objekt übergeben Application Tier 2
G Spring applicationContext Application Tier 3
MQue Spring Autowired Application Tier 7
MQue Spring Proxys Application Tier 2
MQue Spring BeanFactoryPostProcessor Application Tier 3
MQue Spring ApplicationContext Application Tier 20
S Spring util:list in eine andere importieren Application Tier 15
MQue Einsatz von Spring Application Tier 13
M Konfiguration WebApp/Spring Host-abhängig Application Tier 5
E Migration altes Framework (SOFIA) auf Spring Application Tier 3
D Automatische Typkonvertierung in Spring Application Tier 5
D Spring und Hbernate konfigurieren bzw. verschalten Application Tier 5
A Spring: JSP nimmt style.css nicht an Application Tier 3
G Spring Security Frage fuer Fortgeschrittene Application Tier 2
Y Spring + MyFaces - Exception bei Serverstart Application Tier 1
Y Maven MyFaces Hibernate Spring - Projekt Application Tier 1
byte [Spring] Referenced Bean not found Application Tier 2
M Spring - Leichtgewichtiger als JBoss? Application Tier 4
D Spring: setter injection von statischer Methode? Application Tier 1
reibi Spring Beans - Grundsatzfrage Application Tier 3
thE_29 Spring und XFire Frage Application Tier 3
H spring Application Tier 2
R Spring und Hibernate3 - CGLib Enhancement failed Application Tier 2
S Spring 2.0 Tutorial gesucht Application Tier 2
M JBoss Seam - Spring Application Tier 11
G [Spring+JSF]: VariableResolver und Scopes? Application Tier 1
G Problem mit Maven/aspectweaver.jar Application Tier 3
N Problem Dependency Injection im Kreis Hibernate Listener Application Tier 4
M Spring LazyLoading Problem in den Griff bekommen? Application Tier 7
N Controller problem Application Tier 6
F.S.WhiTeY Java Server Faces, Problem mit Servlet-Klasse Application Tier 3
S Anfänger Problem Application Tier 6
C Problem Verbindung Weblogic 10.3 zu MSSQL2005 Application Tier 14
K EJB Cast-Problem Application Tier 8
G EJB Injection Problem und weitere Frage Application Tier 5
B Glassfish vs. Tomcat/JBoss Application Tier 4
F Tomcat startet nicht (java.net.BindException) Application Tier 30
T Tomcat 6: JSP-Exception beinhaltet nicht den wahren Ursprungsort Application Tier 4

Ähnliche Java Themen

Neue Themen


Oben