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>