webservice发布的几种方式

最近一直在做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>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值