当前位置: 代码迷 >> Web前端 >> 关于java webservice 技术的小结
  详细解决方案

关于java webservice 技术的小结

热度:100   发布时间:2012-11-01 11:11:31.0
关于java webservice 技术的总结

由于在新的项目中要用到webservice,终于花了两天时间研究了一下,呵呵,

感谢javaeye,上面有位兄弟专门发布了axis的专题文章,写得非常的好,也很仔细,让我受益非浅

其实使用axis可以将任何已经有的java类提供为可供调用的webservice接口,而且非常

呵呵,不多说了,直接说步骤吧,希望对学习axis的兄弟有帮助,以最快捷的方式学习应用 axis

(这里我只用了stubs方式)

1-? 环境搭建和测试

???? 将 TOMCAT 和JDK配置好,然后下载apache上的axis1.4 这里有两个版本axis1.4和axis2,我们使用axis1.4

???? http://www.ip97.com/apache.org/ws/axis/1_4/axis-bin-1_4.zip

???? 解压后将 webapps/axis 这个目录复制到 %tomcathome%/webapps/ 下

???? 然后启动tomcat,?打开URL: http://localhost:8080/axis/????

???? 配置成功后将有如下信息,打开 validataion 然后,页面上的信息会告诉你已经有的包和还要差的包,然后根据提示将必须的包下载全.复制到 %tomcathome%/webapps/axis/WEB-INF/lib/目录下

???? 重起tomat ,直到必须的包都装齐.

2-? 创建一个服务类

????? 我使用的ECLIPSE,当然其实在eclipse下并没有用axis的开发插件,只是用来写代码而已

????? 创建一个普通的web工程

????? 将 %tomcathome%/webapps/axis/WEB-INF/web.xml 文件复制到工程中 WEB-INF/下,替换原来的

???? 将 %tomcathome%/webapps/axis/WEB-INF/lib 下的jar包复制到工程下 WEB-INF/lib 下, 要包括 activation.jar 包

????? 编写如下文件代码

????? src/study/TestHello.java?? 内容如下:

java 代码
  1. public?class?TestHello?{ ??
  2. ??
  3. ?/** ?
  4. ??*?测试 ?
  5. ??*?@param?name ?
  6. ??*?@return ?
  7. ??*/??
  8. ?public?String?getName(String?name){ ??
  9. ? ??
  10. ??return?"Hello??"+name; ??
  11. ?? ??
  12. ?} ??
  13. ? ??
  14. } ??

TestClient.java 文件

java 代码
  1. public?class?TestClient?{ ??
  2. ???? ??
  3. ????public?static?void?main(String[]?args)?throws?Exception?{ ??
  4. ??
  5. ????????//?指出service所在URL? ??
  6. ??
  7. ????????String?endpoint?=?"http://localhost:8080/虚拟路径/services/TestHello"; ??
  8. ??
  9. ????????//?创建一个服务(service)调用(call)? ??
  10. ??
  11. ????????Service?service?=?new?Service(); ??
  12. ??
  13. ????????Call?call?=?(Call)?service.createCall();//?通过service创建call对象? ??
  14. ??
  15. ????????//?设置service所在URL? ??
  16. ??
  17. ????????call.setTargetEndpointAddress(new?java.net.URL(endpoint)); ??
  18. ??
  19. ????????//?方法名(processService)与MyService.java方法名保持一致? ??
  20. ??
  21. ????????call.setOperationName("getName"); ??
  22. ??
  23. ????????//?Object?数组封装了参数,参数为"This?is?Test!",调用processService(String?arg)? ??
  24. ??
  25. ????????String?ret?=?(String)?call.invoke(new?Object[]?{?"你好"?}); ??
  26. ??
  27. ????????System.out.println(ret); ??
  28. ??
  29. ????} ??
  30. ???? ??
  31. }??

?编写deploy.xml 文件

xml 代码
  1. <!---->xml?version="1.0"?encoding="GB18030"?>??
  2. <deployment?xmlns="http://xml.apache.org/axis/wsdd/"??
  3. ????xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">??
  4. ????<service?name="TestHello"?provider="java:RPC">??
  5. ????????<parameter?name="className"?value="study.TestHello"?/>??
  6. ????????<parameter?name="allowedMethods"?value="*"?/>??
  7. ????service>??
  8. deployment>??

编写一个命令行的 axis发布脚本 r_make_server.bat

?java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -lhttp://localhost:8080/toms/servlet/AxisServlet deploy.wsdd

目录结构是这样的

/工程1---src/study/TestHello.java
??????????? ---src/study/TestClient.java
????????????---webroot/WEB-INF/class/study/TestHello.class
??????????? ---webroot/WEB-INF/lib/所有的axis下的lib下的包 + 下载的必须的jar包
??????????? ---webroot/WEB-INF/r_make_server.bat
??????????? ---webroot/WEB-INF/web.xml
??????????? ---webroot/WEB-INF/deploy.xml

3-? 直接在MyEclipse 中以应用程序的方式运行 TestClient.java

?

1 楼 otom31 2007-04-29  
呵呵,怎么改了内容后保存不起啊??郁闷了
是不是文章内容太长了..
我是第一次发贴呢
2 楼 elsy 2007-05-25  
你这个是不是哪里写错了啊??
3 楼 shaucle 2007-05-25  
总结在哪里?
只有axis?
4 楼 otom31 2007-06-14  
这个blog让我很失望啊,修改代码总是不成功,提交不上去
5 楼 tanghaiyu 2007-06-14  
GOOD
6 楼 mustbelove 2007-07-15  
怎么联系,有qq吗?想请教一下。谢谢。
我的qq是:16910775
7 楼 leisure 2007-07-17  
这个冒什么实际应用价值啊
8 楼 liu5201314 2007-07-17  
好...
  相关解决方案