axis2新建和调用webservice

 

axis2.war发布到tomcat的webapps下面
1server
下面这个java要放到src中.没有package
public class HelloWorld{
public String getName(String name)
{
return "你好 " + name;
}   
public int add(int a,int b)
{
return a+b;
}   
}

把HelloWorld.class放到
axis2\WEB-INF\pojo下面,没有pojo自己新建这个文件夹
下面http://localhost:8080/axis2/services/listServices
可以看到刚才发布的服务
2client

package localhost.send;

import java.util.Iterator;
import javax.xml.namespace.QName;
import org.apache.axiom.om.OMAttribute;
import org.apache.axiom.om.OMElement;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;

public class QuickStartClient {

 //测试
 public static void main(String[] args) {

 QuickStartClient client=new QuickStartClient();
 int num=client.add(12,35);
 String hello=client.sayHello("feeler!");
 System.out.println(num);
 System.out.println(hello);
 }

// 调用axis2下HelloWorld服务的add操作
public int add(int x,int y)
{
int sum=0;
// webService的调用地址
String srvcUrl = "http://localhost:8080/axis2/services/HelloWorld";
// 操作的命名空间+“:”+操作名
QName qname = new QName("http://ws.apache.org/axis2", "add"); //这句话是固定的,为什么呢 这个与wsdl中的targetNamespace="http://ws.apache.org/axis2"
//对应
// 传递的参数对象集
Object param[] = new Object[] {x,y};
try {
// 实例化远程服务调用客户端对象
RPCServiceClient client = new RPCServiceClient();
// 实例化Options对象
Options options = new Options();
// 设置Options对象的连接终端地址
options.setTo(new EndpointReference(srvcUrl));
// 设置Options对象的操作事件对象
options.setAction("urn:add");
// 为远程服务调用客户端对象设置Options子对象
client.setOptions(options);
// 传递参数,调用服务,获取服务返回结果集
OMElement element = client.invokeBlocking(qname, param);
// 获取返回结果集中第一条结果的返回内容
String result=element.getFirstElement().getText();
// 字符串转换为整型
sum= Integer.parseInt(result); 
}
// 捕捉异常
catch (AxisFault e) {
e.printStackTrace();
}
// 返回内容
return sum;
}
// 调用axis2下HelloWorld服务的getName操作
public String sayHello(String name)
{
String result=null;
String srvcUrl = "http://localhost:8080/axis2/services/HelloWorld";
QName qname = new QName("http://ws.apache.org/axis2", "getName");
Object param[] = new Object[] { name };
try {
RPCServiceClient client = new RPCServiceClient();
Options options = new Options();
options.setTo(new EndpointReference(srvcUrl));
options.setAction("urn:getName");
client.setOptions(options);
OMElement element = client.invokeBlocking(qname, param);

result=element.getFirstElement() .getText();

}
catch (AxisFault e) {
e.printStackTrace();
}
return result;
}}

结果:

47
你好 feeler!

 

参考http://blog.csdn.net/crazystone4/article/details/4285672

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值