`
micc010
  • 浏览: 71627 次
  • 性别: Icon_minigender_1
  • 来自: 广西
社区版块
存档分类
最新评论

spring的axis axis2 httpinvoker hessian cfx远程调用

    博客分类:
  • java
阅读更多
实体

package com.micc.entity;
import java.io.Serializable;
import java.util.Date;

public class Finger implements Serializable {

	/** */
	private static final long serialVersionUID = 137535894213747943L;
	
	/** 手头的数据 */
	private byte[] fingerData;
	private float data1;
	private double data2;
	private Date data3;
	
	public Date getData3() {
		return data3;
	}

	public void setData3(Date data3) {
		this.data3 = data3;
	}

	public byte[] getFingerData() {
		return fingerData;
	}

	public void setFingerData(byte[] fingerData) {
		this.fingerData = fingerData;
	}

	public float getData1() {
		return data1;
	}

	public void setData1(float data1) {
		this.data1 = data1;
	}

	public double getData2() {
		return data2;
	}

	public void setData2(double data2) {
		this.data2 = data2;
	}

}

package com.micc.entity;

import java.io.Serializable;

public class Micc implements Serializable {

	/** */
	private static final long serialVersionUID = 6419383801409398601L;
	private long pw;

	public long getPw() {
		return pw;
	}

	public void setPw(long pw) {
		this.pw = pw;
	}

}

package com.micc.entity;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

public class Person implements Serializable {

	/** */
	private static final long serialVersionUID = 3677113821106894243L;
	/** 手指 */
	private Finger finger;
	/** 年龄 */
	private int age;
	/** 账户 */
	private List<Micc> account;
	/** 姓名 */
	private String name;
	/** 时间 */
	private Date date;

	public Finger getFinger() {
		return finger;
	}

	public void setFinger(Finger finger) {
		this.finger = finger;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public List<Micc> getAccount() {
		return account;
	}

	public void setAccount(List<Micc> account) {
		this.account = account;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Date getDate() {
		return date;
	}

	public void setDate(Date date) {
		this.date = date;
	}

}

接口及实现

package com.micc.service;

import java.util.List;

import com.micc.entity.Finger;
import com.micc.entity.Micc;

public interface ITestService {
	
	/**
	 * @param p
	 * @return
	 */
	Finger getPersonFinger(String p);
	
	/**
	 * 
	 * 
	 * @param id
	 * @return
	 */
	List<Micc> getPersonAccount(String id);

}

package com.micc.service.spring;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.micc.entity.Finger;
import com.micc.entity.Micc;
import com.micc.entity.Person;
import com.micc.service.ITestService;

public class SpringTestService implements ITestService {

	/**
	 * @see com.micc.axisserver.ITestService.ITestAxisService#getPersonFinger(java.lang.String)
	 */
	@Override
	public Finger getPersonFinger(String id) {
		Person p = new Person();
		
		Finger f= new Finger();
		f.setData1(2.0f);
		f.setData2(2.0D);
		byte[] b= new byte[1];
		b[0] = 1;
		f.setFingerData(b);
		f.setData3(new Date());
		p.setFinger(f);
		return p.getFinger();
	}

	/**
	 * @see com.micc.axisserver.ITestService.ITestAxisService#getPersonAccount(java.lang.String)
	 */
	@Override
	public List<Micc> getPersonAccount(String id) {
		Person p = new Person();
		
		List<Micc> l= new ArrayList<Micc>();
		Micc m1 = new Micc();
		m1.setPw(10l);
		l.add(m1);
		
		Micc m2 = new Micc();
		m2.setPw(11l);
		l.add(m2);
		
		p.setAccount(l);
		return p.getAccount();
	}

}


(一)axis

1服务端
package com.micc.axisserver.webservice;

import java.util.List;

import org.springframework.remoting.jaxrpc.ServletEndpointSupport;

import com.micc.entity.Finger;
import com.micc.entity.Micc;
import com.micc.service.ITestService;

public class TestAxisService extends ServletEndpointSupport implements
		ITestService {

	private ITestService axisService;

	/**
	 * @see org.springframework.remoting.jaxrpc.ServletEndpointSupport#onInit()
	 */
	protected void onInit() {
		this.axisService = (ITestService) getWebApplicationContext()
				.getBean("axisService");
	}

	/**
	 * @see com.micc.axisserver.ITestService.ITestAxisService#getPersonFinger(java.lang.String)
	 */
	@Override
	public Finger getPersonFinger(String id) {
		return this.axisService.getPersonFinger(id);
	}

	/**
	 * @see com.micc.axisserver.ITestService.ITestAxisService#getPersonAccount(java.lang.String)
	 */
	@Override
	public List<Micc> getPersonAccount(String id) {
		return this.axisService.getPersonAccount(id);
	}

}

<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
	xmlns="http://xml.apache.org/axis/wsdd/">
	<handler type="java:org.apache.axis.handlers.http.URLMapper"
		name="URLMapper" />

	<service name="TAxisWebService" provider="java:RPC">
		<parameter name="allowedMethods" value="getPersonFinger,getPersonAccount" />
		<parameter name="className"
			value="com.micc.axisserver.webservice.TestAxisService" />

		<beanMapping qname="myNS:Finger" xmlns:myNS="TAxisWebService"
			languageSpecificType="java:com.micc.entity.Finger"
			encodingStyle=" http://schemas.xmlsoap.org/soap/encoding/"
            serializer=" org.apache.axis.encoding.ser.BeanSerializerFactory"
            deserializer=" org.apache.axis.encoding.ser.BeanDeserializerFactory">
		</beanMapping>

		<beanMapping qname="myNS:Micc" xmlns:myNS="TAxisWebService"
		    encodingStyle=" http://schemas.xmlsoap.org/soap/encoding/"
            serializer=" org.apache.axis.encoding.ser.BeanSerializerFactory"
            deserializer=" org.apache.axis.encoding.ser.BeanDeserializerFactory"
			languageSpecificType="java:com.micc.entity.Micc">
		</beanMapping>

		<beanMapping qname="myNS:Person" xmlns:myNS="TAxisWebService"
		    encodingStyle=" http://schemas.xmlsoap.org/soap/encoding/"
		    serializer=" org.apache.axis.encoding.ser.BeanSerializerFactory"
		    deserializer=" org.apache.axis.encoding.ser.BeanDeserializerFactory"
			languageSpecificType="java:com.micc.entity.Person">
		</beanMapping>

	</service>

	<transport name="http">
		<requestFlow>
			<handler type="URLMapper" />
		</requestFlow>
	</transport>
</deployment>

<listener> <listener-class>org.apache.axis.transport.http.AxisHTTPSessionListener</listener-class> 
</listener>
<servlet> <display-name>Apache-Axis Servlet</display-name> <servlet-name>AxisServlet</servlet-name> 
		<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class> 
		</servlet> <servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>/servlet/AxisServlet</url-pattern> 
		</servlet-mapping> <servlet-mapping> <servlet-name>AxisServlet</servlet-name> 
		<url-pattern>*.jws</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>AxisServlet</servlet-name> 
		<url-pattern>/services/*</url-pattern> </servlet-mapping>
<session-config> <session-timeout>30</session-timeout> </session-config> 
		<mime-mapping> <extension>wsdl</extension> <mime-type>text/xml</mime-type> 
		</mime-mapping> <mime-mapping> <extension>xsd</extension> <mime-type>text/xml</mime-type> 
		</mime-mapping>

2客户端
package test;

import java.util.List;

import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;

import org.apache.axis.Constants;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.ser.BeanDeserializerFactory;
import org.apache.axis.encoding.ser.BeanSerializerFactory;

import com.micc.entity.Finger;
import com.micc.entity.Micc;

public class TestAxisWs {

	/**
	 * @param args
	 */
	@SuppressWarnings("unchecked")
	public static void main(String[] args) {
		try {
			String wsdlUrl = "http://localhost:8080/webservice/services/TAxisWebService?wsdl";
			String nameSpaceUri = "http://localhost:8080/webservice/services/TAxisWebService";
			// 创建调用对象
			Service service = new Service();
			Call call = null;
			call = (Call) service.createCall();

			System.out.println(">>>getPersonFinger");
			call.setOperationName(new QName(nameSpaceUri, "getPersonFinger"));
			call.setTargetEndpointAddress(new java.net.URL(wsdlUrl));
			QName qn1 = new QName("TAxisWebService", "Finger");
			call.registerTypeMapping(Finger.class, qn1,
					new BeanSerializerFactory(Finger.class, qn1),
					new BeanDeserializerFactory(Finger.class, qn1));
			call.addParameter("p", Constants.XSD_STRING, ParameterMode.IN);
			call.setReturnType(new QName(nameSpaceUri), Finger.class);
			call.setReturnClass(Finger.class);
			Finger ret1 = (Finger) call.invoke(new Object[] { "ABC" });
			System.out.println("return value is " + ret1);

			System.out.println(">>>getPersonAccount");
			call.setOperationName(new QName(nameSpaceUri, "getPersonAccount"));
			call.setTargetEndpointAddress(new java.net.URL(wsdlUrl));
			QName qn2 = new QName("TAxisWebService", "Micc");
			call.registerTypeMapping(Micc.class, qn2,
					new BeanSerializerFactory(Micc.class, qn2),
					new BeanDeserializerFactory(Micc.class, qn2));
			call.setReturnType(new QName(nameSpaceUri), List.class);
			call.setReturnClass(List.class);
			List<Micc> ret2 = (List<Micc>) call.invoke(new Object[] { "ABC" });
			System.out.println("return value is " + ret2);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

(二)httpinvoker

1服务端

<!-- 将业务服务bean暴露成远程服务 -->
    <bean name="/TestService"
        class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
        <!-- 指定需要暴露的业务服务bean -->
        <property name="service" ref="testService" />
        <!-- 指定暴露的远程服务实现的接口 -->
        <property name="serviceInterface" value="com.micc.service.ITestService" />
    </bean>

<servlet-mapping>
		<servlet-name>spring</servlet-name>
		<url-pattern>/remoting/*</url-pattern>
	</servlet-mapping>

2客户端

<!-- 配置连接远程服务的bean -->

	<bean id="testService"
		class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
		<!-- 远程服务的url -->
		<property name="serviceUrl"
			value="http://localhost:8080/webservice/remoting/TestService" />
		<!-- 远程服务所实现的接口 -->
		<property name="serviceInterface" value="com.micc.service.ITestService" />
		<!-- 指定使用Commons HttpClient功能 -->
		<property name="httpInvokerRequestExecutor">
			<bean class="org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor" />
		</property>
	</bean>

package test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.micc.service.ITestService;

public class TestHttpInvoker {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext("/httpinvoker.cfg.xml");
		
		ITestService test = (ITestService) context.getBean("testService");
		
		System.out.println(">>>getPersonFinger");
		System.out.println("return value is " + test.getPersonFinger("11"));
		
		System.out.println(">>>getPersonAccount");
		System.out.println("return value is " + test.getPersonAccount("11"));
		
	}

}

分享到:
评论

相关推荐

    Hessian 、 HttpInvoker 、 XFire 、 Axis

    Hessian、HttpInvoker、XFire和Axis是四种常见的远程调用框架,它们各自有不同的特性和应用场景。 Hessian是一种轻量级的二进制RPC协议,它通过HTTP进行传输,减少了网络开销,提高了服务调用效率。Hessian提供了...

    AXIS2远程调用WebService示例(Eclipse+AXIS2)工具和所用包.rar

    3. 创建一个客户端应用程序,可以是另一个Java项目,使用AXIS2的Stub类来调用远程WebService。 **步骤6:调用WebService** 1. 在客户端项目中,使用AXIS2的Stub类(由WSDL生成)来实例化服务代理。 2. 通过代理对象...

    axis2客户端调用axis1服务接口

    axis2客户端调用axis1服务接口 调用方式 使用RPC方式调用WebService,为了防止冲突可以增加 // 与weblogic的lib冲突配置 System.setProperty("javax.xml.stream.XMLInputFactory", ...

    axis2+spring webservice

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

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

    这样,Spring会自动创建一个代理对象,用于调用远程服务。 4. **部署和发布服务**:如果我们要在Spring中发布一个Web服务,可以使用Axis2的`SpringServiceDeployer`。这需要将服务类和相关的配置文件打包成一个Axis...

    spring axis2整合

    整合Spring和Axis2的主要目的是利用Spring的灵活性和管理能力来控制Axis2的生命周期,以及通过Spring的IoC容器管理Web服务的部署和调用。这样可以避免在代码中硬编码Web服务客户端和服务器端的实例化,使得代码更加...

    axis2发布webservice和调用axis2服务接口

    本文将详细讲解如何使用Axis2来发布Web服务以及如何生成客户端代码来调用这些服务。 首先,让我们了解发布Web服务的过程: 1. **创建WebService**:在Axis2中,可以通过编写一个简单的Java类并暴露其方法作为Web...

    spring-axis2-test.rar_Axis2 Spring3_axis2_axis2 spring3_axis2 s

    标题中的“spring-axis2-test.rar_Axis2 Spring3_axis2_axis2 spring3_axis2 s”指的是一个关于Spring和Axis2集成的示例项目,它包含了一组用于演示如何在Spring框架中使用Apache Axis2来开发和部署Web服务的源代码...

    Spring集成AXIS2的Web_service配置方法

    Spring 集成 AXIS2 的 Web service 配置方法 Spring 是一个流行的 Java 应用程序框架,它提供了一个灵活的方式来构建企业级应用程序。AXIS2 是一个流行的 Web Service 引擎,它提供了一个强大的方式来构建 Web ...

    cxf与axis2区别

    CXF与Axis2框架区别详解 CXF和Axis2是两个流行的Webservice框架,都是由现有的项目逐渐演化而来的。Axis2是由Axis1.x系列演化而来,而Apache CXF则是由Celtix和XFire项目整合而生。在本文中,我们将探讨CXF和Axis2...

    Java+Axis2调用Web Services 网络接口

    总的来说,Java和Axis2的结合提供了一种强大而灵活的方式来调用Web服务,允许开发者轻松地集成远程功能到自己的应用程序中。通过理解这些概念和实践,你可以更好地利用Web服务接口,提升应用的扩展性和互操作性。

    springboot集成axis2-1.7.9实例

    在本文中,我们将深入探讨如何将Apache Axis2与Spring Boot集成,以构建一个...这个实例展示了如何在Spring Boot应用中集成和调用Axis2服务,通过理解这些关键步骤,你可以根据需求扩展和定制自己的Web服务解决方案。

    axis2客户端调用webService接口,精简jar包

    4. **调用服务**: 使用Stub实例的方法调用远程服务,传递参数并接收返回值。 在实际应用中,为了调用Web服务,我们通常需要引用一系列的Axis2相关的jar包。然而,这些jar包往往数量众多,可能会增加项目的体积。...

    Spring整合axis2经典

    Spring整合Axis2经典案例解析 在Java Web服务开发中,Spring框架和Apache Axis2是两个重要的组件。Spring作为一款强大的企业级应用框架,提供了一种模块化、灵活的方式来构建应用程序,而Axis2则是Apache组织提供的...

    myService_purpose1sv_cxf调用axis2的接口服务_接口服务_

    在这个场景中,我们关注的是如何使用Apache CXF框架来调用由Axis2提供的接口服务。Apache CXF和Axis2都是流行的开放源码服务框架,它们各自在Web服务领域有着广泛的应用。 Apache CXF是一个强大的服务框架,它允许...

    cxf客户端调用axis服务端流程

    Axis1.x版本是较老的实现,而Axis2是其后续版本,提供了更好的性能和模块化设计。 ### 二、CXF客户端调用Axis服务端步骤 #### 1. 获取服务端WSDL 首先,你需要获取Axis服务端的WSDL(Web Service Definition ...

    Spring+Axis2例子

    Spring 和 Axis2 是两个在Java世界中非常重要的技术框架,它们分别在企业级应用开发和服务化方面发挥着关键作用。Spring 是一个全面的后端开发框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)...

    Axis2与Spring整合发布多个WebService

    在IT行业中,开发Web服务是常见的任务,而Axis2和Spring框架的整合为开发者提供了强大的工具来实现这一目标。本文将深入探讨如何利用这两个技术来发布多个WebService,并着重讲解项目管理和整合过程。 首先,让我们...

    spring3 + axis2

    【标题】"Spring3 + Axis2" 在Java世界中,Spring框架是企业级应用开发的首选,而Axis2则是Apache组织提供的一个强大的Web服务引擎,主要用于构建和部署Web服务。"Spring3 + Axis2"的组合是将Spring的依赖注入(DI...

Global site tag (gtag.js) - Google Analytics