`

webservice 开发 axis2 简单部署服务

阅读更多

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发布webservice和调用axis2服务接口

    1. **创建WebService**:在Axis2中,可以通过编写一个简单的Java类并暴露其方法作为Web服务接口。这个类通常会遵循SOAP协议,定义服务操作。例如,你可以创建一个名为`HelloWorldService`的类,包含一个`sayHello`...

    SpringBoot开发WebService之Axis示例

    7. **部署Web服务**:利用SpringBoot的内嵌HTTP服务器,我们可以将Axis部署在SpringBoot应用中。这通常涉及到配置一个Servlet来处理SOAP请求。 8. **测试Web服务**:使用SOAP客户端工具,如SoapUI,来测试我们的Web...

    基于axis2实现的webservice简单实现(客户端+服务端)。

    【标题】中的“基于axis2实现的webservice简单实现(客户端+服务端)”表明了本文将探讨如何使用Apache Axis2框架来创建和消费Web服务。Apache Axis2是Apache软件基金会开发的一个Web服务引擎,它提供了高效且灵活的...

    WebService之axis2案例

    Axis2是Apache软件基金会开发的一个Web服务引擎,它是Apache Axis的第二代产品,提供了更高效、灵活的Web服务实现框架。 在"WebService之axis2案例"中,我们有两个关键部分:服务端(WebService_server)和客户端...

    WebService-Axis2 详细讲解

    3. **服务部署**:Axis2支持多种部署方式,如AAR(Axis Archive)文件、WAR(Web Application Archive)文件或者直接通过代码部署。AAR文件是包含服务接口、实现和服务配置的特殊ZIP文件。 4. **传输协议**:Axis2...

    利用Axis2实现WebService开发与部署

    【标题】:“利用Axis2实现WebService开发与部署” 【描述】:“利用Axis2实现WebService开发与部署-3中方法进行开发” 【标签】:“WebService” 本文将详细讲解如何使用Apache Axis2框架来开发和部署Web ...

    axis2+spring webservice

    标题中的“axis2+spring webservice”指的是使用Apache Axis2框架与Spring框架集成来开发Web服务。Apache Axis2是Java环境中广泛使用的Web服务引擎,它提供了高性能、灵活且可扩展的架构。Spring框架则是一个全面的...

    axis2webservice接口例子

    Apache Axis2是Java平台上的一款强大的Web服务开发工具,它提供了高效、灵活且可扩展的环境来构建和部署Web服务。这个例子可能是为了帮助开发者理解和实践如何在实际项目中运用Axis2来构建Web服务。 描述中的“一个...

    webservice之axis2方式开发总结

    总的来说, Axis2 提供了一个高效且易用的框架,使得Web服务的开发和部署变得更加简单。理解WSDL,熟悉服务接口的实现,掌握服务的部署和客户端调用,是掌握Axis2开发的关键。同时,利用合适的开发工具,如Eclipse和...

    WebService之Axis2实例

    WebService之Axis2实例是Web服务开发中的一个重要环节,它基于SOAP协议,允许不同平台和语言间的应用程序进行通信。本文将详细介绍Axis2实例的创建、配置和运行,以及如何利用Eclipse IDE、JDK 1.7和Tomcat 7.0进行...

    Spring集成axis2实现webservice所用到的包

    这需要将服务类和相关的配置文件打包成一个Axis2模块(.aar文件),然后部署到Axis2服务器上。 5. **测试和调用**:一旦服务被部署,就可以通过Spring的`WebServiceTemplate`或`WebServiceProxyFactoryBean`来测试...

    WebService之Axis2经典教程

    2. **部署服务**: 在`axis2.xml`中配置服务,或者使用更简单的方式——无需任何配置文件即可部署服务。 3. **客户端调用**: 使用Java或.NET客户端调用部署好的Web服务。 **4.2 示例代码** - **服务端代码**: ```...

    axis2_WebService_开发指南

    Axis2是Apache软件基金会的一个用于构建和部署WebService的引擎,它基于Apache Axis项目,并且是Apache Web服务堆栈的最新版本。Axis2支持SOAP和REST风格的WebService,并且能够以最小的资源消耗和高性能来处理SOAP...

    axis2开发webservice

    标题 "Axis2 开发 WebService" 指的是使用 Apache Axis2 框架在 Eclipse 集成开发环境中创建和部署 WebService 的过程。Apache Axis2 是一个强大的 WebService 引擎,它提供了高性能、灵活且可扩展的架构,支持多种...

    webservice之axis实例,axis复杂对象

    Axis使得开发、部署和使用Web服务变得简单,支持SOAP(Simple Object Access Protocol)和WSDL(Web Services Description Language)等关键协议。 在"webservice之axis实例,axis复杂对象"这个主题中,我们将关注...

    java webservice之axis2与spring集成(二)

    在Java Web服务开发中,Apache Axis2是一个广泛使用的SOAP(简单对象访问协议)服务框架,它为构建和部署Web服务提供了高效且灵活的解决方案。在本文中,我们将深入探讨如何将Axis2与Spring框架集成,以实现更强大的...

Global site tag (gtag.js) - Google Analytics