eclipse中用wsdl2java_在Eclipse中使用Axis2插件WSDL生成Web Service服务端/客户端

本文介绍了如何在Eclipse Juno中使用Axis2插件,通过WSDL文件生成Web Service服务端和客户端代码。详细步骤包括选择Java工程、配置生成选项、手动添加依赖到Build Path以及展示生成的客户端和服务端代码示例。服务端代码包含处理逻辑,而客户端代码展示了同步和异步调用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JDK版本:1.7update65

Eclipse版本:Juno Service Release 2(4.2.2)

2,创建一个普通的Java工程,用来存放自动生成的Web Service服务端/客户端代码

3,选择Eclipse菜单栏中的File -> New -> Other...,在弹出的对话框中选择Axis2 Code Generator,然后选择Next

d745023a66681ba400f3aa8c31112b99.png

4,选择通过WSDL文件生成Java源代码

61fc3b940e32768bd76a563c1f2b90d9.png

5,选择生成好的WSDL文件

a34348dc6ed1c562b770982a37de8c3d.png

6,如果Codegen option选择default,则不可修改下面的配置项,默认生成Web Service客户端,如果Codegen option选择custom,则可以手动修改下面的配置项

918bba11ba3b0df5a5e3eaffe01e71a5.png

7,选择将自动生成的Java代码保存在Eclipse当前工作空间中的特定工程中

72f8e76494d519b522034a078741d239.png

8,虽然Axis2依赖的jar包加到了工程中,但是并没有添加到工程的Build Path中,需要手动添加一下

a5fb6f3930c28c0367955c0a1c51c343.png

9,客户端生成代码如下:

af19540a703ccf767905437c45c3ee6a.png

生成的时候选择同时生成同步方法和异步方法,同步方法比较简单,就不多说了,这里看下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,服务端生成代码如下:

614cd77dab4938ad0c5a4b030c7cdaae.png

是否选择生成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;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值