使用axiom创建webservice

来源:互联网 发布:linux什么是管道 编辑:程序博客网 时间:2024/04/28 21:21

现拥有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服务成功

 

 

 

 

 

0 0
原创粉丝点击