加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

AXIS发布WebService

发布时间:2020-12-17 02:40:19 所属栏目:安全 来源:网络整理
导读:? 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包到应用目录的
?

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
http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
???
???????
???????
???

进入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定义
????

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


????
????????
????????
????


在DOS下转换目录到%TOMCAT_HOME%/webapps/axis/WEB-INF,命令:

java?-cp?%AXISCLASSPATH%?org.apache.axis.client.AdminClient?deploy.wsdd

你会发现目录下多了一个server-config.wsdd文件,这就是AXIS的配置文件,以后所有的服务发布描述都会在里面找到。(当然,你可以直接修改它,不用再写deploy.wsdd)然后打开浏览器http://localhost:8080/axis/servlet/AxisServlet,你就会看到你的服务已发布

同样用客户端程序访问一下:(注意和上边的差别!!)

HelloClient.java

import?org.apache.axis.client.Call;
import?org.apache.axis.client.Service;

public?class?HelloClient
{
???public?static?void?main(String?[]?args)?throws?Exception?{

???????String?endpoint?=?"http://localhost:"?+"8080"+?"/axis/services/HelloWorld";//注意!差别仅仅在这里!!

???????Service??service?=?new?Service();
???????Call?????call????=?(Call)?service.createCall();
???????call.setTargetEndpointAddress(?new?java.net.URL(endpoint)?);
????????call.setOperationName("sayHello"??);

?????????String?res?=?(String)?call.invoke(?new?Object[]?{}?);

?????????????????????????System.out.println(?res?);
???}
}
">

?

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读