在Eclipse中使用Axis2插件生成Web Service服务端/客户端
来源:互联网 发布:sql注入防御 编辑:程序博客网 时间:2024/05/16 17:42
JDK版本:1.7update65
Eclipse版本:Juno Service Release 2(4.2.2)
插件安装过程及WSDL文件生成过程参见:http://blog.csdn.net/a19881029/article/details/40194787
1,下载Axis2的1.6.2版本二进制压缩包,下载路径为:http://axis.apache.org/axis2/java/core/download.cgi,下载完成后解压,以供之后使用
2,创建一个普通的Java工程,用来存放自动生成的Web Service服务端/客户端代码
3,选择Eclipse菜单栏中的File -> New -> Other...,在弹出的对话框中选择Axis2 Code Generator,然后选择Next
4,选择通过WSDL文件生成Java源代码
5,选择生成好的WSDL文件
6,如果Codegen option选择default,则不可修改下面的配置项,默认生成Web Service客户端,如果Codegen option选择custom,则可以手动修改下面的配置项
7,选择将自动生成的Java代码保存在Eclipse当前工作空间中的特定工程中
8,虽然Axis2依赖的jar包加到了工程中,但是并没有添加到工程的Build Path中,需要手动添加一下
9,客户端生成代码如下:
生成的时候选择同时生成同步方法和异步方法,同步方法比较简单,就不多说了,这里看下MathStub类中异步方法是如何处理的
- ......
- public void startadd(
- com.sean.Add add2,
- final com.sean.MathCallbackHandler callback)
- throws java.rmi.RemoteException{
- ......
- callback.receiveResultadd(
- (com.sean.AddResponse)object);
- } catch (org.apache.axis2.AxisFault e) {
- cllback.receiveErroradd(e);
- }
- ......
MathCallbackHandler是个抽象方法
- ......
- /**
- * auto generated Axis2 call back method for add method override this method
- * for handling normal response from add operation
- */
- public void receiveResultadd(com.sean.AddResponse result) {}
- /**
- * auto generated Axis2 Error handler override this method for handling
- * error response from add operation
- */
- public void receiveErroradd(java.lang.Exception e) {}
- ......
综上,实现了自己的异常处理类
- package com.sean;
- public class MyMathCallbackHandler extends MathCallbackHandler {
- @Override
- public void receiveResultadd(AddResponse result) {
- super.clientData = result;
- }
- @Override
- public void receiveErroradd(Exception e) {
- System.out.println(e.getMessage());
- }
- }
接口调用方式如下
- package com.sean;
- public class Test {
- public static void main(String[] args) throws Exception {
- Math math = new MathStub("http://127.0.0.1:8888/mockMathSoap12Binding");
- //sync
- Add add1 = new Add();
- add1.setArgs0(1);
- add1.setArgs1(2);
- AddResponse resp1 = math.add(add1);
- System.out.println(resp1.get_return());
- //async
- Add add2 = new Add();
- add2.setArgs0(5);
- add2.setArgs1(6);
- MathCallbackHandler callback = new MyMathCallbackHandler();
- math.startadd(add2, callback);
- //As the method is not sync, can't get result immediately.
- Thread.sleep(1000);
- AddResponse resp2 = (AddResponse)callback.getClientData();
- System.out.println(resp2.get_return());
- }
- }
10,服务端生成代码如下:
是否选择生成Sleleton的接口类都可以,如果勾选,则会多生成一个MathSkeletonInterface类,MathSkeleton类变为该接口类的实现类,在MathMessageReceiverInOut中,由直接调用MathSkeleton类改为调用MathSkeletonInterface接口类,除此之外没有别的变化
MathSkeleton类中需要添加服务端的处理逻辑
- /**
- * MathSkeleton.java
- *
- * This file was auto-generated from WSDL
- * by the Apache Axis2 version: 1.6.2 Built on : Apr 17, 2012 (05:33:49 IST)
- */
- package com.sean;
- public class MathSkeleton implements MathSkeletonInterface {
- public com.sean.AddResponse add(com.sean.Add add0) {
- int a = add0.getArgs0();
- int b = add0.getArgs1();
- int result = a + b;
- AddResponse resp = new AddResponse();
- resp.set_return(result);
- return resp;
- }
- }
- 在Eclipse中使用Axis2插件生成Web Service服务端/客户端
- 在Eclipse中使用Axis2插件生成Web Service服务端/客户端
- 在Eclipse中使用Axis2插件生成Web Service服务端/客户端
- 使用Eclipse自带Web Service插件(Axis1.4)生成Web Service服务端/客户端
- 使用Eclipse自带的Axis1插件生成Web Service服务端/客户端
- Eclipse下web service 服务端、客户端插件安装和使用
- 用AXIS2发布WebService的方法 使用eclipse插件生成服务端和客户端
- 用AXIS2发布WebService的方法 使用eclipse插件生成服务端和客户端
- 在Eclipse中使用Axis2插件自动生成WSDL文件
- 在Eclipse中使用Axis2插件自动生成WSDL文件
- 在Eclipse中使用Axis2插件自动生成WSDL文件
- 使用 Eclipse+Axis2 构建 Web Service 应用(客户端无需生成 Stub 方式)
- 使用Eclipse+Axis2构建Web Service应用(客户端无需生成Stub方式)
- 使用axis2生成webservice服务端和客户端
- [图解教程]Axis2与Eclipse整合开发Web Service之二:WSDL逆向生成服务端
- ]Axis2与Eclipse整合开发Web Service之二:WSDL逆向生成服务端
- ]Axis2与Eclipse整合开发Web Service:WSDL逆向生成服务端
- [图解教程]Axis2与Eclipse整合开发Web Service之二:WSDL逆向生成服务端
- eclipse部署maven web项目到tomcat服务器时,没有将lib、web.xml复制过去的解决办法
- Cucumber java + Webdriver (4) 使用自动化测试的Page对象模式
- UE 上传视频失败
- 必知必会1
- android开发游记:性能测试中内存泄露排查方法与防止泄露编码心得
- 在Eclipse中使用Axis2插件生成Web Service服务端/客户端
- JQuery 级联操作实践
- 分辨率与精度的区别
- tableView手势 监听
- iOS 百度地图之坐标转换
- IOS-文件管理NSFileManager
- 浅谈ServletContext,HttpServletRequest,HttpServletResponse,HttpSession的获取
- Freemarker 使用
- 从零开始写一个小米便签