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

Axis2 Webservice 开发2 -- 传递OMElement

    博客分类:
  • java
阅读更多

1.server端代码

 

package com.service;

import javax.xml.stream.XMLStreamException;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;

public class SampleService {

	public OMElement sayHello(OMElement element) throws XMLStreamException {
		element.build();
		element.detach();

		/* 这是客户端发过来的包文,根节点一定是sayHello:
		 * <example1:sayHello xmlns:example1="http://example1.org/example1">
		 *     <example1:personToGreet>John</example1:personToGreet>
		 * </example1:sayHello>
		 */
		String rootName = element.getLocalName();
		System.out.println("Reading rootElement:" + rootName);
		OMElement childElement = element.getFirstElement();
		String personToGreet = childElement.getText();

		
		/* 注意:这里除了跟节点名sayHelloResponse,其他可以随意组装xml:
		 * <example1:sayHelloResponse xmlns:example1="http://example1.org/example1">
		 *     <example1:greeting>Hello, John</example1:greeting>
		 * </example1:sayHelloResponse>
		 */
		OMFactory fac = OMAbstractFactory.getOMFactory();
		OMNamespace omNs = fac.createOMNamespace("http://example1.org/example1", "example1");
		OMElement method = fac.createOMElement("sayHelloResponse", omNs);
		OMElement value = fac.createOMElement("greeting", omNs);
		fac.createOMText(value, "Hello, " + personToGreet);
		method.addChild(value);

		return method;
	}

	@SuppressWarnings("unused")
	private void ping() {
	}

}

 

 

 

2.services.xml

 

<service name="SampleService">
	<description>
		This is a sample service created in the Axis2 User's Guide
	</description>

	<parameter name="ServiceClass">
		com.service.SampleService
	</parameter>

	<operation name="sayHello">
		<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver" />
	</operation>
	<operation name="ping">
		<messageReceiver class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver" />
	</operation>
</service>
 

 

3. 客户端代码

 

package com.client;

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.Constants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;

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

	public static OMElement getBody(String personToGreet) {
		
		/* 注意:这里根节点必须是sayHello,其他可以任意组装xml报文:
		 * <example1:sayHello xmlns:example1="http://example1.org/example1">
		 *     <example1:personToGreet>John</example1:personToGreet>
		 * </example1:sayHello>
		 */
		OMFactory fac = OMAbstractFactory.getOMFactory();
		OMNamespace omNs = fac.createOMNamespace("http://example1.org/example1", "example1");
		OMElement method = fac.createOMElement("sayHello", omNs);
		OMElement value = fac.createOMElement("personToGreet", omNs);
		value.addChild(fac.createOMText(value, personToGreet));
		method.addChild(value);
		return method;
	}

	public static void main(String[] args) {
		try {
			Options options = new Options();
			options.setTo(targetEPR);
			options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

			ServiceClient sender = new ServiceClient();
			sender.setOptions(options);

			System.out.println("req:" + getBody("John"));
			OMElement result = sender.sendReceive(getBody("John"));
			System.out.println("res:" + result);
			
			/* 这是服务端还回的报文,根节点一定是sayHelloResponse:
			 * <example1:sayHelloResponse xmlns:example1="http://example1.org/example1">
			 *     <example1:greeting>Hello, John</example1:greeting>
			 * </example1:sayHelloResponse>
			 */
			String response = result.getFirstElement().getText();
			System.out.println(response);

		} catch (Exception e) {
			System.out.println(e.toString());
		}
	}
}
 

 

4,运行client结果

req:<example1:sayHello xmlns:example1="http://example1.org/example1"><example1:personToGreet>John</example1:personToGreet></example1:sayHello>
res:<example1:sayHelloResponse xmlns:example1="http://example1.org/example1"><example1:greeting>Hello, John</example1:greeting></example1:sayHelloResponse>
Hello, John

 

 

1
0
分享到:
评论

相关推荐

    axis2 webservice开发总结文档

    ### Axis2 WebService 开发总结 #### 一、概述 本文档主要介绍使用 Axis2 进行 WebService 开发的基本步骤和技术要点。Axis2 是 Apache 组织下的一个开源项目,它提供了一种简单有效的方式来构建和部署 Web...

    axis2 webservice入门手册(JS,Java,PHP调用实例源码)www.sietoo.com出品

    ### Axis2 WebService 入门手册知识点详解 #### 一、Axis2简介 **1. AXIOM (AXIs Object Model)** - **定义**:AXIOM 是 Axis2 中用于处理 XML 的核心模型。它不同于传统的 DOM 和 SAX 解析方式,提供了更高效、...

    Axis2各种方式实现WebService案例代码

    通过在类上添加服务接口和操作注解,如@WebService和@WebMethod,Axis2可以自动处理服务的编组和反编组。这种方式简单易懂,适合快速开发,但缺少对XML结构的精细控制。 2. AXIOM方式: AXIOM(Abstract XML ...

    WebService_Axis2_经典教程

    【WebService_Axis2_经典教程】是一篇关于使用Apache Axis2框架开发Web服务的教程。Apache Axis2是一个高效的Web服务引擎,它不仅支持SOAP 1.1和SOAP 1.2协议,还集成了RESTful Web服务以及Spring和JSON等流行技术。...

    通向架构师的道路(第十天)之Axis2 Web Service(一).docx

    开发项目中如何选择使用 Axis2 和其它的WebService: * 如果你的应用程序需要支持多语言即有 C++, .net, Java,你应该选择 Axis2。 * 如果应用程序是遵循 Spring 哲学路线的话,ApacheCXF 或者 Spring WS 是一种更...

    axis_webservice_接口文档

    【axis_webservice_接口文档】主要讲解了如何使用SOAP和AXIS2技术来创建和使用Web服务。SOAP(简单对象访问协议)是一种基于XML的协议,用于在分布式环境中交换结构化信息,而AXIS2是Apache的一个开源Web服务框架,...

    Java Webservice Axis2 Client(含soapheader验证)

    总之,Java Webservice Axis2 Client的开发涉及到生成客户端代码、设置SOAP Header、调用服务和处理响应等多个步骤。了解这些概念和API对于构建安全、可靠的Web服务客户端至关重要。在实际项目中,确保遵循最佳实践...

    WebServiceDemo-Axis2

    通过理解RPC调用、OMElement和Axis2的自动序列化机制,开发者可以有效地构建和维护自己的Web服务。此外,测试代码和配置文件可以帮助我们更好地理解和调试服务,确保其正常运行。在实际开发中,这种知识将大大提升...

    axis2客户端编码,RPC,OMElement,上传下载实现,服务端验证

    前两天做一个Webservice接口工作,有位经理曾经对我说,如果你解决过一个问题,那么你以后必须成为这个领域的专家,不然等同于...所以在有时间的情况下,我简单做一下使用axis2作为客户端的情况下一些编码的实现内容。

    AXIS2 _.docx

    ### 使用Axis2进行WebService开发、部署与调用详解 #### 一、Axis2简介 Axis2是Apache组织下的一个开源项目,它是一个基于Java的WebService框架。Axis2提供了丰富的功能来构建、部署以及调用WebService,它支持...

    如何用axis2开发web服务

    ### 如何用Axis2开发Web服务 #### 一、引言 随着互联网技术的发展,Web服务作为一种新兴的应用程序分支,在企业级系统集成、跨组织数据交换等方面发挥了重要作用。Web服务通常指的是在网络上公开的一种应用程序...

    通向架构师的道路(第十二天)之Axis2 Web Service(三).docx

    【描述】:本文档是通往架构师学习路径的一部分,主要关注Axis2框架下的Web Service开发,尤其是关于SOAP特性的应用。 【标签】:Axis2 WebService 在深入探讨轴心(Axis2)中的SOAP特性之前,先回顾一下SOAP...

    webservice客户端以及服务端

    在本文中,我们将深入探讨Web服务的核心概念,包括服务端和客户端的实现,特别是关注Java环境下的实现——使用JDK原生API与Axis2框架。 首先,让我们从服务端开始。在Java中,我们可以利用JDK自带的JAX-WS(Java ...

    Java解析 SAP Webserice接口方式

    在企业级应用开发中,SAP WebService 的集成是一项重要的任务。本文将详细介绍如何通过 Java 来解析并调用 SAP 提供的 WebService 接口,特别是涉及密码认证的情况。 #### 一、准备工作 1. **下载 Axis2:** - ...

    webserveice 配置

    ### WebService配置详解:Tomcat + Eclipse + JDK1.5 + Axis 在本文中,我们将深入探讨如何在基于Tomcat服务器、Eclipse IDE以及JDK 1.5的环境中配置WebService,具体使用的是Apache Axis框架。这篇教程适用于希望...

    java调用webservice几种方式代码

    Axis2提供了代码第一和WSDL第一两种开发模式。客户端可以通过`AxisClient`或`ServiceStub`进行调用: ```java ConfigurationContext configContext = ConfigurationContextFactory....

    web service客户端

    在开发Web Service客户端之前,首先需要确保已安装并配置了Apache Axis2。这通常包括下载Axis2的发行版,将其解压到合适的位置,并将相关的JAR包添加到项目的类路径中。在示例代码中,可以看到所需的Jar包,这些包...

Global site tag (gtag.js) - Google Analytics