最近一直在做webservice相关的任务,针对自己用到的几种方式在这里做简单的描述。本人使用过得webservice的发布方式有两种:1.jax-ws 2.axis 1.4版本
先来说说jax-ws这种发布方式,首先配置文件的准备:
1)web.xml文件添加如下监听:
<listener>
<listener-class>
com.sun.xml.ws.transport.http.servlet.WSServletContextListener
</listener-class>
</listener>
继续在此文件中添加servlet(过滤路径)
<pre name="code" class="html"><servlet>
<servlet-name>TestService</servlet-name>
<servlet-class>
com.sun.xml.ws.transport.http.servlet.WSServlet
</servlet-class>
<load-on-startup>5</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>TestService</servlet-name>
<url-pattern>/service/*</url-pattern>
</servlet-mapping>
<servlet><a target=_blank href="http://www.cnblogs.com/adolfmc/p/4383091.html">点击打开链接</a>
2)与web.xml文件同级,添加sun-jaxws.xml配置文件,这里贴出文件的主干内容(endpoint标签里面的参数的内容一看便知):<pre name="code" class="html"><?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime' version='2.0'>
<!-- 配置服务地址接口映射 -->
<endpoint
name='TestWS'
implementation='com.xx.ws.TestWS'
binding="http://java.sun.com/xml/ns/jaxws/2003/05/soap/bindings/HTTP/"
url-pattern='/service/TestWS'/>
</endpoints>
经过以上两个步骤,配置文件的准备工作就做完了,下面编写代码(这里使用注解的方式)
网上给出的方式有的是通过接口的实现方式,个人感觉没必要,如果大家想看的话,可以参考:<a target=_blank href="http://www.cnblogs.com/adolfmc/p/4383091.html">点击打开链接</a>.
<pre name="code" class="java">@WebService(name="<span style="font-family: Arial, Helvetica, sans-serif;">TestWS</span>")
public class <span style="font-family: Arial, Helvetica, sans-serif;">TestWS</span><span style="font-family: Arial, Helvetica, sans-serif;">{</span>
@WebMethod
public String queryOnuLight(@WebParam(name="oltIp")String oltIp,
@WebParam(name="oltPonId")String oltPonId,
@WebParam(name="onuPassword")String onuPassword){
logger.info("调用端口的光功率接口开始...");
<span style="white-space:pre"> </span>........
logger.info("调用端口的光功率接口结束...");
return rtxml;
}
实现类写成这样即可,注意:如果在此类中想通过spring的依赖注入的方式来对属性注入的话,可能并不能如你所愿,@webservice注解的扫描貌似是早于spring注解的扫描
在浏览器输入:localhost:8080/service/<span style="font-family: Arial, Helvetica, sans-serif;">TestWS?wsdl 看到对应的内容及发布成功,检测在linux是否发布成功: curl 服务地址 </span>
<span style="font-family:Arial, Helvetica, sans-serif;">
</span>
<span style="font-family:Arial, Helvetica, sans-serif;">下面来说说axis的发布方式,想比较与上面的那种方式,这个更为简单:</span>
<span style="font-family:Arial, Helvetica, sans-serif;">配置文件配置:</span>
<span style="font-family:Arial, Helvetica, sans-serif;">web.xml中添加</span><pre name="code" class="html"><servlet-name>AxisServlet</servlet-name>
<servlet-class>
org.apache.axis.transport.http.AxisServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
与web.xml同级的目录添加:server-config.wsdd文件,文件主题内容如下:<pre name="code" class="html"><?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<globalConfiguration>
<parameter name="adminPassword" value="admin"/>
<parameter name="attachments.Directory" value="./attachments"/>
<parameter name="attachments.implementation"
value="org.apache.axis.attachments.AttachmentsImpl"/>
<parameter name="sendXsiTypes" value="true"/>
<parameter name="sendMultiRefs" value="true"/>
<parameter name="sendXMLDeclaration" value="true"/>
<parameter name="axis.sendMinimizedElements" value="true"/>
<requestFlow>
<handler type="java:org.apache.axis.handlers.JWSHandler">
<parameter name="scope" value="session"/>
</handler>
<handler type="java:org.apache.axis.handlers.JWSHandler">
<parameter name="scope" value="request"/>
<parameter name="extension" value=".jwr"/>
</handler>
</requestFlow>
</globalConfiguration>
<handler name="LocalResponder"
type="java:org.apache.axis.transport.local.LocalResponder"/>
<handler name="URLMapper"
type="java:org.apache.axis.handlers.http.URLMapper"/>
<handler name="Authenticate"
type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
<!--在这里配置对应的服务 -->
<service name="ponp2pInter" provider="java:RPC">
<parameter name="className" value="com.zhongying.pon.ws.ponp2p.InterfaceBusiBean"/>
<parameter name="allowedMethods" value="*"/>
</service>
<service name="onupowerInter" provider="java:RPC">
<parameter name="className" value="com.zhongying.pon.ws.ponp2p.OnupowerInterFace"/>
<parameter name="allowedMethods" value="queryOnupower"/>
</service>
<transport name="http">
<requestFlow>
<handler type="URLMapper"/>
<handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
</requestFlow>
</transport>
<transport name="local">
<responseFlow>
<handler type="LocalResponder"/>
</responseFlow>
</transport>
</deployment>
配置文件就准备好了,下面开始编写实体业务类就可以了。
除了这两种方式以外,还有很多其他的方式,比如:cxf的方式,http的方式(写的代码比较多,阅读性较差)
<span style="font-family:Arial, Helvetica, sans-serif;">
</span>