2010-12-27 4 views
1

Jbossでアプリケーションを正しく実行しています。春のWebサービスクライアントを書くために、私はwsimportを使ってクラスを生成しました。私はspring-wsクライアントを使用しているときにJbossでSpringクラスのローダが発生する

でのJBoss?libの私の構成で、次の書かれています今私は

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

をコピーしたが、私はfollwoingエラーを取得しています... jboss-jaxws.jar,spring.jarあります

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) 

が、私はこのエラーを解決するのに役立ちます。これらのエラーを私はこれらのジャーを保った後にしか得ていない。しかし、これらは私の新しいコードを実行するために必要です。それらを避ける方法を教えてください。

+0

実行しているjavaおよびjbossのバージョンは何ですか?そして、現在の1.5.9の代わりにSpring WS 1.5.0を使用している理由はありますか? – skaffman

+0

私はjava 1.4、jboss 4.2.3、spring 2.0.7を使用しています。理由はありません。ちょうど私の春と両立したい。春バージョンのため、私は今、春1.0.4を使用しています。これらの問題を回避する。 – vishnu

答えて

1
あなたは次のコンテンツとアプリケーションのWEB-INF /のjboss-web.xmlファイルを作成することができ

<?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> 

これにより、クラスローダーがJBossのlibを探すことができなくなります。欠点として、WAR/libフォルダにすべてのサードパーティのjarファイルを用意する必要があります。

これは、現在使用しているバージョンと同様のものを検索することができます。

+0

ありがとうございます。 war/libフォルダにコピーすると、この問題は表示されません。 jboss/libフォルダにspring-ws.1.5.0.jarをコピーすると、この問題が発生するだけです。どのように他のジャーがこの問題を抱えているのか知ることができますか? – vishnu

2

これは、そのJARの2つのバージョンがCLASSPATHにあることを示唆しています。おそらく、サーバー自体とアプリケーションの一部として展開されているJARの2つのバージョンがあり、それらは同じバージョンではありません。サーバークラスローダーは、アプリケーションクラスローダーが実行される前に、サーバーバージョンを最初に見つけます。あなたのアプリが必要とするより前のバージョンの場合は、問題が発生します。

他のデプロイされたアプリを妥協することなくサーバーのバージョンを削除できない可能性があるため、解決は難しいです。アプリケーションがJBOSSにアプリケーションクラスローダによってロードされたJARを優先させるように指示するフラグをJBOSS設定に含めるかどうかを確認し、それが役立つかどうかを確認します。

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

これを確認する必要がある設定ファイルは何ですか – vishnu

関連する問題