axis2之实现方式xmlbeans
2015-08-27 19:59
190 查看
axis2数据绑定有好多种方式,其中xmlbeans是一种方式。由于手写工作量太大,所以利用eclipse插件axis2 Wizards 生成客户端。
插件下载地址:
下载eclipse axis2插件
http://mirror.bjtu.edu.cn/apache/axis/axis2/java/core/1.6.2/
安装就不做说明了。
环境:eclipse
第一步、贴上代码
新建一个web工程server
创建类AyncService,代码如下
[java] view
plaincopy
package com.bing.service;
public class AyncService {
public String sayHello(String name) {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return name+",你好";
}
}
利用自带的axis2 Wizards> Axis2 Service Archiver生成jar包或者aar包
可参考axis2-1.6.2-docs 文档中关于axis2 Wizards向导的使用(28 Tools/Plug-ins)
注意:1)注意class存放路径,我的是:C:\workspace\lu\server\build\classes
2) AyncService 要全路径
3)生成jar包或者aar包都可以
第二步、把生成的asyn.jar复制到你已经启动的%CATALINA_HOME%/webapps/axis2/WEB-INF/services/目录下。
能够正常访问wsdl。
第三步、生成客户端
新建web项目client
利用axis2 Wizards >Axis2 Code Generator。具体使用参考docs文档吧!
注意:1)需要第二步发布出去的wsdl地址:比如我的地址是 http://localhost:8080/axis2/services/asynService?wsdl
2)选择Codegen Option 为custom。不是默认的default。然后再选择Databinding Name 为xmlbeans
3)选择生成路径为client项目
4)导入axis2必要的jar包。(axis2-1.6.2-bin中lib下的jar包)
生成后的client截图为
[java] view
plaincopy
package com.bing.service.impl;
import com.bing.service.AsynServiceCallbackHandler;
import com.bing.service.SayHelloResponseDocument;
public class MyCallBack extends AsynServiceCallbackHandler {
@Override
public Object getClientData() {
System.out.println("---获得数据---");
return super.getClientData();
}
@Override
public void receiveResultsayHello(SayHelloResponseDocument result) {
System.out.println("---接受数据成功---");
System.out.println(result.getSayHelloResponse().getReturn());
}
@Override
public void receiveErrorsayHello(Exception e) {
System.out.println("---获得数据失败---");
}
}
特别注意,需要把一开始生成的resources中schemaorg_apache_xmlbeans文件夹复制到build/classes目录下。即加载类包
第四步、编写MyCallBack 实现AsynServiceCallbackHandler
[java] view
plaincopy
package com.bing.service.impl;
import com.bing.service.AsynServiceCallbackHandler;
import com.bing.service.SayHelloResponseDocument;
public class MyCallBack extends AsynServiceCallbackHandler {
@Override
public Object getClientData() {
System.out.println("---获得数据---");
return super.getClientData();
}
@Override
public void receiveResultsayHello(SayHelloResponseDocument result) {
System.out.println("---接受数据成功---");
System.out.println(result.getSayHelloResponse().getReturn());
}
@Override
public void receiveErrorsayHello(Exception e) {
System.out.println("---获得数据失败---");
}
}
第五步、客户端测试代码
TestClient.java
[java] view
plaincopy
import java.rmi.RemoteException;
import org.apache.axis2.AxisFault;
import com.bing.service.AsynServiceStub;
import com.bing.service.SayHelloDocument;
import com.bing.service.SayHelloResponseDocument;
import com.bing.service.impl.MyCallBack;
public class TestClient {
/**
* @param args
*/
public static void main(String[] args) {
try {
AsynServiceStub stub=new AsynServiceStub(null,"http://localhost:8080/axis2/services/asynService?wsdl");
SayHelloDocument reqDoc=SayHelloDocument.Factory.newInstance();
reqDoc.addNewSayHello();
reqDoc.getSayHello().setName("大兵哥");
SayHelloResponseDocument resDoc=stub.sayHello(reqDoc);
MyCallBack callback=new MyCallBack();
stub.startsayHello(reqDoc,callback);
synchronized(callback){
while(!callback.isFinished){
callback.wait(100l);
}
System.out.println("End");
}
} catch (AxisFault e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}catch (InterruptedException e) {
e.printStackTrace();
}
}
}
控制台:
[plain] view
plaincopy
---接受数据成功---
大兵哥,你好
End
插件下载地址:
下载eclipse axis2插件
http://mirror.bjtu.edu.cn/apache/axis/axis2/java/core/1.6.2/
安装就不做说明了。
环境:eclipse
第一步、贴上代码
新建一个web工程server
创建类AyncService,代码如下
[java] view
plaincopy
package com.bing.service;
public class AyncService {
public String sayHello(String name) {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return name+",你好";
}
}
利用自带的axis2 Wizards> Axis2 Service Archiver生成jar包或者aar包
可参考axis2-1.6.2-docs 文档中关于axis2 Wizards向导的使用(28 Tools/Plug-ins)
注意:1)注意class存放路径,我的是:C:\workspace\lu\server\build\classes
2) AyncService 要全路径
3)生成jar包或者aar包都可以
第二步、把生成的asyn.jar复制到你已经启动的%CATALINA_HOME%/webapps/axis2/WEB-INF/services/目录下。
能够正常访问wsdl。
第三步、生成客户端
新建web项目client
利用axis2 Wizards >Axis2 Code Generator。具体使用参考docs文档吧!
注意:1)需要第二步发布出去的wsdl地址:比如我的地址是 http://localhost:8080/axis2/services/asynService?wsdl
2)选择Codegen Option 为custom。不是默认的default。然后再选择Databinding Name 为xmlbeans
3)选择生成路径为client项目
4)导入axis2必要的jar包。(axis2-1.6.2-bin中lib下的jar包)
生成后的client截图为
[java] view
plaincopy
package com.bing.service.impl;
import com.bing.service.AsynServiceCallbackHandler;
import com.bing.service.SayHelloResponseDocument;
public class MyCallBack extends AsynServiceCallbackHandler {
@Override
public Object getClientData() {
System.out.println("---获得数据---");
return super.getClientData();
}
@Override
public void receiveResultsayHello(SayHelloResponseDocument result) {
System.out.println("---接受数据成功---");
System.out.println(result.getSayHelloResponse().getReturn());
}
@Override
public void receiveErrorsayHello(Exception e) {
System.out.println("---获得数据失败---");
}
}
特别注意,需要把一开始生成的resources中schemaorg_apache_xmlbeans文件夹复制到build/classes目录下。即加载类包
第四步、编写MyCallBack 实现AsynServiceCallbackHandler
[java] view
plaincopy
package com.bing.service.impl;
import com.bing.service.AsynServiceCallbackHandler;
import com.bing.service.SayHelloResponseDocument;
public class MyCallBack extends AsynServiceCallbackHandler {
@Override
public Object getClientData() {
System.out.println("---获得数据---");
return super.getClientData();
}
@Override
public void receiveResultsayHello(SayHelloResponseDocument result) {
System.out.println("---接受数据成功---");
System.out.println(result.getSayHelloResponse().getReturn());
}
@Override
public void receiveErrorsayHello(Exception e) {
System.out.println("---获得数据失败---");
}
}
第五步、客户端测试代码
TestClient.java
[java] view
plaincopy
import java.rmi.RemoteException;
import org.apache.axis2.AxisFault;
import com.bing.service.AsynServiceStub;
import com.bing.service.SayHelloDocument;
import com.bing.service.SayHelloResponseDocument;
import com.bing.service.impl.MyCallBack;
public class TestClient {
/**
* @param args
*/
public static void main(String[] args) {
try {
AsynServiceStub stub=new AsynServiceStub(null,"http://localhost:8080/axis2/services/asynService?wsdl");
SayHelloDocument reqDoc=SayHelloDocument.Factory.newInstance();
reqDoc.addNewSayHello();
reqDoc.getSayHello().setName("大兵哥");
SayHelloResponseDocument resDoc=stub.sayHello(reqDoc);
MyCallBack callback=new MyCallBack();
stub.startsayHello(reqDoc,callback);
synchronized(callback){
while(!callback.isFinished){
callback.wait(100l);
}
System.out.println("End");
}
} catch (AxisFault e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}catch (InterruptedException e) {
e.printStackTrace();
}
}
}
控制台:
[plain] view
plaincopy
---接受数据成功---
大兵哥,你好
End
相关文章推荐
- C/C++编程题之大数相乘
- Hibernate3使用(三)Spring整合Hibernate自动扫描
- Android开发中Activity跳转动画以及finish动画
- linux下执行aapt时,提示/usr/lib/libz.so.1 no version information available
- 什么是自动装箱?和自动拆箱?
- HDU 1568 Fibonacci(科学计数法+对数)
- hdu 1690 Bus System
- 关于android客户端的导航栏(toolbar)
- Android菜单
- python---序列可使用的内建函数(BIFs)
- 手势识别器
- django ajax使用
- ios-QQ界面(利用新浪微博方法实现,消除新浪微博重复计算的缺点)
- 安卓开发笔记——打造属于自己的博客园APP(四)
- Linux下配置DHCP服务器
- c++—————————const
- iOS:NSDate的主要几种时间形式
- 聊聊大麦网UWP版的首页顶部图片联动效果的实现方法
- Android的启动模式(上)
- MySQL数据库自带备份与恢复工具:MySQLdump.exe与mysql.exe