axis2之实现方式xmlbeans

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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值