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}
分享到:
相关推荐
AXIS则是实现WebService的一种流行工具,它是由Apache软件基金会开发的一个开放源码项目,主要用于简化WebService的创建和消费。 AXIS的主要特点和优势包括: 1. **易用性**:AXIS提供了一套简单的命令行工具,...
标题“Java-tomcat-axis2开发webservice返回json数据”涉及的是使用Java、Tomcat服务器以及Axis2框架来创建Web服务,并返回JSON格式的数据。这是一个常见的技术组合,用于构建RESTful API或者提供服务化接口。下面...
【标题】"Axis2 WebService 详细教程"涵盖了在Java环境中使用Apache Axis2框架创建、部署和使用Web服务的核心概念和技术。Apache Axis2是Apache软件基金会开发的一个强大的Web服务引擎,它提供了高度优化的Web服务...
### Axis2 WebService基础教程知识点总结 #### 一、Axis2简介及下载安装 ...通过以上知识点的学习和实践,读者可以全面了解Axis2 WebService的基础应用及其高级特性,为后续深入学习和服务开发打下坚实的基础。
1. **Axis2框架**:Axis2是基于SOAP(简单对象访问协议)的Web服务实现平台,它支持WSDL(Web服务描述语言)和WS-I(Web服务互操作性)标准,使得不同系统之间的通信成为可能。作为Java平台上的Web服务框架,Axis2...
总的来说,使用Axis2客户端调用WebService接口是一种常见的开发实践,通过精简jar包可以优化项目的体积,提高部署效率。理解这个过程并掌握如何精简jar包,对于任何涉及到Web服务的开发工作都是十分有益的。
【WebService的基础知识】 1.1 WebService的定义与作用 WebService是一种按照W3C标准设计的软件系统,旨在实现跨网络的机器间交互操作。...学习AXIS2有助于深入理解WebService开发,并能快速构建实际应用。
描述中的“webservice”提示我们,Axis2的核心功能是关于Web服务的。Web服务是一种基于开放标准(如XML、SOAP、WSDL和UDDI)的软件组件,能够通过网络提供服务。它们通常遵循简单对象访问协议(SOAP)进行消息传递,...
总的来说,"Axis2生成webservice客户端通用依赖包"是一个方便开发者快速搭建和使用Web服务客户端的解决方案,它集成了必要的库,简化了项目集成过程,提高了开发效率。在实际开发中,理解和掌握这一方法将极大地提升...
### WebService大讲堂之Axis2:深入了解零配置的WebService开发 #### 一、Axis2简介及下载安装 Axis2是Apache软件基金会提供的一款高性能、轻量级的WebService引擎,它是在Axis1.x的基础上重新设计的产物,不仅...
- **复合类型数据的传递**: Axis2支持传递复杂的Java对象,例如自定义类实例。 - **会话管理**: 支持会话管理功能,可以跟踪客户端的请求序列。 - **异步调用**: 提供异步调用的能力,支持回调通知。 - **模块化**: ...
Java调用WebService是Web服务交互的一种常见方式,而Axis2是一个高效的、可扩展的Web服务框架,它在Java世界中广泛用于创建和消费Web服务。本文将深入探讨使用Axis2.jar包来调用WebService的相关知识点。 一、Axis2...
Axis 支持传递 Java 对象,包括内部类,作为 WebService 方法的参数或返回值。对象会被序列化为 XML 格式进行网络传输。 ### 7. Handler 和 Chain 特性 Axis 中的 Handler 机制允许自定义处理逻辑,可以实现数据...
《Axis2 WebService开发指南》是一本专注于Java平台上的Web服务框架Axis2的权威书籍,适合于希望深入了解和使用Axis2进行Web服务开发的IT专业人士。Axis2是Apache软件基金会开发的一个高性能、灵活且可扩展的Web服务...