axix 快速发布服务(创建service)

以官方文档上的quickStart为例子,来源http://axis.apache.org/axis2/java/core/docs/quickstartguide.html

准备工作:

1.安装jdk, 设置环境变量path, classpath(我的jdk是1.6,其中JAVA_HOME=D:\software\Java\jdk1.6.0_24 path=;%JAVA_HOME%\bin   classpath=.;%JAVA_HOME%\lib )

2.安装tomcat,我的是tomcat6,  安装完成后(端口为8080,用户名密码均为admin),在conf\tomcat-users.xml,中加入

<tomcat-users>
<user name="admin" password="admin" roles="admin,manager" />
</tomcat-users>
在bin目录下,右击tomcat6.exe->兼容性,勾上以管理员运行此程序,对tomcat6w.exe执行相同的操作。

3.安装ant, 下载apache-ant-1.8.2-bin.zip,解压缩,设置环境变量,ANT_HOME=D:\software\apache-ant-1.8.2-bin\apache-ant-1.8.2, path=;%ANT_HOME%\bin

4.下载axis2, axis2-1.6.0-war.zip, axis2-1.6.0-bin.zip,解压缩,复制axis2.war到tomcat下的webapp下

五种方法来创建服务create service

1. deploying POJOs

a).  AXIS2_HOME/samples/quickstart 的目录如下所示:

- quickstart
   - README.txt
   - build.xml
   - resources
     - META-INF
       - services.xml
   - src
     - samples
       - quickstart
         - service
           - pojo
             - StockQuoteService.java
b).cmd,进入quickstart目录,输入ant generate.sevice, 此时会创建如下结构:

- quickstart/build/classes
   - META-INF
     - services.xml
   - samples
     - quickstart
       - service
         - pojo
           - StockQuoteService.class
c). 两种方法来发布:一.重命名classes文件名为StockQuoteService, 将其复制到tomcat下的webapps/axis2/WEB-INF/services下,二.直接将build下的StockQuoteService.aar复制到 tomcat下的webapps/axis2/WEB-INF/services下

d). 检查是否发布成功:启动tomcat,输入以下URL,看是否有StockQuoteService服务。

http://localhost:8080/axis2/services/listServices

输入以下URL看是否能看到wsdl文件

http://localhost:8080/axis2/services/StockQuoteService?wsdl

输入以下URL看是否能看到schema

http://localhost:8080/axis2/services/StockQuoteService?xsd
如果都成功,再输入以下URL

http://localhost:8080/axis2/services/StockQuoteService/getPrice?symbol=IBM
可以得到以下信息:

<ns:getPriceResponse xmlns:ns="http://pojo.service.quickstart.samples/xsd"><ns:return>42</ns:return></ns:getPriceResponse>
再输入以下URL,以更新信息

http://localhost:8080/axis2/services/StockQuoteService/update?symbol=IBM&price=100
重新输入以下URL,可以发现信息已更新

http://localhost:8080/axis2/services/StockQuoteService/getPrice?symbol=IBM

2. Building the Service using AXIOM

     cmd 进入quickstartaxiom目录,ant generate.service 生成服务,将build下的*.aar文件复制到tomcat下的webapps/axis2/WEB-INF/services下,启动tomcat即可。检查发布成功,如上所示

注:使用此种方法发布service时,文件结构如下所示/samples/quickstartaxiom:

- quickstartaxiom
   - README.txt
   - build.xml
   - resources
     - META-INF
       - services.xml
       - StockQuoteService.wsdl
   - src
     - samples
       - quickstart
         - service
           - axiom
             - StockQuoteService.java
         - clients
           - AXIOMClient.java
其中,service.xml与POJO里的不相同,内容如下:

<service name="StockQuoteService" scope="application">
    <description>
        Stock Quote Service
    </description>
    <operation name="getPrice">
        <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
    </operation>
    <operation name="update">
        <messageReceiver class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
    </operation>
    <parameter name="ServiceClass">samples.quickstart.service.axiom.StockQuoteService</parameter>
</service>
此时,定义了operation name,并且 class为RawXML,,sevice方法如下所示:

The StockQuoteService Class usingAXIOM

package samples.quickstart.service.axiom;

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;

import java.util.HashMap;
public class StockQuoteService {
    private HashMap map = new HashMap();

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

        OMElement symbolElement = element.getFirstElement();
        String symbol = symbolElement.getText();

        String returnText = "42";
        Double price = (Double) map.get(symbol);
        if(price != null){
            returnText  = "" + price.doubleValue();
        }
        OMFactory fac = OMAbstractFactory.getOMFactory();
        OMNamespace omNs =
            fac.createOMNamespace("http://axiom.service.quickstart.samples/xsd", "tns");
        OMElement method = fac.createOMElement("getPriceResponse", omNs);
        OMElement value = fac.createOMElement("price", omNs);
        value.addChild(fac.createOMText(value, returnText));
        method.addChild(value);
        return method;
    }

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

        OMElement symbolElement = element.getFirstElement();
        String symbol = symbolElement.getText();

        OMElement priceElement = (OMElement)symbolElement.getNextOMSibling();
        String price = priceElement.getText();

        map.put(symbol, new Double(price));
    }
}
从代码可以看出,服务器里的方法都以OMElement element为参数,如果服务不是一个"in only"的服务的话,返回的也将是一个OMElement(代表XML element), 该OMElement作为封装SOAP信息的载体,无论是接收信息还是发送信息,都以OMElement的形式。如果要取得信息,就可以一步步的取得element里的节点,既而取得内容,如update代码中红色部分。如果要发送信息,就一步步的将信息放入节点中,最后成为一个OMElement发送,如getPrice()

3.Generating the Service using ADB

 即生成发布服务通过使用AXIS 数据绑定框架(Axis DataBinding Framework)

a),在Axis2_HOME/samples/quickstartadb目录下,输入ant generate.service

b).进入build/service 目录,输入ant jar.server

c).在build/service/build/lib目录下复制*.aar文件到tomcat下的webapps/axis2/WEB-INF/services下,启动tomcat即可。检查发布成功

4.Generating the Service using XMLBeans

a).进入Axis2_HOME/samples/quickstartxmlbeans目录下,输入ant generate.service

b).进入build/service目录,输入ant jar.server

c).在build/service/build/lib目录下复制*.aar文件到tomcat下的webapps/axis2/WEB-INF/services下,启动tomcat即可。检查发布成功

5.Generating the Service using JiBx

a).进入Axis2_HOME/samples/quickstartjibx目录下,输入ant generate.service

b).进入build/service目录,输入ant jar.server

c).在build/service/build/lib目录下复制*.aar文件到tomcat下的webapps/axis2/WEB-INF/services下,启动tomcat即可。检查发布成功




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值