在上一篇<>中我介绍了一种简单webservice的发布方式-jws。
这种发布方式非常的敏捷!但有它的局限性—你必须知道webservice的源代码。有时候这个的确很让人郁闷!比如:的webservice被打成了一 个jar包,你并没有源代码。或者这个webservice根本就不是你的公司开发的。这时你发布这个webservice就会变得很困难。axis针对 这种情况提供了wsdd文件的方式来发布和撤销webservice。
现在我们来通过一个wsdd文件来对wsdd有个初步的认识。注意:在开始下面的步骤前请安装axis.具体安装请看上一篇
- < 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 文件中。
如图:
我们来访问一下看看:
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的定义