axis2之实现方式xmlbeans
来源:互联网 发布:战舰世界数据查询 编辑:程序博客网 时间:2024/06/06 04:35
axis2数据绑定有好多种方式,其中xmlbeans是一种方式。由于手写工作量太大,所以利用eclipse插件axis2 Wizards 生成客户端。
插件下载地址:
下载eclipse axis2插件
http://mirror.bjtu.edu.cn/apache/axis/axis2/java/core/1.6.2/
安装就不做说明了。
环境:eclipse
第一步、贴上代码
新建一个web工程server
创建类AyncService,代码如下
- 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截图为
- 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
- 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
- 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();
- }
- }
- }
控制台:
- ---接受数据成功---
- 大兵哥,你好
- End
- axis2之实现方式xmlbeans
- axis2之实现方式xmlbeans
- axis2之实现方式xmlbeans
- Axis2之xmlbeans
- XmlBeans之scomp
- WebService之RPC的(Axis2、CXF、Jersey、Hessian)4中实现方式
- xmlbeans
- 使用Axis2开发Web服务 --- 使用XmlBeans建立客户端
- XmlBeans之scomp 参数说明
- Web Service之Axis2实现概要
- Axis2: 用Axis2的0配置方式实现第一个WebService(1)
- 实现axis2两种不同方式的客户端
- AXIS2 五种服务端实现方式的优缺点比较
- 实现axis2两种不同方式的客户端
- 带有安全机制的axis2实现方式(一)
- 带有安全机制的axis2实现方式(二)
- 带有安全机制的axis2实现方式(三)
- 实现axis2两种不同方式的客户端
- c++—————————const
- 解决Mac上PyDev无法导入某些模块的问题
- hdu 1690 Bus System
- Android开发中Activity跳转动画以及finish动画
- 关于android客户端的导航栏(toolbar)
- axis2之实现方式xmlbeans
- Problem 2128 最长子串 (KMP+字符串 好题)
- Android菜单
- C/C++编程题之大数相乘
- 我的确是我自己
- LoadRunner Controller无法创建Vuser。确保您的Load Generator可用并且脚本有效
- android 休眠唤醒机制分析(一)
- checkbox选择并批量删除的JSP源码和后台的交互的应用心得
- 如何安装安装nginx软件--nginx的自动安装