本文将详细介绍 HelloWorld中使用的 server和 client端代码。阅读之前,你应该首先了解 SOAP1.1协议。
author: ZJ 07-3-13
Blog: http://zhangjunhd.blog.运维网.com/
1 . HelloWorld做了些什么?
HelloWorld功能非常简单,在客户端输入你的姓名,本例中为 ZJ。参数传递到服务器端后,经过处理将返回 name+"HelloWorld!",本例中为 ZJ HelloWorld!
2 .服务器端文件 HelloWorld.java
HelloWorld.java
package sample;
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 HelloWorld {
//读取 client端 getSayHelloOMElement()方法传递的参数 in。
public OMElement sayHello(OMElement in){
//将 in转换为 String。
String name=in.getText();
String info=name+"HelloWorld!";
//创建 response SOAP包。
OMFactory fac=OMAbstractFactory.getOMFactory();
// OMNamespace指定此 SOAP文档名称空间。
OMNamespace omNs=fac.createOMNamespace("http://helloworld.com/","hw");
//创建元素 sayHello,并指定其在 omNs指代的名称空间中。
OMElement resp=fac.createOMElement("sayHelloResponse",omNs);
//指定元素的文本内容。
resp.setText(info);
return resp;
}
}
3 . services.xml部署文件
services.xml
//下面定义服务名
This is a sample Web Service.
// ServiceClass指定 Java Class的位置,即实现服务的类。
sample.HelloWorld
// operation 与 Java Class中方法名对应。
// messageReceiver看下文注解。
注解: 消息交换模式。
目前 Axis2支持三种模式: In-Only、 Robust-In和 In-Out。 In-Only消息交换模式只有 SOAP请求,而不需要应答; Robust-In消息交换模式发送 SOAP请求,只有在出错的情况下才返回应答; In-Out消息交换模式总是存在 SOAP请求和应答。本例使用 In-Out模式。
4 .客户端文件 TestClient.java
TestClient.java
package example.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.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
public class TestClient {
// targetEPR指定打包的 Service( .aar文件 ) 在容器中的物理位置。
private static EndpointReference targetEPR=new EndpointReference
("http://localhost:8080/axis2/services/HelloWorld");
public static OMElement getSayHelloOMElement(){
//创建 request SOAP包。
OMFactory fac=OMAbstractFactory.getOMFactory();
// OMNamespace指定此 SOAP文档名称空间。
OMNamespace omNs=fac.createOMNamespace("http://helloworld.com/","hw");
//创建元素 sayHello,并指定其在 omNs指代的名称空间中。
OMElement method=fac.createOMElement("sayHello",omNs);
//指定元素的文本内容。
method.setText("ZJ");
return method;
}
public static void main(String[] args){
try{
Options options=new Options();
options.setTo(targetEPR);
ServiceClient sender=new ServiceClient();
sender.setOptions(options);
OMElement sayHello=TestClient.getSayHelloOMElement();
//发出 request SOAP,
//同时将得到的远端由 sayHello方法返回的信息保存到 result。
//通过 services.xml能准确找到 sayHello方法所在的文件。
OMElement result=sender.sendReceive(sayHello);
}
catch(Exception axisFault){
axisFault.printStackTrace();
}
}
}
5 . Axis2简介
Apache Axis2 是 Axis的后续版本,是新一代的 SOAP引擎。 Axis2的主要特点有:
1)采用名为 AXIOM( AXIs Object Model)的新核心 XML 处理模型,利用新的 XML解析器提供的灵活性按需构造对象模型。
2)支持不同的消息交换模式。目前 Axis2支持三种模式: In-Only、 Robust-In和 In-Out。 In-Only消息交换模式只有 SOAP请求,而不需要应答; Robust-In消息交换模式发送 SOAP请求,只有在出错的情况下才返回应答; In-Out消息交换模式总是存在 SOAP请求和应答。
3)提供阻塞和非阻塞客户端 API。
4)支持内置的 Web服务寻址 (WS-Addressing) 。
5)灵活的数据绑定,可以选择直接使用 AXIOM,使用与原来的 Axis 相似的简单数据绑定方法,或使用 XMLBeans、 JiBX 或 JAXB 2.0 等专用数据绑定框架。
6)新的部署模型,支持热部署。
7)支持 HTTP, SMTP, JMS, TCP传输协议。
8)支持 REST (Representational State Transfer)。
6 . Axis2 支持的规范包括:
-SOAP 1.1 and 1.2
-Message Transmission Optimization Mechanism (MTOM), XML Optimized Packaging (XOP) and SOAP with Attachments
-WSDL 1.1, including both SOAP and HTTP bindings
-WS-Addressing (submission and final)
-WS-Policy
-SAAJ 1.1
有关 Axis2更加详细的介绍,可以访问 Axis2网站 http://ws.apache.org/axis2/ 。
相关介绍
基于Tomcat5.0和Axis2开发Web Service应用实例
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com