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

axis 实现的webservice(简单例子)

发布时间:2020-12-17 00:43:23 所属栏目:安全 来源:网络整理
导读:今天学习了一下webservice的东西,在网上看了些简单的例子,自己有实现了一下,例子都很简单,只是需要哪些JAR倒是挺烦的,因为网上的例子只提到AXIS,其他需要的都是debug出来的。特意列出来,不甚懂为什么需要,只是没有就不能成功。高手看了,还望指点一

今天学习了一下webservice的东西,在网上看了些简单的例子,自己有实现了一下,例子都很简单,只是需要哪些JAR倒是挺烦的,因为网上的例子只提到AXIS,其他需要的都是debug出来的。特意列出来,不甚懂为什么需要,只是没有就不能成功。高手看了,还望指点一二。

项目的名字是:webserviceDemo

必需的JAR

axis.jar

commons-logging.jar

saaj.jar

jaxrpc.jar

commons-discover-0.2.jar

wsdl4j-1.5.1.jar

配置文件:

主要是web.xml 和 *.wsdd 文件的配置,都放在web-inf下

(1)web.xml

没什么需要特别说明的,就和配置普通的servlet一样

 
 
  1. <?xml?version="1.0"?encoding="UTF-8"?>?
  2. <web-app?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?xmlns="http://java.sun.com/xml/ns/javaee"?xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"?xsi:schemaLocation="http://java.sun.com/xml/ns/javaee?http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"?id="WebApp_ID"?version="2.5">?
  3. ??<display-name>TrendMicro?SilkCentral?Test?Manager?Report?System</display-name>?
  4. ?? ?
  5. ??<session-config>?
  6. ????<session-timeout>30</session-timeout>?
  7. ??</session-config>?
  8. ?? ?
  9. ?? ?
  10. ??<welcome-file-list>?
  11. ????<welcome-file>index.html</welcome-file>?
  12. ??</welcome-file-list>?
  13. ?? ?
  14. ??<servlet>?
  15. ????????<servlet-name>AxisServlet</servlet-name>?
  16. ????????<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>?
  17. ????</servlet>?
  18. ????<servlet-mapping>?
  19. ????????<servlet-name>AxisServlet</servlet-name>?
  20. ????????<url-pattern>/services/*</url-pattern>?
  21. ????</servlet-mapping>?
  22. ?
  23. ?
  24. </web-app>?

(2)server-config.wsdd

?

 
 
  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. ?
  4. <globalConfiguration>?
  5. ??<parameter?name="sendMultiRefs"?value="true"/>?
  6. ??<parameter?name="disablePrettyXML"?value="true"/>?
  7. ??<parameter?name="dotNetSoapEncFix"?value="true"/>?
  8. ??<parameter?name="enableNamespacePrefixOptimization"?value="false"/>?
  9. ??<parameter?name="sendXMLDeclaration"?value="true"/>?
  10. ??<parameter?name="sendXsiTypes"?value="true"/>?
  11. ??<parameter?name="attachments.implementation"?value="org.apache.axis.attachments.AttachmentsImpl"/>?
  12. </globalConfiguration>?
  13. ?
  14. ??<handler?type="java:org.apache.axis.handlers.http.URLMapper"?name="URLMapper"/>??? ?
  15. ??<service?name="Test"?provider="java:RPC">??? ?
  16. ?????<parameter?name="className"?value="test.Test"/><!--??你要改的就是这.这写上要调用的类.就可以?-->?
  17. ?????<parameter?name="scope"?value="request"/>?
  18. ?????<parameter?name="allowedMethods"?value="*"/>?<!--?这*代表所有的方法??-->? ?
  19. ?????<messageReceiver?class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>?
  20. ??</service>??? ?
  21. ??<transport?name="http">??? ?
  22. ?????<requestFlow>??? ?
  23. ????????<handler?type="URLMapper"/>??? ?
  24. ?????</requestFlow>??? ?
  25. ??</transport>??? ?
  26. </deployment>?

编写方法

?

 
 
  1. package?test; ?
  2. ?
  3. ?
  4. public?class?Test?{ ?
  5. ?
  6. ????public?String?Test1(String?name){ ?
  7. ????????return?name; ?
  8. ????} ?
  9. ?
  10. } ?

?

测试

访问http://localhost:8080/webserviceDemo/services?,测试是否成功,注意地址最后不用加/,加上就访问不到了(不明白未什么)

?

调用

webservice上的方法参数可以任意传,但是返回值我只会返回基本类型,如果要返回对象、数组的,我还不知道怎么弄。下面的例子是简单的调用。

?

 
 
  1. package?test; ?
  2. ?
  3. import?java.util.List; ?
  4. ?
  5. import?org.apache.axis.client.Call; ?
  6. import?org.apache.axis.client.Service; ?
  7. ?
  8. public?class?TestCall?{ ?
  9. ???? ?
  10. ????public?static?void?main(String[]?args)?{ ?
  11. ????????//?TODO?Auto-generated?method?stub ?
  12. ????????String?url?=?"http://localhost:8080/webserviceDemo/services/Test"; ?
  13. ????????Service?service?=?new?Service(); ?
  14. ????????Call?call; ?
  15. ????????try?{ ?
  16. ????????????call?=?(Call)?service.createCall(); ?
  17. ????????????call.setTargetEndpointAddress(new?java.net.URL(url)); ?
  18. ????????????call.setOperationName("Test1"); ?
  19. ????????????call.setReturnClass(List.class); ?
  20. ???????????? ?
  21. ????????????int?ret?=?(Integer)?call.invoke(new?Object[]{"nameameddfasdfsdf"}); ?
  22. ????????????System.out.println("--------"+ret); ?
  23. ????????}?catch?(Exception?e)?{ ?
  24. ????????????//?TODO?Auto-generated?catch?block ?
  25. ????????????e.printStackTrace(); ?
  26. ????????} ?
  27. ????} ?
  28. ?
  29. } ?

?

?好,就到这些,实现这个例子,遇到的纠结问题就是那几个jar的问题。然后就是调用时,怎么设置传递参数的问题。传递参数有很多方法要设置,比如call.addParameter(),call.setReturnType,qn等等,网上看的,不是很明白,记下来,留个提示。

顺道说一句,例子如有雷同,那肯定是………………我copy别人的,嘿嘿。(心里默默感谢那些勤奋写博客的各位)

(编辑:李大同)

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

    推荐文章
      热点阅读