java6 自带的webservice发布和使用相当简单,下面我说明一下如何使用
1 创建service
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
@WebService(name = "CospPI", targetNamespace = "http://pi.compy.com/service")
@SOAPBinding(style = SOAPBinding.Style.RPC)
public interface CospPI {
@WebMethod
@WebResult(name = "authenRsp", partName = "authenRsp")
public CospPIAuthenRsp authen(
@WebParam(name = "serviceId", partName = "serviceId")
String serviceId,
@WebParam(name = "token", partName = "token")
String token);
}
2与容器一起发布web service,以tomcat为例(此过程小麻烦)
1)下载 jax-ws包 (https://jax-ws.dev.java.net/jax-ws-20-fcs/)解压: java -jar jax-ws.jar
2)拷贝所有的*.jar至$CATALINA_HOME/shared/lib或自己工程的lib下
3)创建sun-jaxws.xml在WEB-INF目录下
<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
<endpoint name="PMIService" implementation="com.company.pmi.PMI" url-pattern="/service" />
</endpoints>
4)修改web.xml
这样就可以方便的得到service了
<listener>
<listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener
</listener-class>
</listener>
<servlet>
<servlet-name>PMIService</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>PMIService</servlet-name>
<url-pattern>/service</url-pattern>
</servlet-mapping>
3.生成web service 客户端
wsimport -keep -d E:\workspaces\project\src http://192.168.220.60:8080/wbs/service?wsdl
如果是在spring中使用wbs service则context的注入方法是:
@Resource
private WebServiceContext context;
servletContextde得到的方法是:
ServletContext servletContext = (ServletContext) context.getMessageContext().get(MessageContext.SERVLET_CONTEXT);