2017-10-25 14 views
0

私はSOAPサービスを開発しています。私はtomcatで正常に実行します。しかし、weblogicにデプロイすると、エラーが発生しました。私は、ヘッダからWebサービスへのユーザー名とパスワードを送信していますが、エラーは以下のように発生します。javax.xml.soap.SOAPException:ヘッダーの子要素 ​​'username'は、名前空間が有効である必要があります

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:vw="http://vw.com/"> 
    <soapenv:Header> 
    <username>operator</username> 
    <pass>xxxxxx</pass>  
    </soapenv:Header> 
    <soapenv:Body> 
     <vw:createParams> 
     <!--Optional:--> 
     <arg0>app1</arg0> 
     <!--Optional:--> 
     <arg1>All</arg1> 
     </vw:createParams> 
    </soapenv:Body> 

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> 
    <S:Body> 
     <ns0:Fault xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope/"  
       xmlns:ns1="http://www.w3.org/2003/05/soap-envelope"> 
     <faultcode>ns0:Server</faultcode> 
     <faultstring>javax.xml.soap.SOAPException: Header child element 'username' must be namespace qualified!</faultstring> 
     </ns0:Fault> 
    </S:Body> 
</S:Envelope> 

任意のアイデアを?

答えて

0

SOAPでは、ヘッダー要素の名前空間が修飾されている必要があります。これをコーディングしている場合は、ユーザー名とパス要素にQNameを使用してください。

0

SOAP標準では、ヘッダー要素の名前空間を修飾する必要がありますが、Weblogic実装でのみチェックされているようです。 Tomcatは、名前空間のないヘッダーを受け入れるJDK実装を使用します。

weblogicで同じ設定を行うには、warファイルにsaaj-implを組み込み、weblogic.xmlにweblogic.xmlにその実装を使用する必要があります。 weblogic.xmlの

関連部分:

<wls:prefer-application-packages> 
    <wls:package-name>javax.xml.soap.*</wls:package-name> 
</wls:prefer-application-packages> 

あなたはMavenを使用している場合は、あなたのパッケージにSAAJ-のimplを持っているために、これを追加します。

<dependency> 
    <groupId>com.sun.xml.messaging.saaj</groupId> 
    <artifactId>saaj-impl</artifactId> 
    <version>1.4.0</version> 
</dependency> 
関連する問題