使用axiom创建webservice
2015-06-12 12:29
204 查看
现拥有MyService.java myService.wsdl两个文件,要求使用AXIOM创建和部署MyService服务,输入一个字符串,生成(hello+该字符串)
1、编写WSDL文件,确定SOAP请求和SOAP响应结构
已经拥有
2、根据SOAP请求消息结构和响应消息结构,编写服务实现代码
编写MyService.java
package exercise.service;
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 MyService {
public OMElement echo(OMElement element) {
element.build();
element.detach();
OMElement symbolElement = element.getFirstElement();
String name = symbolElement.getText();
String returnText = "hello"+name;
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs =
fac.createOMNamespace("http://service.exercise", "ns");
OMElement method = fac.createOMElement("echoResponse", omNs);
OMElement value = fac.createOMElement("return", omNs);
value.setText(returnText);
method.addChild(value);
return method;
}
}
3、部署服务
1)到集成开发环境的工作目录下去,找到bin文件夹下生成的文件夹,拷贝到下面步骤生成的zhu文件夹
2)将axis2.war拷到Tomcat Webapps目录下,运行tomcat,生成axis2文件夹
3)进入I:\apache-tomcat-6.0.28\webapps\axis2\WEB-INF\services目录下,新建文件夹zhu,进入zhu文件夹,新建lib文件夹和META-INF文件夹
4)在lib文件夹下添加axiom-api-1.2.7.jar
5)在MET-INF文件夹下放置myService.wsdl文件,新建services.xml
6)打开services.xml文件,进行如下更改
<service name="MyService" scope="application">
<operation name="echo">
<messageReceiver
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
</operation>
<parameter name="useOriginalwsdl">true</parameter>
<parameter name="ServiceClass"> exercise.service.MyService </parameter>
</service>
注解:
服务名,和wsdl中的servcie name值相同
operation 名字要和MyService.java文件中方法名保持一致
ServiceClass名字要和MyService.java保持一致
7)启动tomcat,浏览器中输入地址http://localhost:8080/axis2,查看已部署的服务
4、验证服务是否成功部署
编写测试程序,代码如下:
package exercise.service;
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.axiom.soap.SOAP12Constants;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
public class test1 {
public static void main(String[] args) {
try {
ServiceClient client = new ServiceClient();
Options opts = new Options();
opts.setTo(new EndpointReference(
"http://localhost:8080/axis2/services/MyService"));
opts.setSoapVersionURI(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
client.setOptions(opts);
opts.setAction("urn:echo");
client.sendRobust(createechoLoad());
opts.setAction("urn:echoResponse");
OMElement res = client.sendReceive(createechoResponseLoad());
System.out.println(res);
} catch (AxisFault e) {
e.printStackTrace();
}
}
public static OMElement createechoLoad() {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs = fac.createOMNamespace("http://service.exercise", "nsl");
OMElement echo = fac.createOMElement("echo", omNs);
OMElement name = fac.createOMElement("name",omNs);
echo.addChild(name);
return echo;
}
public static OMElement createechoResponseLoad() {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs = fac.createOMNamespace("http://service.exercise", "nsl");
OMElement echoResponse = fac.createOMElement("echoResponse", omNs);
OMElement return1 = fac.createOMElement("return", omNs);
return1.setText(" world");
echoResponse.addChild(return1);
return echoResponse;
}
}
执行结果:
- Deploying module: metadataExchange - file:/E:/XML/2015-4-30/webservice基础/webservice基础/lib/axis2-1.4.1/lib/mex-1.4.1.jar
<ns:echoResponse xmlns:ns="http://service.exercise">
<ns:return>hello world</ns:return>
</ns:echoResponse>
使用AXIOM创建和部署MyService服务成功
1、编写WSDL文件,确定SOAP请求和SOAP响应结构
已经拥有
2、根据SOAP请求消息结构和响应消息结构,编写服务实现代码
编写MyService.java
package exercise.service;
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 MyService {
public OMElement echo(OMElement element) {
element.build();
element.detach();
OMElement symbolElement = element.getFirstElement();
String name = symbolElement.getText();
String returnText = "hello"+name;
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs =
fac.createOMNamespace("http://service.exercise", "ns");
OMElement method = fac.createOMElement("echoResponse", omNs);
OMElement value = fac.createOMElement("return", omNs);
value.setText(returnText);
method.addChild(value);
return method;
}
}
3、部署服务
1)到集成开发环境的工作目录下去,找到bin文件夹下生成的文件夹,拷贝到下面步骤生成的zhu文件夹
2)将axis2.war拷到Tomcat Webapps目录下,运行tomcat,生成axis2文件夹
3)进入I:\apache-tomcat-6.0.28\webapps\axis2\WEB-INF\services目录下,新建文件夹zhu,进入zhu文件夹,新建lib文件夹和META-INF文件夹
4)在lib文件夹下添加axiom-api-1.2.7.jar
5)在MET-INF文件夹下放置myService.wsdl文件,新建services.xml
6)打开services.xml文件,进行如下更改
<service name="MyService" scope="application">
<operation name="echo">
<messageReceiver
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
</operation>
<parameter name="useOriginalwsdl">true</parameter>
<parameter name="ServiceClass"> exercise.service.MyService </parameter>
</service>
注解:
服务名,和wsdl中的servcie name值相同
operation 名字要和MyService.java文件中方法名保持一致
ServiceClass名字要和MyService.java保持一致
7)启动tomcat,浏览器中输入地址http://localhost:8080/axis2,查看已部署的服务
4、验证服务是否成功部署
编写测试程序,代码如下:
package exercise.service;
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.axiom.soap.SOAP12Constants;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
public class test1 {
public static void main(String[] args) {
try {
ServiceClient client = new ServiceClient();
Options opts = new Options();
opts.setTo(new EndpointReference(
"http://localhost:8080/axis2/services/MyService"));
opts.setSoapVersionURI(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
client.setOptions(opts);
opts.setAction("urn:echo");
client.sendRobust(createechoLoad());
opts.setAction("urn:echoResponse");
OMElement res = client.sendReceive(createechoResponseLoad());
System.out.println(res);
} catch (AxisFault e) {
e.printStackTrace();
}
}
public static OMElement createechoLoad() {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs = fac.createOMNamespace("http://service.exercise", "nsl");
OMElement echo = fac.createOMElement("echo", omNs);
OMElement name = fac.createOMElement("name",omNs);
echo.addChild(name);
return echo;
}
public static OMElement createechoResponseLoad() {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs = fac.createOMNamespace("http://service.exercise", "nsl");
OMElement echoResponse = fac.createOMElement("echoResponse", omNs);
OMElement return1 = fac.createOMElement("return", omNs);
return1.setText(" world");
echoResponse.addChild(return1);
return echoResponse;
}
}
执行结果:
- Deploying module: metadataExchange - file:/E:/XML/2015-4-30/webservice基础/webservice基础/lib/axis2-1.4.1/lib/mex-1.4.1.jar
<ns:echoResponse xmlns:ns="http://service.exercise">
<ns:return>hello world</ns:return>
</ns:echoResponse>
使用AXIOM创建和部署MyService服务成功
相关文章推荐
- Android学习之常用控件(1)
- 做外包,一年总有那么三百六十多天想杀了客户
- 项目管理流程控制小结
- 安装tomcat8
- Linux下使用ab测试webservice性能
- STL---简单整理
- 【九度】【1051】数字阶梯求和
- 如何从JVM中获取信息来进行调整
- java 使用xpath解析xml和html
- dp cf264B
- java 操作excel
- Mysql编程基础
- iOS取照片库的缩略图和大图
- 成为卓有成效的项目经理,你做得到
- 线性表的链表表示和实现
- BEA JRockit JVM的使用
- LeetCode:Permutation Sequence
- ios 8使用定位
- 操作properties文件
- 自我介绍and博客声明