您的位置:首页 > 其它

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: