2010-12-27 5 views
1

Ich habe meine Anwendung ordnungsgemäß in Jboss ausgeführt. Um Spring Webservice Client zu schreiben, habe ich Klassen mit wsimport generiert. Ich habe folgende Konfiguration Spring Class Loader Probleme in Jboss bei der Verwendung von Spring-Ws-Client

in Jboss? Lib i

geschrieben jboss-jaxws.jar,spring.jar haben ... Jetzt kopiert i

spring-ws-1.5.0.jar and saaj-impl-1.3.jar 

aber ich bin follwoing Fehler bekommen:

The Spring ContextLoaderListener we wrap threw on contextInitialized. 
But for our having caught this error, the web application context would not have initialized. 
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.lang.IllegalArgumentException: Class [org.apache.xbean.spring.context.v2.XBeanNamespaceHandler] does not implement the NamespaceHandler interface 
Caused by: 
java.lang.IllegalArgumentException: Class [org.apache.xbean.spring.context.v2.XBeanNamespaceHandler] does not implement the NamespaceHandler interface 
    at org.springframework.beans.factory.xml.DefaultNamespaceHandlerResolver.initHandlerMappings(DefaultNamespaceHandlerResolver.java:119) 

Bitte helfen Sie mir diesen Fehler zu beheben. Diese Fehler bekomme ich erst, nachdem ich diese Gläser behalten habe. Aber diese mussten meinen neuen Code ausführen. Bitte schlagen Sie mir vor, wie Sie sie vermeiden können?

+0

Welche Versionen von Java und Jboss laufen Sie? Und gibt es einen Grund, warum Sie Spring WS 1.5.0 anstelle des aktuellen 1.5.9 verwenden? – skaffman

+0

Ich benutze Java 1.4, jboss 4.2.3, Frühjahr 2.0.7. Keine Gründe. Ich möchte nur mit meinem Frühling kompatibel sein. Wegen der Frühlingsversion benutze ich jetzt Spring ws 1.0.4. um diese Probleme zu vermeiden. – vishnu

Antwort

1

Sie könnten WEB-INF/jboss-web.xml-Datei für Ihre Anwendung mit dem nächsten Inhalt

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE jboss-web PUBLIC 
    "-//JBoss//DTD Web Application 4.2//EN" 
    "http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd"> 
<jboss-web> 
    <class-loading java2ClassLoadingCompliance="false"> 
     <loader-repository> 
        myapp:loader=anyUniqueName 
      <loader-repository-config>java2ParentDelegation=false</loader-repository-config> 
     </loader-repository> 
    </class-loading> 
</jboss-web> 
erstellen

Dies sollte verhindern, dass der Klassenlader nach JBoss-Bibliotheken sucht. Als Nachteil müssen Sie alle Ihre 3rd-Party-Jars in einem WAR/lib-Ordner bereitstellen.

Dies funktioniert für 4.2 Sie könnten etwas ähnliches für Version suchen Sie derzeit verwenden.

+0

Danke.Ja. Durch Kopieren in den WAR/lib-Ordner wird dieses Problem nicht angezeigt. Wenn ich spring-ws.1.5.0.jar in den Ordner jboss/lib kopiere, dann tritt nur dieses Problem auf. Wie kann ich wissen, welche anderen Gläser dieses Problem beinhalten? – vishnu

2

Dies deutet darauf hin, dass es zwei Versionen dieser JAR in Ihrem CLASSPATH gibt - vielleicht eine auf dem Server selbst und eine andere, die als Teil Ihrer App bereitgestellt wird - und sie sind nicht die gleiche Version. Der Server-Klassenlader findet zuerst die Serverversion, bevor der Anwendungsklassenlader ausgeführt wird. Wenn es eine frühere Version als von Ihrer App erforderlich ist, haben Sie ein Problem.

Die Lösung ist schwierig, da Sie möglicherweise die Serverversion nicht entfernen können, ohne andere bereitgestellte Anwendungen zu kompromittieren. Sehen Sie, ob in Ihrer JBOSS-Konfiguration ein Flag für Ihre Anwendung vorhanden ist, um JBOSS mitzuteilen, dass es JARs bevorzugt, die vom Anwendungs-Klassenlader geladen werden, und sehen Sie, ob das hilft.

http://www.datadisk.co.uk/html_docs/java_app/jboss5/jboss5_deployment.htm http://community.jboss.org/wiki/ClassLoadingConfiguration http://community.jboss.org/wiki/JBossClassLoadingUseCases

+0

Was sind die Konfigurationsdateien, die ich überprüfen muss, um dies zu sehen – vishnu

Verwandte Themen