Nicht kompatibel neethi.jar mit 7 WAR
Ich bin die Bereitstellung einer Anwendung, Apache-CXF-2.7.5 mit neethi-3.0.2 in
websphere 7. Ich bin immer folgende Fehlermeldung. Meine Anwendung ist Feder angetrieben.
Wenn ich degradiert Apache CXF apache CXF-2.3.5. Anwendung erfolgreich
bereitgestellt.
Das gleiche funktioniert perfekt in Tomcat7.
Ich bin in der Lage, um dieses Problem zu reproduzieren, die auf Tomcat durch hinzufügen (oder overriding) eine Abhängigkeit von neethi.jar (mit einer älteren version --> 2.5.x) in pom.xml Datei.
Hinweis: Apache CXF 2.7.5 kommt mit der neuesten version von neethi.jar (3.0.2), und somit nicht die Ursache-Problem auf Tomcat7.
Ist der Web-Bereich der Kommissionierung bis eine ältere version von neethi.jar
Stack-Trace unter :
[7/9/13 19:46:38:577 GMT+05:30] 00000012 FfdcProvider I com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: FFDC Incident emitted on /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/ffdc/server1_2a7e2a7e_13.07.09_19.46.38.57558021.txt com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest() 309
[7/9/13 19:46:38:582 GMT+05:30] 00000012 webapp E com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Servlet Error]-[CXFServlet]: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cxf' defined in class path resource [META-INF/cxf/cxf.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.apache.cxf.bus.spring.SpringBus]: Constructor threw exception; nested exception is org.apache.cxf.bus.extension.ExtensionException: Could not load extension class org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl.
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:997)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:943)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:609)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:469)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:383)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
at com.ibm.ws.webcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:1588)
at com.ibm.ws.webcontainer.webapp.WebApp.commonInitializationFinish(WebApp.java:350)
at com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:292)
at com.ibm.ws.webcontainer.webapp.WebGroupImpl.addWebApplication(WebGroupImpl.java:99)
at com.ibm.ws.webcontainer.VirtualHostImpl.addWebApplication(VirtualHostImpl.java:167)
at com.ibm.ws.webcontainer.WSWebContainer.addWebApp(WSWebContainer.java:722)
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.apache.cxf.bus.spring.SpringBus]: Constructor threw exception; nested exception is org.apache.cxf.bus.extension.ExtensionException: Could not load extension class org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl.
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:162)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:76)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:990)
... 35 more
Caused by: org.apache.cxf.bus.extension.ExtensionException: Could not load extension class org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl.
at org.apache.cxf.bus.extension.Extension.tryClass(Extension.java:173)
at org.apache.cxf.bus.extension.Extension.getClassObject(Extension.java:185)
at org.apache.cxf.bus.extension.ExtensionManagerImpl.activateAllByType(ExtensionManagerImpl.java:138)
at org.apache.cxf.bus.extension.ExtensionManagerBus.<init>(ExtensionManagerBus.java:126)
at org.apache.cxf.bus.extension.ExtensionManagerBus.<init>(ExtensionManagerBus.java:138)
at org.apache.cxf.bus.spring.SpringBus.<init>(SpringBus.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:45)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:39)
at java.lang.reflect.Constructor.newInstance(Constructor.java:515)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147)
... 37 more
Caused by: java.lang.IncompatibleClassChangeError: org.apache.neethi.AssertionBuilderFactory
at java.lang.ClassLoader.defineClassImpl(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:265)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at com.ibm.ws.classloader.CompoundClassLoader._defineClass(CompoundClassLoader.java:726)
at com.ibm.ws.classloader.CompoundClassLoader.localFindClass(CompoundClassLoader.java:645)
at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:468)
at java.lang.ClassLoader.loadClass(ClassLoader.java:609)
Bitte helfen
InformationsquelleAutor Bhuvan | 2013-07-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hatte ich 'parent_last' - Klasse, die beim web-Modul-Ebene und löschen Sie folgende jar-Dateien aus dem KRIEG:-
Dies ist aufgrund der AssertionBuilderFactory wurde eine Implementierung in version 2.0.5 neethi.jar aber ist eine Schnittstelle, in 3.0.2, die wir verwenden aufgrund CXF 2.7.5.
Da diese jar-Dateien werden automatisch bei der Erstellung durch CXF Abhängigkeiten, ich denke, wir werden manuell zu löschen, diese Gläser aus dem KRIEG vor der Bereitstellung WAR. Auch mit jeder Bereitstellung, das müssen wir ändern-Class-Loader-Einstellung für unseren KRIEG.
Ändern der Class-Loader, um, verwenden Sie folgenden Pfad:-
Enterprise-Anwendungen > MyApplicationWAR > Verwalten-Module > MyApplicationWAR
EDIT:
Können Sie das gleiche von Ihrem POM-Datei mit
<exclusions>
tag<exclusions>
tag in Ihrem maven-dependency-definition. Das wäre doch viel einfacher als entfernen Sie Sie manuell aus war-Datei.Ja, du hast Recht. Ich Tat auch so. Aktualisierung der Antwort
haben Sie versuchen, konfigurieren der JVM-der app-server selbst zu verwenden, Eltern-letzten Klasse-laden?
Nein, die oben genannten mein Problem gelöst. Ich bin nicht mehr die an diesem Projekt arbeiten.
InformationsquelleAutor Bhuvan
Ja, es ist möglich, dass WAR mit einer älteren version von neethi.
Sollten Sie die lib-Ordner des websphere, um zu sehen, ob es die alte version von neethi Glas dort. Möglicherweise müssen Sie auch konfigurieren Sie Ihren container zum aktivieren von self-Erster Weg zum laden von Klassen, wenn es neethi-version-Konflikt.
Weitere option ist die Bereitstellung der erforderlichen neethi.jar in endorsed-Verzeichnis und starten dann die VM mit entsprechenden Parametern.
InformationsquelleAutor Mubin
Ich würde dir empfehlen, zu versuchen, die Einstellung der class-loader Eigenschaften WAR.
Legen Sie application class loader first statt parent-class-loader. Mit diesem, WURDE die Abholung der jar, Sie haben verpackt, die innerhalb der Anwendung. HTH
InformationsquelleAutor paary
Welche Auswirkungen hat das entfernen der folgenden drei Krüge haben auf die Lösung des Problems? Ich habe ein ähnliches problem aber mit einem junit-test eher als laufen WAR. Ich habe neethi-3.0.1.jar und cxf-rt-core-2.7.4.jar in meiner pom. Aber ich bekomme immer noch java.lang.IncompatibleClassChangeError: org.apache.neethi.AssertionBuilderFactory
bei bei org.apache.cxf.bus.- Erweiterung.Erweiterung
also ich nehme an, ich bin irgendwie immer noch ältere version von neethi auf dem classpath.
Wie kann ich es beheben?
geronimo-servlet_3.0_spec-1.0.jar
geronimo-javamail_1.4_spec-1.7.1.jar
stax-api-1.0.1.jar
Ich habe eine neue Frage.
InformationsquelleAutor jimmy
Setzen Sie die neueste version neethi.jar in den endorsed-Verzeichnis innerhalb Sie Websphere Java für eine schnelle Lösung suchen, starten Sie Ihre JVM ' s und probieren Sie es aus.
InformationsquelleAutor Sandeep Raman