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

Axis2 Webservice 开发3 -- 对象做参传递

    博客分类:
  • java
阅读更多

1. Weather.java

package com.model;

public class Weather{
    float temperature;
    String forecast;
    boolean rain;
    float howMuchRain;
    
    public Weather() {}
    
    public Weather(float temperature, String forecast, boolean rain,
			float howMuchRain) {
		this.temperature = temperature;
		this.forecast = forecast;
		this.rain = rain;
		this.howMuchRain = howMuchRain;
	}


	public void setTemperature(float temp){
        temperature = temp;
    }

    public float getTemperature(){
        return temperature;
    }
    
    public void setForecast(String fore){
        forecast = fore;
    }

    public String getForecast(){
        return forecast;
    }
    
    public void setRain(boolean r){
        rain = r;
    }

    public boolean getRain(){
        return rain;
    }
    
    public void setHowMuchRain(float howMuch){
        howMuchRain = howMuch;
    }

    public float getHowMuchRain(){
        return howMuchRain;
    }
    
    @Override
    public String toString() {
    	return "{temperature:"+temperature+",forecast:"+forecast+",rain:"+rain+",howMuchRain:"+howMuchRain+"}";
    }
}

 

 

2. server 端代码

package com.service;

import com.model.Weather;

public class WeatherService{
    Weather weather;
    
    /* 特别注意:这里的方法还回类型为void,客户端调用这个方法完成之后,
     * 在处理还回报文时,会产生一个异常
     * org.apache.axis2.AxisFault: The input stream for an incoming message is null.
     */
    public void setWeather(Weather weather){
        this.weather = weather;
    }

    public Weather getWeather(){
        return this.weather;
    }
}
 

 

3. services.xml

<service name="WeatherService" scope="application">
	<description>
		Weather POJO Service
	</description>
	<messageReceivers>
		<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
			class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
		<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
			class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
	</messageReceivers>
	<parameter name="ServiceClass">
		com.service.WeatherService
	</parameter>
</service>
 

 

4. 客户端代码

package com.client;

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.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.databinding.utils.BeanUtil;
import org.apache.axis2.engine.DefaultObjectSupplier;

import com.model.Weather;

public class TestSoap {
	private static EndpointReference targetEPR = new EndpointReference(
			"http://localhost:8888/tservice/services/WeatherService");

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

		Options options = new Options();
		options.setTo(targetEPR);
		// options.setAction("urn:setWeather");
		// options.setTransportInProtocol("SOAP");
		// options.setProperty(HTTPConstants.CHUNKED, "false");

		ServiceClient client = new ServiceClient();
		client.setOptions(options);
		
		// setWeather
		client.sendRobust(getBody());//还回类型为void,如果使用sendReceive()会产生异常。
			
		// getWeather
		OMFactory fac = OMAbstractFactory.getOMFactory();
		OMElement ome = fac.createOMElement(new QName("http://service.com", "getWeather"));
		OMElement result = client.sendReceive(ome);
		System.out.println(result);
		OMElement w1 = result.getFirstElement();
		Weather w2 = (Weather) BeanUtil.deserialize(Weather.class, w1, new DefaultObjectSupplier(),null);
		System.out.println(w2.toString());
	}

	private static OMElement getBody() {
		QName qn1 = new QName("http://service.com", "setWeather");
		QName qn2 = new QName("http://service.com", "weather");
		Weather w = new Weather((float) 40, "uuuuuuuuu", true, (float) 5.1);
		OMElement ome = BeanUtil.getOMElement(qn1, new Object[] { w }, qn2,
				true, null);
		System.out.println(ome);
		return ome;
	}
}
 

 

5. 运行客户端结果

<setWeather xmlns="http://service.com"><weather><forecast>uuuuuuuuu</forecast><howMuchRain>5.1</howMuchRain><rain>true</rain><temperature>40.0</temperature></weather></setWeather>
<ns:getWeatherResponse xmlns:ns="http://service.com"><ns:return xmlns:ax21="http://model.com/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ax21:Weather"><ax21:forecast>uuuuuuuuu</ax21:forecast><ax21:howMuchRain>5.1</ax21:howMuchRain><ax21:rain>true</ax21:rain><ax21:temperature>40.0</ax21:temperature></ns:return></ns:getWeatherResponse>
{temperature:40.0,forecast:uuuuuuuuu,rain:true,howMuchRain:5.1}
 
分享到:
评论
1 楼 happy_tao_cool 2013-09-04  
客户端访问会抛出异常,怎么还能用啊,原理究竟是啥啊

相关推荐

    WebService------AXIS

    AXIS则是实现WebService的一种流行工具,它是由Apache软件基金会开发的一个开放源码项目,主要用于简化WebService的创建和消费。 AXIS的主要特点和优势包括: 1. **易用性**:AXIS提供了一套简单的命令行工具,...

    Java-tomcat-axis2开发webservice返回json数据

    标题“Java-tomcat-axis2开发webservice返回json数据”涉及的是使用Java、Tomcat服务器以及Axis2框架来创建Web服务,并返回JSON格式的数据。这是一个常见的技术组合,用于构建RESTful API或者提供服务化接口。下面...

    axis2 webService 详细教程

    【标题】"Axis2 WebService 详细教程"涵盖了在Java环境中使用Apache Axis2框架创建、部署和使用Web服务的核心概念和技术。Apache Axis2是Apache软件基金会开发的一个强大的Web服务引擎,它提供了高度优化的Web服务...

    axis2 webservice基础教程

    ### Axis2 WebService基础教程知识点总结 #### 一、Axis2简介及下载安装 ...通过以上知识点的学习和实践,读者可以全面了解Axis2 WebService的基础应用及其高级特性,为后续深入学习和服务开发打下坚实的基础。

    axis2-1.5.4-bin.zip axis2-1.5.4-war.zip

    1. **Axis2框架**:Axis2是基于SOAP(简单对象访问协议)的Web服务实现平台,它支持WSDL(Web服务描述语言)和WS-I(Web服务互操作性)标准,使得不同系统之间的通信成为可能。作为Java平台上的Web服务框架,Axis2...

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

    总的来说,使用Axis2客户端调用WebService接口是一种常见的开发实践,通过精简jar包可以优化项目的体积,提高部署效率。理解这个过程并掌握如何精简jar包,对于任何涉及到Web服务的开发工作都是十分有益的。

    webservice的axis2开发

    【WebService的基础知识】 1.1 WebService的定义与作用 WebService是一种按照W3C标准设计的软件系统,旨在实现跨网络的机器间交互操作。...学习AXIS2有助于深入理解WebService开发,并能快速构建实际应用。

    axis2-1.6.3-bin

    描述中的“webservice”提示我们,Axis2的核心功能是关于Web服务的。Web服务是一种基于开放标准(如XML、SOAP、WSDL和UDDI)的软件组件,能够通过网络提供服务。它们通常遵循简单对象访问协议(SOAP)进行消息传递,...

    Axis2生成webservice客户端通用依赖包

    总的来说,"Axis2生成webservice客户端通用依赖包"是一个方便开发者快速搭建和使用Web服务客户端的解决方案,它集成了必要的库,简化了项目集成过程,提高了开发效率。在实际开发中,理解和掌握这一方法将极大地提升...

    WebService大讲堂之Axis2.pdf

    ### WebService大讲堂之Axis2:深入了解零配置的WebService开发 #### 一、Axis2简介及下载安装 Axis2是Apache软件基金会提供的一款高性能、轻量级的WebService引擎,它是在Axis1.x的基础上重新设计的产物,不仅...

    WebService之Axis2经典教程

    - **复合类型数据的传递**: Axis2支持传递复杂的Java对象,例如自定义类实例。 - **会话管理**: 支持会话管理功能,可以跟踪客户端的请求序列。 - **异步调用**: 提供异步调用的能力,支持回调通知。 - **模块化**: ...

    java调用webservice的axis2.jar包

    Java调用WebService是Web服务交互的一种常见方式,而Axis2是一个高效的、可扩展的Web服务框架,它在Java世界中广泛用于创建和消费Web服务。本文将深入探讨使用Axis2.jar包来调用WebService的相关知识点。 一、Axis2...

    Axis WebService 技术指南,开发文档

    Axis 支持传递 Java 对象,包括内部类,作为 WebService 方法的参数或返回值。对象会被序列化为 XML 格式进行网络传输。 ### 7. Handler 和 Chain 特性 Axis 中的 Handler 机制允许自定义处理逻辑,可以实现数据...

    收藏axis2的一本经书 axis2_WebService开发指南

    《Axis2 WebService开发指南》是一本专注于Java平台上的Web服务框架Axis2的权威书籍,适合于希望深入了解和使用Axis2进行Web服务开发的IT专业人士。Axis2是Apache软件基金会开发的一个高性能、灵活且可扩展的Web服务...

Global site tag (gtag.js) - Google Analytics