spring 發布 Jax-Ws Service (二)
阿新 • • 發佈:2017-11-27
name 描述 services quest wss poi org 設置 註意
Service
import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; import javax.jws.soap.SOAPBinding.Style; @WebService(targetNamespace="http://tempuri.org/") @SOAPBinding(style=Style.DOCUMENT) public interfaceMyService { @WebMethod String sayHiTo(String name); @WebResult(name="sayHelloResult") String sayHello(@WebParam(name="name")String name); }
Service Impl
import javax.annotation.Resource; import javax.jws.WebService; import javax.servlet.http.HttpServletRequest;import javax.xml.ws.WebServiceContext; import javax.xml.ws.handler.MessageContext; import javax.xml.ws.handler.soap.SOAPMessageContext; @WebService(serviceName = "myService", targetNamespace = "http://tempuri.org/", endpointInterface = "cn.config.MyService") public class MyServiceImpl implementsMyService { @Override public String sayHiTo(String name) { return name; } @Resource private WebServiceContext wsc; @Override public String sayHello(String name) { MessageContext ctx = wsc.getMessageContext(); HttpServletRequest request = (HttpServletRequest) ctx.get(SOAPMessageContext.SERVLET_REQUEST); return request.getContentType(); } }
javaBean Configuration
@Configuration public class WebServiceConfig { @Bean public SimpleJaxWsServiceExporter simpleJaxWsServiceExporter() { SimpleJaxWsServiceExporter sjaxWsServiceExporter = new SimpleJaxWsServiceExporter(); sjaxWsServiceExporter.setBaseAddress("http://localhost:8081/services/"); return sjaxWsServiceExporter; } @Bean public MyServiceImpl myServiceImpl() { return new MyServiceImpl(); } }
服務器:tomcat 端口號:8081
wsdl:http://localhost:8081/services/helloservice?wsdl
說明及註意
(1)、通過http://localhost:8081/services/myService?wsdl 訪問webservice部署描述符
還有自動生成的xsd:http://localhost:8081/services/myService?xsd=1 。
(2)、@SOAPBinding(parameterStyle=ParameterStyle.WRAPPED)
必須添加,否則會報錯;另外,如果發布的方法只有一個參數可以使用@SOAPBinding(parameterStyle=ParameterStyle.BARE)。
(3)、@WebService(serviceName = "myService") 服務名稱與Spring配置的bean一致。
(4)、webservice的端口設置不要與服務器一樣,這一點非常重要否則服務器應用與webservice服務沖突會產生HTTP404錯誤。
spring 發布 Jax-Ws Service (二)