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

最原始webservice 部署 axis

发布时间:2020-12-17 00:02:32 所属栏目:安全 来源:网络整理
导读:一、简介 Apache Axis2是下一代 Apache Axis。Axis2 虽然由 Axis 1.x 处理程序模型提供支持,但它具有更强的灵活性并可扩展到新的体系结构。Axis2 基于新的体系结构进行了全新编写,而且没有采用 Axis 1.x 的常用代码。支持开发 Axis2 的动力是探寻模块化更

一、简介

Apache Axis2是下一代 Apache Axis。Axis2 虽然由 Axis 1.x 处理程序模型提供支持,但它具有更强的灵活性并可扩展到新的体系结构。Axis2 基于新的体系结构进行了全新编写,而且没有采用 Axis 1.x 的常用代码。支持开发 Axis2 的动力是探寻模块化更强、灵活性更高和更有效的体系结构,这种体系结构可以很容易地插入到其他相关 Web 服务标准和协议(如 WS-Security、WS-ReliableMessaging 等)的实现中。Apache Axis2 是Axis的后续版本,是新一代的SOAP引擎。 官方网站:http://axis.apache.org/axis2/java/core/index.html


二、下载

Apache Axis2 下载页面:http://axis.apache.org/axis2/java/core/download.cgi?(当前最新版本1.6.2)

Apache Axis2 Binary Distribution(1.6.2):http://mirror.bjtu.edu.cn/apache//axis/axis2/java/core/1.6.2/axis2-1.6.2-bin.zip

WAR Distribution:http://mirror.bjtu.edu.cn/apache//axis/axis2/java/core/1.6.2/axis2-1.6.2-war.zip

Eclipse 插件:

Service Archive Wizard - Eclipse Plug-in(用来将服务代码打包成后缀名为.aar文件的插件):

http://www.apache.org/dyn/mirrors/mirrors.cgi/axis/axis2/java/core/1.6.2/axis2-eclipse-service-plugin-1.6.2.zip

Code Generator Wizard - Eclipse Plug-in(用来将服务代码生成wsdl文件以及解析将wsdl文件生成客户端代码的插件):

http://www.apache.org/dyn/mirrors/mirrors.cgi/axis/axis2/java/core/1.6.2/axis2-eclipse-codegen-plugin-1.6.2.zip

安装插件:

我用的是MyEclipse10,以我的环境为例:将两个插件解压后放到D:sdkMyEclipseMyEclipse 10dropins目录下面,启动MyEclipse

File - New - Other 可以找到:

三、部署axis2 war

解压下载的axis2-1.6.2-war.zip 得到一个axis2.war文件,将这个文件丢到tomcatwebapps目录,启动tomcat?访问http://localhost:8080/axis2

看到如下界面,部署成功。


四、编写服务代码

ps:服务端代码可为任意的项目(包括java project或web service project。。。。。。。)

[java]? view plain copy
  1. package?com.xcy;??
  2. ??
  3. /**?
  4. ?*?@author?肖纯勇(Siuon)?
  5. ?*?@version?1.0?
  6. ?*?@create?2012-7-19?下午8:23:49?
  7. ?*/??
  8. public?class?Axis2WB?{??
  9. ?????????*?提供了一个说Hello的服务?
  10. ?????*?@return?
  11. ?????*/??
  12. ????public?String?sayHello(String?name){??
  13. ????????return?"Hello?"+name;??
  14. ????}??
  15. ??????
  16. ?????*?提供了一个做加法的服务?
  17. ?????*?@param?a?
  18. ?????*?@param?b?
  19. int?add(int?a,int?b){??
  20. return?a?+?b;??
  21. }??
五、 将服务代码打包成arr文件:

Eclipse菜单- New - File - Other -Axis2 Service Archiver

class file location:为刚刚写的Axis2WB类所在工程的bin目录


选择skip wsdl


如果你的Axis2WB有引用jar包,则在这里选择。我写的没有,所以next

由于我们没有编写service.xml,所以勾选让它自动生成,next


输入服务名称(随意)、类全名、load、next

设置aar文件名以及存放目录(我是放在桌面)--Finish:


完成后,可以看到桌面上多了一个axis2wb.aar文件,我们用winrar打开:

有没有感觉很眼熟?很像一个jar包、我们点击META-INF目录进去,可以看到插件给我们生成的一个service.xml,打开看看(是不是明白插件做了些啥了):

  

六、发布

将axis2wb.aar文件丢到之前部署的axis2应用的WEB-INFservices目录下面,重启tomcat

再访问http://localhost:8080/axis2/? ?点击Service



看到上图,说明发布成功

七、生成客户端代码

你可以用jdk6自带的wsimport工具生成客户端代码:Java 6 开发 WebService

也可以通过axis2 的Eclipse插件生成客户端代码:

Eclipse菜单-File-New-Other-Axis2 Code Generator

Generate Java source code from a WSDL file:根据WSDL生成webservice客户端的java代码。(在这里,我们选择这个)
Generate a WSDL from a Java source file ? :根据一个java源文件生成wsdl文件(这个源文件是打算发布成Web服务的java源文件,例如本demo中的Axis2WB.java)。




生成完代码后,你会发现报错,原因是因为缺少相关的jar包。

解压在第一步中下载的axis2 binary.zip ?将解压后的目录中的lib下面的所有jar包,拷进来,添加到class path中:


8、调用Web服务

copy
    package?test;??
  1. import?java.rmi.RemoteException;??
  2. import?com.xcy.Add;??
  3. import?com.xcy.AddResponse;??
  4. import?com.xcy.Axis2WB;??
  5. import?com.xcy.Axis2WBStub;??
  6. import?com.xcy.SayHello;??
  7. import?com.xcy.SayHelloResponse;??
  8. ??
  9. /**?
  10. ?*?@author?肖纯勇(Siuon)?
  11. ?*?@version?1.0?
  12. ?*?@create?2012-7-19?下午9:18:23?
  13. ?*/??
  14. class?Test?{??
  15. ????static?void?main(String[]?args)?throws?RemoteException?{??
  16. ????????//创建客户端对象??
  17. ????????Axis2WB?axis2wb?=?new?Axis2WBStub();??
  18. ??????????
  19. ????????//new一个调用sayHello方法需要的参数SayHello,并且设置name??
  20. ????????SayHello?sayHello?=?new?SayHello();??
  21. ????????sayHello.setName("Siuon");??
  22. //调用web服务??
  23. ????????SayHelloResponse?sayHelloResponse?=?axis2wb.sayHello(sayHello);??
  24. //拿到返回结果??
  25. ????????System.out.println(sayHelloResponse.get_return());??
  26. ??????????
  27. ????????Add?add?=?new?Add();??
  28. ????????add.setA(5);??
  29. ????????add.setB(3);??
  30. ????????AddResponse?addResponse?=?axis2wb.add(add);??
  31. ????????System.out.println(addResponse.get_return());??
  32. ????}??
  33. } ?

(编辑:李大同)

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

    推荐文章
      热点阅读