1. 程式人生 > >spring 發布 Jax-Ws Service (二)

spring 發布 Jax-Ws Service (二)

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 interface
MyService { @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 implements
MyService { @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 (二)