2017-06-06 10 views
0

Webサービスの作成時に空のターゲット名前空間を設定しようとしています。ここに例があります。私のサービスは以下のようになります。私は、Webサービスを設定したいWebサービスで空のtargetNamespaceを設定する方法はありますか?

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:exam="http://example.com/"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <exam:sampleMethod/> 
    </soapenv:Body> 
</soapenv:Envelope> 

:そのような定義

package com.example; 

import javax.jws.WebMethod; 
import javax.jws.WebService; 

@WebService 
public class SampleService 
{ 
    @WebMethod 
    public void sampleMethod() 
    { 

    } 
} 

、それがこの(試験名前空間宣言を注意してください)のように見えるの要求を受け入れ私は空のSTRIへのtargetNamespaceを設定しようとした

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <sampleMethod/> 
    </soapenv:Body> 
</soapenv:Envelope> 

:(名前空間を持たない)、このように見える要求受諾しますいいえ、それは動作しませんでした - それはちょうど試験名前空間にデフォルトになりました。

@WebService(targetNamespace="")

私は、サービスを公開するようにApache CXF(3.1.0)を使用しています:

<bean id="sampleService" class="com.example.SampleService" /> 
<jaxws:endpoint id="sampleServiceWs" implementor="#sampleService" 
    address="/SampleService" publish="true"> 
</jaxws:endpoint> 

答えて

0

私の質問に答えるために - 私は、空のtargetNamespaceを設定する方法を見つけることができませんでした、私は自分のサービスで要求の検証を省略して、ネームスペースの要求も受け付けるようにしました。これを行うには、サービスクラスの上に@EndpointPropertyアノテーションを使用しました。

package com.example; 

import javax.jws.WebMethod; 
import javax.jws.WebService; 
import org.apache.cxf.annotations.EndpointProperty; 

@WebService 
@EndpointProperty(key = "soap.no.validate.parts", value = "true") 
public class SampleService 
{ 
    @WebMethod 
    public void sampleMethod() 
    { 

    } 
} 
関連する問題