篆体字作品 | 篆体字知识 | 加入收藏 篆体字转换器软件可转换多种篆体字在线预览 网页版 V2.0
篆体字转换器

当前位置:篆体字网 > 知识库 >

webservices

时间:2024-01-04 07:26:22 编辑:篆字君 来源:篆体字网

本文借鉴了网上的两篇文章:

AXIS学习笔记

使用Handler来增强Web服务的功能

我们使用的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


AxisServlet

Apache-Axis Servlet


org.apache.axis.transport.http.AxisServlet




AdminServlet

Axis Admin Servlet


org.apache.axis.transport.http.AdminServlet


100



SOAPMonitorService

SOAPMonitorService


org.apache.axis.monitor.SOAPMonitorService



SOAPMonitorPort

5001


100



AxisServlet

/servlet/AxisServlet



AxisServlet

*.jws



AxisServlet

/services/*



SOAPMonitorService

/SOAPMonitor


4.添加服务

将server-config.wsdd文件复制到发布应用的WEB-INF目录下,这就是AXIS的配置文件,以后所有的服务发布描述都会在里面找到。

如果还没有server-config.wsdd文件,可以先写一个发布描述文件,然后用axis来生成,以后需要发布新的服务,直接往里面添加即可。

比如有一个HelloWorld.class类,里面有sayHello(String msg)方法,想把它发布webservices,先写发布文件deploy.wsdd文件,即SOAP服务发布描述文件deploy.wsdd






进入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添加下列描述:





重新启动服务,一个新的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的描述:


//添加handler,直接指定java类









除了上面方式外,还可以先单独声明handler,然后再添加到service里,比如自己开发了一个日志handler,用来记录每次对webservice的访问,程序是com.lc.v3.ecp.pub.webservies. AxisLogHandler,添加方式改变为:

//先单独定义日志handler


//日志记录文件



//再往service添加



//引用log定义









Copyright:2021-2023 篆体字转换器 www.dddtedu.com All rights reserved.