webservice搭建及客户端调用

一、webservice搭建(这里我们采用axis2)

1、建立一个web应用项目,在web-inf目录下创建如下结构

这里的conf和modules目录可以忽略,主要是需要创建一个services目录,在其目录下有两个文件services.list和version-1.6.2.aar,这两个文件可以到axis2官网下载axis2-1.6.2-war.zip,在这个war包中web-inf目录下有我们需要的文件

2、在services目录下,再创建一个目录叫PHServices(自主命名),里面建立META-INF目录,最后配置我们需要的services.xml文件,services.xml内容如下

(1)其中name=“TransferService”代表的是webservice的名字,targetNamespace命名空间对应的是webservice实现类包名的反序

(2)在messageReceivers定义中,分别有mep= "http://www.w3.org/2004/08/wsdl/in-only"和mep= "http://www.w3.org/2004/08/wsdl/in-out",in-only代表的含义是在webservice接口中定义的方法是没有返回值的,也就是方法体声明的是void类型,in-out代表的则是方法体都是返回值的。

3、在web-inf目录下面创建一个applicationContext.xml文件,目的是定义webservice实现类对应的bean

4、引入axis2需要的jar文件(axis2-spring、axis2-jaxws、axiom-impl、axiom-api、axis2-adb、axis2-kernel、axis2-transport-http、axis2-transport-local、neethi、XmlSchema),即webservice服务搭建完毕。

二、采用axis2客户端调用webservice服务

1、可以直接通过webservice client生成客户端代码,调用webservice服务,这种方法简单,但是生成的代码不易于重用。

2、axis2异步调用webservice服务,直接上代码。

public class ClientTest {
private static EndpointReference targetEPR = new EndpointReference("http://172.16.1.201:2057/MessageService.svc?wsdl");

public static void main(String[] args) throws Exception {
ClientTest s = new ClientTest();
s.getResult();
}

public void getResult() throws Exception {
ServiceClient sender = new ServiceClient();
sender.setOptions(buildOptions());
OMElement method = sender.sendReceive(buildParam());
System.out.println(method.toString());
}

private static OMElement buildParam() {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs = fac.createOMNamespace("http://tempuri.org/", "ns");
OMElement method = fac.createOMElement("QueryRoadCondition", omNs);
OMElement value = fac.createOMElement("start", omNs);
value.setText("2013-12-30T17:58:00");
method.addChild(value);
OMElement value1 = fac.createOMElement("end", omNs);
value1.setText("2013-12-30T19:50:00");
method.addChild(value1); 
return method;
}

private static Options buildOptions() {
Options options = new Options();
options.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
options.setAction("http://tempuri.org/IMessageService/QueryRoadCondition");
options.setTo(targetEPR);
options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
return options;
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值