当前位置: 代码迷 >> Web前端 >> 在axis中经过wsdd文件发布和卸载webservice
  详细解决方案

在axis中经过wsdd文件发布和卸载webservice

热度:420   发布时间:2012-09-09 09:27:54.0
在axis中通过wsdd文件发布和卸载webservice

转自http://yangyang.iteye.com/blog/56552

在上一篇<>中我介绍了一种简单webservice的发布方式-jws。

???? 这种发布方式非常的敏捷!但有它的局限性―你必须知道webservice的源代码。有时候这个的确很让人郁闷!比如:的webservice被打成了一个jar包,你并没有源代码。或者这个webservice根本就不是你的公司开发的。这时你发布这个webservice就会变得很困难。axis针对这种情况提供了wsdd文件的方式来发布和撤销webservice。

???? 现在我们来通过一个wsdd文件来对wsdd有个初步的认识。注意:在开始下面的步骤前请安装axis.具体安装请看上一篇

xml 代码
  1. <deployment?xmlns="http://xml.apache.org/axis/wsdd/"??
  2. ????????????xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">??
  3. ????????????<service?name="MyService"?provider="java:RPC">??
  4. ?????????????????????<parameter?name="className"?value="samples.userguide.example3.MyService"/>??
  5. ??????????????????????<parameter?name="allowedMethods"?value="*"/>??
  6. ????????????service>??
  7. 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)

????????
???????? 如果成功则会显示 :

  1. <Admin>Done?processingAdmin>??

??????? 下面来解释AdminClient 所做的工作。AdminClient 首先会在axis.jar所在应用下的WEB-INF文件夹下创建一个webservice配置文件server-config.wsdd,并且根据wsdd文件的配置将我们的webservice加入到这个配置文件中。如果server-config.wsdd已经存在则不会创建,会修改这个文件将新的service 配置到server-config.wsdd文件中。

如图:

?
xml 代码
  1. <!---->xml?version="1.0"?encoding="UTF-8"?>??
  2. <deployment?xmlns="http://xml.apache.org/axis/wsdd/"?xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">??
  3. ?<globalConfiguration>??
  4. ??<parameter?name="sendMultiRefs"?value="true"/>??
  5. ??<parameter?name="disablePrettyXML"?value="true"/>??
  6. ??<parameter?name="adminPassword"?value="admin"/>??
  7. ??<parameter?name="attachments.Directory"?value="C:\tomcat5\webapps\axis\WEB-INF\attachments"/>??
  8. ??<parameter?name="dotNetSoapEncFix"?value="true"/>??
  9. ??<parameter?name="enableNamespacePrefixOptimization"?value="false"/>??
  10. ??<parameter?name="sendXMLDeclaration"?value="true"/>??
  11. ??<parameter?name="sendXsiTypes"?value="true"/>??
  12. ??<parameter?name="attachments.implementation"?value="org.apache.axis.attachments.AttachmentsImpl"/>??
  13. ??<requestFlow>??
  14. ???<handler?type="java:org.apache.axis.handlers.JWSHandler">??
  15. ????<parameter?name="scope"?value="session"/>??
  16. ???handler>??
  17. ???<handler?type="java:org.apache.axis.handlers.JWSHandler">??
  18. ????<parameter?name="scope"?value="request"/>??
  19. ????<parameter?name="extension"?value=".jwr"/>??
  20. ???handler>??
  21. ??requestFlow>??
  22. ?globalConfiguration>??
  23. ?<handler?name="LocalResponder"?type="java:org.apache.axis.transport.local.LocalResponder"/>??
  24. ?<handler?name="URLMapper"?type="java:org.apache.axis.handlers.http.URLMapper"/>??
  25. ?<handler?name="Authenticate"?type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>??
  26. ?<service?name="AdminService"?provider="java:MSG">??
  27. ??<parameter?name="allowedMethods"?value="AdminService"/>??
  28. ??<parameter?name="enableRemoteAdmin"?value="false"/>??
  29. ??<parameter?name="className"?value="org.apache.axis.utils.Admin"/>??
  30. ??<namespace>http://xml.apache.org/axis/wsdd/namespace>??
  31. ?service>??
  32. ?<service?name="Version"?provider="java:RPC">??
  33. ??<parameter?name="allowedMethods"?value="getVersion"/>??
  34. ??<parameter?name="className"?value="org.apache.axis.Version"/>??
  35. ?service>??
  36. >??
  37. ?<service?name="MyService"?provider="java:RPC">??
  38. ??<parameter?name="allowedMethods"?value="*"/>??
  39. ??<parameter?name="className"?value="samples.userguide.example3.MyService"/>??
  40. ?service>??
  41. ?<transport?name="http">??
  42. ??<requestFlow>??
  43. ???<handler?type="URLMapper"/>??
  44. ???<handler?type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>??
  45. ??requestFlow>??
  46. ??<parameter?name="qs:list"?value="org.apache.axis.transport.http.QSListHandler"/>??
  47. ??<parameter?name="qs:wsdl"?value="org.apache.axis.transport.http.QSWSDLHandler"/>??
  48. ??<parameter?name="qs.list"?value="org.apache.axis.transport.http.QSListHandler"/>??
  49. ??<parameter?name="qs.method"?value="org.apache.axis.transport.http.QSMethodHandler"/>??
  50. ??<parameter?name="qs:method"?value="org.apache.axis.transport.http.QSMethodHandler"/>??
  51. ??<parameter?name="qs.wsdl"?value="org.apache.axis.transport.http.QSWSDLHandler"/>??
  52. ?transport>??
  53. ?<transport?name="local">??
  54. ??<responseFlow>??
  55. ???<handler?type="LocalResponder"/>??
  56. ??responseFlow>??
  57. ?transport>??
  58. deployment>??
xml 代码

?我们来访问一下看看:

java samples.userguide.example3.Client -lhttp://localhost:8080/axis/services/MyService "test me!"


You typed : test me!????

返回正确,部署成功!

???????? 如果你要卸载一个webservice也很简单!我们首先定义一个undeploy.wsdd

  1. <undeployment?xmlns="http://xml.apache.org/axis/wsdd/">??
  2. ?<service?name="MyService"/>??
  3. undeployment>??
xml 代码<service name="MyService"></service>

进入webservice所在源文件的目录找到undeploy.wsdd文件。然后键入如下命令:

????????????? java org.apache.axis.client.AdminClient? undeploy.wsdd

?(如果提示错误,请检查你是否将必须的jar包加入classpath)

????????
???????? 如果成功则会显示 :
?

  1. <Admin>Done?processingAdmin>??

?

在看server-config.wsdd已经删除了原来service的定义

<!---->

<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"></deployment>

xml 代码
  1. <?xml?version="1.0"?encoding="UTF-8"?>??
  2. <deployment?xmlns="http://xml.apache.org/axis/wsdd/"?xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">??
  3. ?<globalConfiguration>??
  4. ??<parameter?name="sendMultiRefs"?value="true"/>??
  5. ??<parameter?name="disablePrettyXML"?value="true"/>??
  6. ??<parameter?name="adminPassword"?value="admin"/>??
  7. ??<parameter?name="attachments.Directory"?value="C:\tomcat5\webapps\axis\WEB-INF\attachments"/>??
  8. ??<parameter?name="dotNetSoapEncFix"?value="true"/>??
  9. ??<parameter?name="enableNamespacePrefixOptimization"?value="false"/>??
  10. ??<parameter?name="sendXMLDeclaration"?value="true"/>??
  11. ??<parameter?name="sendXsiTypes"?value="true"/>??
  12. ??<parameter?name="attachments.implementation"?value="org.apache.axis.attachments.AttachmentsImpl"/>??
  13. ??<requestFlow>??
  14. ???<handler?type="java:org.apache.axis.handlers.JWSHandler">??
  15. ????<parameter?name="scope"?value="session"/>??
  16. ???</handler>??
  17. ???<handler?type="java:org.apache.axis.handlers.JWSHandler">??
  18. ????<parameter?name="scope"?value="request"/>??
  19. ????<parameter?name="extension"?value=".jwr"/>??
  20. ???</handler>??
  21. ??</requestFlow>??
  22. ?</globalConfiguration>??
  23. ?<handler?name="LocalResponder"?type="java:org.apache.axis.transport.local.LocalResponder"/>??
  24. ?<handler?name="URLMapper"?type="java:org.apache.axis.handlers.http.URLMapper"/>??
  25. ?<handler?name="Authenticate"?type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>??
  26. ?<service?name="AdminService"?provider="java:MSG">??
  27. ??<parameter?name="allowedMethods"?value="AdminService"/>??
  28. ??<parameter?name="enableRemoteAdmin"?value="false"/>??
  29. ??<parameter?name="className"?value="org.apache.axis.utils.Admin"/>??
  30. ??<namespace>http://xml.apache.org/axis/wsdd/</namespace>??
  31. ?</service>??
  32. ?<service?name="Version"?provider="java:RPC">??
  33. ??<parameter?name="allowedMethods"?value="getVersion"/>??
  34. ??<parameter?name="className"?value="org.apache.axis.Version"/>??
  35. ?</service>??
  36. <!-- ?
  37. ?原来的service的定义已经删除! ?
  38. -->??
  39. ?<transport?name="http">??
  40. ??<requestFlow>??
  41. ???<handler?type="URLMapper"/>??
  42. ???<handler?type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>??
  43. ??</requestFlow>??
  44. ??<parameter?name="qs:list"?value="org.apache.axis.transport.http.QSListHandler"/>??
  45. ??<parameter?name="qs:wsdl"?value="org.apache.axis.transport.http.QSWSDLHandler"/>??
  46. ??<parameter?name="qs.list"?value="org.apache.axis.transport.http.QSListHandler"/>??
  47. ??<parameter?name="qs.method"?value="org.apache.axis.transport.http.QSMethodHandler"/>??
  48. ??<parameter?name="qs:method"?value="org.apache.axis.transport.http.QSMethodHandler"/>??
  49. ??<parameter?name="qs.wsdl"?value="org.apache.axis.transport.http.QSWSDLHandler"/>??
  50. ?</transport>??
  51. ?<transport?name="local">??
  52. ??<responseFlow>??
  53. ???<handler?type="LocalResponder"/>??
  54. ??</responseFlow>??
  55. ?</transport>??
  56. </deployment>??

?????? 看是不是很简单,不仅省去了ctrl+cctrl+v,还防止了手动配置出错。一举两得岂不快哉!<o:p></o:p>

  相关解决方案