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++ 实现客户端
分享到:
相关推荐
1. **创建WebService**:在Axis2中,可以通过编写一个简单的Java类并暴露其方法作为Web服务接口。这个类通常会遵循SOAP协议,定义服务操作。例如,你可以创建一个名为`HelloWorldService`的类,包含一个`sayHello`...
7. **部署Web服务**:利用SpringBoot的内嵌HTTP服务器,我们可以将Axis部署在SpringBoot应用中。这通常涉及到配置一个Servlet来处理SOAP请求。 8. **测试Web服务**:使用SOAP客户端工具,如SoapUI,来测试我们的Web...
【标题】中的“基于axis2实现的webservice简单实现(客户端+服务端)”表明了本文将探讨如何使用Apache Axis2框架来创建和消费Web服务。Apache Axis2是Apache软件基金会开发的一个Web服务引擎,它提供了高效且灵活的...
Axis2是Apache软件基金会开发的一个Web服务引擎,它是Apache Axis的第二代产品,提供了更高效、灵活的Web服务实现框架。 在"WebService之axis2案例"中,我们有两个关键部分:服务端(WebService_server)和客户端...
3. **服务部署**:Axis2支持多种部署方式,如AAR(Axis Archive)文件、WAR(Web Application Archive)文件或者直接通过代码部署。AAR文件是包含服务接口、实现和服务配置的特殊ZIP文件。 4. **传输协议**:Axis2...
【标题】:“利用Axis2实现WebService开发与部署” 【描述】:“利用Axis2实现WebService开发与部署-3中方法进行开发” 【标签】:“WebService” 本文将详细讲解如何使用Apache Axis2框架来开发和部署Web ...
标题中的“axis2+spring webservice”指的是使用Apache Axis2框架与Spring框架集成来开发Web服务。Apache Axis2是Java环境中广泛使用的Web服务引擎,它提供了高性能、灵活且可扩展的架构。Spring框架则是一个全面的...
Apache Axis2是Java平台上的一款强大的Web服务开发工具,它提供了高效、灵活且可扩展的环境来构建和部署Web服务。这个例子可能是为了帮助开发者理解和实践如何在实际项目中运用Axis2来构建Web服务。 描述中的“一个...
总的来说, Axis2 提供了一个高效且易用的框架,使得Web服务的开发和部署变得更加简单。理解WSDL,熟悉服务接口的实现,掌握服务的部署和客户端调用,是掌握Axis2开发的关键。同时,利用合适的开发工具,如Eclipse和...
WebService之Axis2实例是Web服务开发中的一个重要环节,它基于SOAP协议,允许不同平台和语言间的应用程序进行通信。本文将详细介绍Axis2实例的创建、配置和运行,以及如何利用Eclipse IDE、JDK 1.7和Tomcat 7.0进行...
这需要将服务类和相关的配置文件打包成一个Axis2模块(.aar文件),然后部署到Axis2服务器上。 5. **测试和调用**:一旦服务被部署,就可以通过Spring的`WebServiceTemplate`或`WebServiceProxyFactoryBean`来测试...
2. **部署服务**: 在`axis2.xml`中配置服务,或者使用更简单的方式——无需任何配置文件即可部署服务。 3. **客户端调用**: 使用Java或.NET客户端调用部署好的Web服务。 **4.2 示例代码** - **服务端代码**: ```...
Axis2是Apache软件基金会的一个用于构建和部署WebService的引擎,它基于Apache Axis项目,并且是Apache Web服务堆栈的最新版本。Axis2支持SOAP和REST风格的WebService,并且能够以最小的资源消耗和高性能来处理SOAP...
标题 "Axis2 开发 WebService" 指的是使用 Apache Axis2 框架在 Eclipse 集成开发环境中创建和部署 WebService 的过程。Apache Axis2 是一个强大的 WebService 引擎,它提供了高性能、灵活且可扩展的架构,支持多种...
Axis使得开发、部署和使用Web服务变得简单,支持SOAP(Simple Object Access Protocol)和WSDL(Web Services Description Language)等关键协议。 在"webservice之axis实例,axis复杂对象"这个主题中,我们将关注...
在Java Web服务开发中,Apache Axis2是一个广泛使用的SOAP(简单对象访问协议)服务框架,它为构建和部署Web服务提供了高效且灵活的解决方案。在本文中,我们将深入探讨如何将Axis2与Spring框架集成,以实现更强大的...