您的位置:首页 > 其它

使用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服务成功
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: