在axis中通过wsdd文件发布和卸载webservice
用Axis开发基于Java的Web服务概述 本文介绍了一个比较简单实用的基于Java的SOAP引擎——Apache组织推出的Axis——的安装、配置和应用开发方法,希望对有兴趣做基于Java的Web Services应用开发的朋友有所帮助。? CATALINA_HOME? ? 服务的发布? ? 使用定制发布?
将其编译成.class文件,放置到“……webappsaxissamplescapacity”目录下,即可着手进行发布。? 将该文件也放到“……webappsaxissamplescapacity”目录下,然后可以采用Axis提供的一个客户端管理工具——AdminClient来完成服务的定制发布。在“……webappsaxissamplescapacity”目录下,运行:? ? 服务的访问?
? 客户端服务访问编程? ===================================== 在axis中通过wsdd文件发布和卸载webservice 在上一篇<>中我介绍了一种简单webservice的发布方式-jws。
<deployment xmlns="http://xml.apache.org/axis/wsdd/"?
?xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">? ?<service name="MyService" provider="java:RPC">? ?<parameter name="className" value="samples.userguide.example3.MyService"/>? ?<parameter name="allowedMethods" value="*"/>? ?</service>? </deployment> 最外面的元素告诉我们这是一个wsdd发布项,并且定义了java的命名空间,service 元素定义了我们的service.java:RPC定义了axis的provider。parameter name定义了webservice类名及所在包的位置。allowedMethods value等于*,表示MyService的所有方法都可以被调用。 了解了wsdd文件,我们来认识一个非常有用的工具 AdminClient.正式通过它我们才能通过wsdd文件发布我们的应用。它的全路径是 org.apache.axis.client.AdminClient,在axis.jar包中。在使用这个工具前我们必须把相应的jar包加入 classpath。如:axis.jar..。如果你做了<>的练习则这一步就不用再做了。 我们首先进入webservice所在源文件的目录找到deploy.wsdd文件。然后键入如下命令:
java org.apache.axis.client.AdminClient deploy.wsdd
(如果提示错误,请检查你是否将必须的jar包加入classpath) 如果成功则会显示 :?
<Admin>Done processing</Admin>
下面来解释AdminClient 所做的工作。AdminClient 首先会在axis.jar所在应用下的WEB-INF文件夹下创建一个webservice配置文件server-config.wsdd,并且根据 wsdd文件的配置将我们的webservice加入到这个配置文件中。如果server-config.wsdd已经存在则不会创建,会修改这个文件将新的service 配置到server-config.wsdd文件中。
<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="sendMultiRefs" value="true"/>? ?<parameter name="disablePrettyXML" value="true"/>? ?<parameter name="adminPassword" value="admin"/>? ?<parameter name="attachments.Directory" value="C:tomcat5webappsaxisWEB-INFattachments"/>? ?<parameter name="dotNetSoapEncFix" value="true"/>? ?<parameter name="enableNamespacePrefixOptimization" value="false"/>? ?<parameter name="sendXMLDeclaration" value="true"/>? ?<parameter name="sendXsiTypes" value="true"/>? ?<parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/>? ?<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="AdminService" provider="java:MSG">? ?<parameter name="allowedMethods" value="AdminService"/>? ?<parameter name="enableRemoteAdmin" value="false"/>? ?<parameter name="className" value="org.apache.axis.utils.Admin"/>? ?<namespace>http://xml.apache.org/axis/wsdd/namespace>? ?</service>? ?<service name="Version" provider="java:RPC">? ?<parameter name="allowedMethods" value="getVersion"/>? ?<parameter name="className" value="org.apache.axis.Version"/>? ?</service>? ?<service name="MyService" provider="java:RPC">? ?<parameter name="allowedMethods" value="*"/>? ?<parameter name="className" value="samples.userguide.example3.MyService"/>? ?</service>? ?<transport name="http">? ?<requestFlow>? ?<handler type="URLMapper"/>? ?<handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>? ?</requestFlow>? ?<parameter name="qs:list" value="org.apache.axis.transport.http.QSListHandler"/>? ?<parameter name="qs:wsdl" value="org.apache.axis.transport.http.QSWSDLHandler"/>? ?<parameter name="qs.list" value="org.apache.axis.transport.http.QSListHandler"/>? ?<parameter name="qs.method" value="org.apache.axis.transport.http.QSMethodHandler"/>? ?<parameter name="qs:method" value="org.apache.axis.transport.http.QSMethodHandler"/>? ?<parameter name="qs.wsdl" value="org.apache.axis.transport.http.QSWSDLHandler"/>? ?</transport>? ?<transport name="local">? ?<responseFlow>? ?<handler type="LocalResponder"/>? ?</responseFlow>? ?</transport>? </deployment> 我们来访问一下看看:
java samples.userguide.example3.Client -lhttp://localhost:8080/axis/services/MyService "test me!"
You typed : test me!? 返回正确,部署成功! 如果你要卸载一个webservice也很简单!我们首先定义一个undeploy.wsdd
<undeployment xmlns="http://xml.apache.org/axis/wsdd/">?
?<service name="MyService"/>? </undeployment> 进入webservice所在源文件的目录找到undeploy.wsdd文件。然后键入如下命令:
java org.apache.axis.client.AdminClient undeploy.wsdd
(如果提示错误,请检查你是否将必须的jar包加入classpath)? 如果成功则会显示 :?
<Admin>Done processing</Admin>
在看server-config.wsdd已经删除了原来service的定义
<?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="sendMultiRefs" value="true"/>? ?<parameter name="disablePrettyXML" value="true"/>? ?<parameter name="adminPassword" value="admin"/>? ?<parameter name="attachments.Directory" value="C:tomcat5webappsaxisWEB-INFattachments"/>? ?<parameter name="dotNetSoapEncFix" value="true"/>? ?<parameter name="enableNamespacePrefixOptimization" value="false"/>? ?<parameter name="sendXMLDeclaration" value="true"/>? ?<parameter name="sendXsiTypes" value="true"/>? ?<parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/>? ?<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="AdminService" provider="java:MSG">? ?<parameter name="allowedMethods" value="AdminService"/>? ?<parameter name="enableRemoteAdmin" value="false"/>? ?<parameter name="className" value="org.apache.axis.utils.Admin"/>? ?<namespace>http://xml.apache.org/axis/wsdd/</namespace>? ?</service>? ?<service name="Version" provider="java:RPC">? ?<parameter name="allowedMethods" value="getVersion"/>? ?<parameter name="className" value="org.apache.axis.Version"/>? ?</service>? <!-- </span> </li> <li class="alt"><span><span class="comments"> 原来的service的定义已经删除! </span> </span></li> <li class=""><span><span class="comments">-->? ?<transport name="http">? ?<requestFlow>? ?<handler type="URLMapper"/>? ?<handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>? ?</requestFlow>? ?<parameter name="qs:list" value="org.apache.axis.transport.http.QSListHandler"/>? ?<parameter name="qs:wsdl" value="org.apache.axis.transport.http.QSWSDLHandler"/>? ?<parameter name="qs.list" value="org.apache.axis.transport.http.QSListHandler"/>? ?<parameter name="qs.method" value="org.apache.axis.transport.http.QSMethodHandler"/>? ?<parameter name="qs:method" value="org.apache.axis.transport.http.QSMethodHandler"/>? ?<parameter name="qs.wsdl" value="org.apache.axis.transport.http.QSWSDLHandler"/>? ?</transport>? ?<transport name="local">? ?<responseFlow>? ?<handler type="LocalResponder"/>? ?</responseFlow>? ?</transport>? </deployment>
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |