您的位置:首页 > 编程语言 > Java开发

webservice 开发 axis2 简单部署服务

2017-05-09 00:00 351 查看
axis2-1.4.1 下的
axis2.war 放到tomcat下

简单编写一个服务,供给系统外部调用

import java.util.Random;

public class SimpleService {

public String getGreeting(String name) {
return "你好 "+name;
}

public int getPrice() {
return new Random().nextInt(1000);
}
}


SimpleService.class 放到 WEB-INF/pojo 下
就这么简单 就构成了一个服务

客户端(Java):

package client;

import java.rmi.RemoteException;
import java.util.Iterator;

import javax.xml.namespace.QName;

import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.rpc.client.RPCServiceClient;

public class RPCClient {

public static void main(String[] args) throws RemoteException {

//RPC 方式调用 服务端
//runRPC();

//Axiom 方式调用 服务端
//runAxiom();

//wsdl2java.bat -uri http://localhost:8080/axis2/services/SimpleService?wsdl -p client -s -o stub
//工具自动生成
SimpleServiceStub stub = new SimpleServiceStub();
SimpleServiceStub.GetGreeting gg = new SimpleServiceStub.GetGreeting();
gg.setName("超人");
System.out.println(stub.getGreeting(gg).get_return());
System.out.println(stub.getPrice().get_return());
}

/**
* RPC方式调用 服务
* <功能详细描述>
* @throws AxisFault
* @throws Exception
* @see [类、类#方法、类#成员]
*/
public static void runRPC() throws AxisFault {
// 使用 RPC方式调用 webservcie
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();

// 指定调用 WebService 的URTL
EndpointReference taretEPR = new EndpointReference(
"http://localhost:8080/axis2/services/SimpleService");
options.setTo(taretEPR);

//指定 getGreeting方法的参数值
Object[] opAddEntryArgs =  new Object[]{"超人"};
//指定 getGreeting方法的返回值的数据类型的class对象
Class[] classes = new Class[]{String.class};
//指定 要调用的 getGreeting方法及WSDL文件的命名空间
QName opAddEntry = new QName("http://ws.apache.org/axis2","getGreeting");

//调用getGreeting方法并输出该方法的返回值
System.out.println(serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs,classes)[0]);

classes = new Class[]{int.class};
opAddEntry = new QName("http://ws.apache.org/axis2","getPrice");
System.out.println(serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs,classes)[0]);
}

/**
* axiom 方式调用服务端
* <功能详细描述>
* @throws AxisFault
* @throws Exception
* @see [类、类#方法、类#成员]
*/
public static void runAxiom() throws AxisFault {

// 指定调用 WebService 的URTL
EndpointReference taretEPR = new EndpointReference(
"http://localhost:8080/axis2/services/SimpleService");

//使用 axiom方式访问
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs = fac.createOMNamespace("http://ws.apache.org/axis2", "tns");
OMElement method = fac.createOMElement("getGreeting",omNs);
OMElement param1 = fac.createOMElement("name",omNs);
param1.addChild(fac.createOMText(param1,"超人"));
method.addChild(param1);

Options options = new Options();
options.setTo(taretEPR);
options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

ServiceClient axiomClient = new ServiceClient();
axiomClient.setOptions(options);

//开始访问
axiomClient.fireAndForget(method);
//1
OMElement result = axiomClient.sendReceive(method);
System.out.println("1:axiom客户端方式访问结果第一个element:"+result.getFirstElement().getText());

//2或者用下面遍历的方式获取访问结果
Iterator<OMElement> it=result.getChildElements();
while(it.hasNext()){
OMElement ome=(OMElement)it.next();
if(ome!=null){
String omevalue=ome.getText();
if (omevalue != null) {
System.out.println("2:axiom客户端方式访问结果:"+omevalue);
}
}

}

//3使用QName参数
QName qname = new QName("http://device.axis2.hd.org",
"getGreeting");
result.getFirstChildWithName(qname);
System.out.println("3:axiom客户端方式QName访问结果第一个element:"+result.getFirstElement().getText());

}
}

结果:
[INFO] Deploying module: metadataExchange - file:/E:/workspacetest/axis2/WebRoot/WEB-INF/lib/mex-1.4.1.jar
你好 超人
380

下一篇 使用 gsoap 生成客户端 C/C++ 实现客户端

webservice 开发 axis2 简单部署服务 gSoap 客户端通信

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  axis2 java webservice
相关文章推荐