AXIS发布WebService

axis版本是apache axis-bin-1_3,可以到apache网站下载。


1.环境变量设置
AXIS_HOME
即axis-bin-1_2.zip解压的目录(我的是在 F:\opensource\axis-1_2)
AXIS_LIB
即 %AXIS_HOME%\lib

2.导入jar包
将axisa解压缩后,复制lib目录下列jar包到应用目录的lib目录:
saaj.jar
wsdl4j-1.5.1.jar
jaxrpc.jar
commons-logging-1.0.4.jar
commons-discovery-0.2.jar
axis-schema.jar
axis-ant.jar
axis.jar

3.修改web.Xml
将axis需要的servlet复制到应用的web.xml文件里面,注意顺序。
重新启动服务,可以访问“/servlet/AxisServlet”试一下,
比如:http://10.162.11.70:9080/newsdaoa/servlet/AxisServlet
<servlet id="Servlet_12"></servlet>
<servlet-name></servlet-name>AxisServlet
<display-name></display-name>Apache-Axis Servlet
<servlet-class></servlet-class>
org.apache.axis.transport.http.AxisServlet


<servlet id="Servlet_13"></servlet>
<servlet-name></servlet-name>AdminServlet
<display-name></display-name>Axis Admin Servlet
<servlet-class></servlet-class>
org.apache.axis.transport.http.AdminServlet

<load-on-startup></load-on-startup>100

<servlet id="Servlet_14"></servlet>
<servlet-name></servlet-name>SOAPMonitorService
<display-name></display-name>SOAPMonitorService
<servlet-class></servlet-class>
org.apache.axis.monitor.SOAPMonitorService

<init-param></init-param>
<param-name></param-name>SOAPMonitorPort
<param-value></param-value>5001

<load-on-startup></load-on-startup>100

<servlet-mapping id="ServletMapping_12"></servlet-mapping>
<servlet-name></servlet-name>AxisServlet
<url-pattern></url-pattern>/servlet/AxisServlet

<servlet-mapping id="ServletMapping_13"></servlet-mapping>
<servlet-name></servlet-name>AxisServlet
<url-pattern></url-pattern>*.jws

<servlet-mapping id="ServletMapping_14"></servlet-mapping>
<servlet-name></servlet-name>AxisServlet
<url-pattern></url-pattern>/services/*

<servlet-mapping id="ServletMapping_15"></servlet-mapping>
<servlet-name></servlet-name>SOAPMonitorService
<url-pattern></url-pattern>/SOAPMonitor


4.添加服务

将server-config.wsdd文件复制到发布应用的WEB-INF目录下,这就是AXIS的配置文件,以后所有的服务发布描述都会在里面找到。
如果还没有server-config.wsdd文件,可以先写一个发布描述文件,然后用axis来生成,以后需要发布新的服务,直接往里面添加即可。
比如有一个HelloWorld.class类,里面有sayHello(String msg)方法,想把它发布webservices,先写发布文件deploy.wsdd文件,即SOAP服务发布描述文件deploy.wsdd
<deployment xmlns="&lt;a href=" http:="" xml.apache.org="" wsdd="" axis=""></deployment>http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="HelloWorld" provider="java:RPC"></service>
<parameter value="HelloWorld" name="className"></parameter>
<parameter value="sayHello" name="allowedMethods"></parameter>

进入dos窗口,执行下列命令:
java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient deploy.wsdd
即可生成server-config.wsdd文件。
如果想发布新的服务,直接往server-config.wsdd里面添加service描述,比如想把知识管理模块导入知识功能发布成webservices,对应的程序文件是com.lc.v3.ecp.km.inteface.KmDelegate.java,需要发布的方法是importKm(String kmXmlStr),将此文件编译成class后,放到发布系统的相应目录下,往server-config.wsdd添加下列描述:
<service name="ImportKm" provider="java:RPC"></service>
<parameter value="com.lc.v3.ecp.km.inteface.KmDelegate" name="className"></parameter>
<parameter value="importKm" name="allowedMethods"></parameter>

重新启动服务,一个新的webservices就发布成功了,如果系统发布地址是http://10.162.11.70:9080/newsdaoa
调用的url是:http://10.162.11.70:9080/newsdaoa/services/ImportKm

5.给服务添加Handler

J2EE Web 服务中的Handler技术特点非常像Servlet技术中的Filter。我们知道,在Servlet中,当一个HTTP到达服务端时,往往要经过多个Filter对请求进行过滤,然后才到达提供服务的Servlet,这些Filter的功能往往是对请求进行统一编码,对用户进行认证,把用户的访问写入系统日志等。相应的,Web服务中的Handler通常也提供一下的功能:
对客户端进行认证、授权;
把用户的访问写入系统日志;
对请求的SOAP消息进行加密,解密;
为Web Services对象做缓存。

SOAP消息Handler能够访问代表RPC请求或者响应的SOAP消息。在JAX-RPC技术中,SOAP消息Handler可以部署在服务端,也可以在客户端使用。
至于如何开发handler,可以到网上去搜索陈亚强写的《使用Handler来增强Web服务的功能》,人家写的比较好,我就不在这废话了。
比如服务必须有用户名和密码才能访问,可以添加axis自带的检验认证handler,用户名和密码存放在\WEB-INF下的users.lst文件中。handler分别是:
//访问者必须提供用户名和密码,只要用户名和密码正确即可
org.apache.axis.handlers.SimpleAuthenticationHandler
//访问者必须提供指定的用户名和密码,用户名和密码正确即可
//在services中用allowedRoles属性指定访问的用户名
org.apache.axis.handlers.SimpleAuthorizationHandler

如果想给上面的ImportKm服务添加用户校验,并且只允许用户是pubnet,密码是123456的用户访问,首先往users.lst添加用户名和密码,格式是:
pubnet 123456
user1 pass1
user2
user3 pass3

改变上述server-config.wsdd里面service的描述:
<service name="ImportKm" provider="java:RPC"></service>
//添加handler,直接指定java类
<requestflow name="checks"></requestflow>
<handler type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"></handler>
<handler type="java:org.apache.axis.handlers.SimpleAuthorizationHandler"></handler>

<parameter value="pubnet" name="allowedRoles"></parameter>
<parameter value="com.lc.v3.ecp.km.inteface.KmDelegate" name="className"></parameter>
<parameter value="importKm" name="allowedMethods"></parameter>

除了上面方式外,还可以先单独声明handler,然后再添加到service里,比如自己开发了一个日志handler,用来记录每次对webservice的访问,程序是com.lc.v3.ecp.pub.webservies. AxisLogHandler,添加方式改变为:
//先单独定义日志handler
<handler name="logging" type="java:com.lc.v3.ecp.pub.webservies.AxisLogHandler"></handler>
//日志记录文件
<parameter value="c:/log/EcpService.log" name="filename"></parameter>

//再往service添加
<service name="ImportKm" provider="java:RPC"></service>
<requestflow name="checks"></requestflow>
//引用log定义

PS:....................................

第二种发布方式:

1、将HelloWorld.java编译成HelloWorld.class,放到%TOMCAT_HOME%\webapps\axis\WEB-INF\classes下

2、在%TOMCAT_HOME%\webapps\axis\WEB-INF下新建deploy.wsdd文件,即SOAP服务发布描述文件deploy.wsdd

<deployment xml.apache.org="" wsdd="" axis=""></deployment>
<rpc><br><parameter></parameter><br><parameter></parameter><br><br><br><br>在DOS下转换目录到%TOMCAT_HOME%\webapps\axis\WEB-INF,命令:<br><br>java-cp%AXISCLASSPATH%org.apache.axis.client.AdminClientdeploy.wsdd<br><br>你会发现目录下多了一个server-config.wsdd文件,这就是AXIS的配置文件,以后所有的服务发布描述都会在里面找到。(当然,你可以直接修改它,不用再写deploy.wsdd)然后打开浏览器http://localhost:8080/axis/servlet/AxisServlet,你就会看到你的服务已发布<br><br>同样用客户端程序访问一下:(注意和上边的差别!!)<br><br>HelloClient.java<br><br>importorg.apache.axis.client.Call;<br>importorg.apache.axis.client.Service;<br><br>publicclassHelloClient<br>{<br>publicstaticvoidmain(String[]args)throwsException{<br><br>Stringendpoint="http://localhost:"+"8080"+"/axis/services/HelloWorld";//注意!差别仅仅在这里!!<br><br>Serviceservice=newService();<br>Callcall=(Call)service.createCall();<br>call.setTargetEndpointAddress(newjava.net.URL(endpoint));<br>call.setOperationName("sayHello");<br><br>Stringres=(String)call.invoke(newObject[]{});<br><br>System.out.println(res);<br>}<br>}</rpc>

来自: http://bound.blogdriver.com/bound/1120135.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值