2011-10-22 10 views
2

私はJBoss 4.2(JDK 1.6、spring 3.0、spring-ws 2.0)にspring-ws SOAP Webサービスをデプロイしようとしています。 O/XバインディングとしてJAXB2を使用しています。セットアップがうまくいき、豆が見つかって配線され、要求が送信され、応答が生成されます。しかし、私は空の応答を得ています。どちらもSOAPエンベロープに入っておらず、サーバー上でアセンブルされているコンテンツも私の単純なUserDetailsを含んでいません。空のSOAP応答 - JBoss 4.2、Jaxb2、Java 1.6を使用

正しい応答は次のようになります。

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
    <SOAP-ENV:Header/> 
    <SOAP-ENV:Body> 
     <ns2:UserDetails xmlns:ns2="http://a.dol.com/schemas"> 
      <ns2:name>John</ns2:name> 
      <ns2:lastname>PerX</ns2:lastname> 
     </ns2:UserDetails> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

しかし、私はちょうどのようなものを得る:グーグルを検索した後

<Envelope> 
    <Header/> 
    <Body> 
     <ns2:UserDetails xmlns:ns2="http://a.dol.com/schemas"/> 
    </Body> 
</Envelope> 

を、私は次のコードが追加されることが判明:

<beans> 
    <!-- Big magic hack to fix the broken SAAJ in JBoss 
    See http://static.springsource.org/spring-ws/sites/1.5/faq.html#saaj-jboss --> 
    <bean id="messageFactory"> 
    <property name="messageFactory"> 
     <!-- This is the Java 6 variant of this fix! Note the "internal" package missing in the spring-ws FAQ. --> 
     <bean class="com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl"/> 
    <property> 
    <bean/> 
</beans> 

しかし、これも役に立たない、私はfolloiwngエラーを取得:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageFactory' defined in ServletContext resource... 

Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError... 
    Caused by: java.lang.IllegalArgumentException: com.sun.xml.messaging.saaj.soap.LocalStrings != com.sun.xml.internal.messaging.saaj.soap.LocalStrings 

ヒントありがとうございます。以下でJBossの場合はrun.batを更新

更新

は、問題を解決しますが、これはそれを行うための正しい方法です?以下でJBossの場合はrun.batを更新

set JAVA_OPTS=%JAVA_OPTS% -Djavax.xml.soap.SOAPConnectionFactory=com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnectionFactory 
set JAVA_OPTS=%JAVA_OPTS% -Djavax.xml.soap.MessageFactory=com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl 
set JAVA_OPTS=%JAVA_OPTS% -Djavax.xml.soap.SOAPFactory=com.sun.xml.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl 
+0

hellloo .. anyone ??? – adi

+0

以下を追加するとこれが解決されますが、これは正しいアプローチですか? (編集された質問を参照してください) – adi

答えて

1

は、問題を解決します:

set JAVA_OPTS=%JAVA_OPTS% -Djavax.xml.soap.SOAPConnectionFactory=com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnectionFactory 
set JAVA_OPTS=%JAVA_OPTS% -Djavax.xml.soap.MessageFactory=com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl 
set JAVA_OPTS=%JAVA_OPTS% -Djavax.xml.soap.SOAPFactory=com.sun.xml.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl 
2

あなたは完全修飾クラス名を残している

<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory"> 
    <property name="messageFactory"> 
     <bean class="com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl"/> 
    </property> 
</bean> 

と春のスニペットを交換してくださいmessageFactory Beanの定義 これは起動オプションなしで動作するはずです。

+0

多くのタクシー、うまくいって魅力:D –

関連する問題