2013-12-09 18 views
2

我有一個WebService類,我希望多次使用實現一個接口的不同外觀/服務。我嘗試從一個類創建兩個bean,並將它們映射到兩個不同的地址作爲兩個Web服務,但是在這兩個地址都有針對WebService第二個實例的所有請求。只需通過更改WSDL的URL,由一個客戶端實現所有這些Web服務就很重要。這意味着所有的屬性應該是相同的(targetNamespace,name,portName,serviceName),否則在客戶端引發異常。有沒有辦法重用WebService? Java中的Spring

類看起來是這樣的:

@WebService 
public class ServiceX { 
    private IFacade facade; 

    public ServiceX(IFacade facade) { 
     this.facade = facade; 
    } 
    @WebMethod 
    public Result getResult(){ 
     return facade.getResult(); 
    } 
} 

然後我使用Spring與這樣的XML配置:

<wss:binding url="/serviceonews"> 
    <wss:service> 
     <ref bean="serviceone" /> 
    </wss:service> 
</wss:binding> 

<ws:service id="serviceone"> 
    <ws:bean> 
     <bean class="ServiceX"> 
      <constructor-arg ref="firstFacade" /> 
     </bean> 
    </ws:bean> 
</ws:service> 

<wss:binding url="/servicetwows"> 
    <wss:service> 
     <ref bean="servicetwo" /> 
    </wss:service> 
</wss:binding> 

<ws:service id="servicetwo"> 
    <ws:bean> 
     <bean class="ServiceX"> 
      <constructor-arg ref="secondFacade" /> 
     </bean> 
    </ws:bean> 
</ws:service> 

<bean id="firstFacade" class="FirstFacade" /> 
<bean id="secondFacade" class="SecondFacade" /> 

這裏的web.xml文件:

<servlet> 
    <servlet-name>WSSpringServlet</servlet-name> 
    <servlet-class>com.sun.xml.ws.transport.http.servlet.WSSpringServlet</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>WSSpringServlet</servlet-name> 
    <url-pattern>/serviceonews</url-pattern> 
    <url-pattern>/servicetwows</url-pattern> 
</servlet-mapping> 

回答

1

我找到了最後解決。每次我嘗試從一個類創建2個bean時,最新的bean將替換已經存在的bean。 具有兩個相同WSDL的解決方案不是從一個類創建兩個bean,而是在註釋中的屬性設置中。我的情況我需要兩個Web服務從具有不同構造函數的基礎邏輯繼承,這是使用具體的外觀/服務填充基礎邏輯。

@WebService(targetNamespace="http://package/", name="ServiceX", portName="ServiceXPort", serviceName="ServiceName") 
public class ServiceX extends ServiceXBase { 

    public ServiceX(IFacade facade) { 
     super(facade); 
    } 

    @WebMethod 
    public Result getResult(){ 
     return super.getResult(); 
    } 
} 
相關問題