zoukankan      html  css  js  c++  java
  • 2.4 Apache Axis2 快速学习手册之XMLBeans 构建Web Service

    4. 使用XMLBeans生成服务(通过xml bean 命令将wsdl 文件生成java 代码)

    要使用XMLBeans生成服务,请执行以下步骤。

    通过在Axis2_HOME / samples / quickstartxmlbeans目录中键入以下内容,使用WSDL2Java实用程序生成框架

    %AXIS2_HOME%inwsdl2java.bat -uri resourcesMETA-INFStockQuoteService.wsdl -p samples.quickstart.service.xmlbeans -d xmlbeans -s -ss -sd -ssi -o buildservice

    否则,只需在Axis2_HOME / samples / quickstartxmlbeans目录中键入ant generate.service。

    选项-d xmlbeans指定XML Bean数据绑定。-s开关仅指定同步或阻塞调用。-ss开关创建服务器端代码(框架和相关文件)。-sd开关创建服务描述符(services.xml文件)。-ssi开关为服务框架创建一个接口。现在,服务文件应位于构建/服务中。

    如果您直接使用WSDL2Java生成代码,接下来您必须修改生成的框架以实现服务(如果您使用“ant generate.service”,则完成的框架将自动复制到生成的框架上)。

    接下来打开build / service / src / samples / quickstart / service / xmlbeans / StockQuoteServiceSkeleton.java文件并修改它以将服务的功能添加到生成的方法中(参见代码清单7)。

    代码7:定义服务框架

    package samples.quickstart.service.xmlbeans;
    
    import samples.quickstart.service.xmlbeans.xsd.GetPriceDocument;
    import samples.quickstart.service.xmlbeans.xsd.GetPriceResponseDocument;
    import samples.quickstart.service.xmlbeans.xsd.UpdateDocument;
    
    import java.util.HashMap;
    
    public class StockQuoteServiceSkeleton implements StockQuoteServiceSkeletonInterface {
    
        private static HashMap map;
    
        static{ map = new HashMap(); }
    
        public void update(UpdateDocument param0) {
            map.put(param0.getUpdate().getSymbol(), new Double(param0.getUpdate().getPrice()));
        }
    
        public GetPriceResponseDocument getPrice(GetPriceDocument param1) {
            Double price = (Double) map.get(param1.getGetPrice().getSymbol());
            double ret = 42;
            if(price != null){
                ret = price.doubleValue();
            }
            System.err.println();
            GetPriceResponseDocument resDoc =
                    GetPriceResponseDocument.Factory.newInstance();
            GetPriceResponseDocument.GetPriceResponse res =
                    resDoc.addNewGetPriceResponse();
            res.setReturn(ret);
            return resDoc;
        }
    }

    通过在build / service目录中键入以下命令来构建项目,该目录包含build.xml文件:

    ant jar.server

    如果一切顺利,您应该在窗口中看到BUILD SUCCESSFUL消息,并在新创建的build / service / build / lib目录中看到StockQuoteService.aar文件。将此文件复制到servlet引擎的webapps / axis2 / WEB-INF / services目录。

    services.xml

    <service name="StockQuoteService" scope="application">
        <messageReceivers>
            <messageReceiver mep="http://www.w3.org/ns/wsdl/in-out"
                             class="samples.quickstart.service.xmlbeans.StockQuoteServiceMessageReceiverInOut"/>
            <messageReceiver mep="http://www.w3.org/ns/wsdl/in-only"
                             class="samples.quickstart.service.xmlbeans.StockQuoteServiceMessageReceiverInOnly"/>
        </messageReceivers>
        <parameter name="ServiceClass">samples.quickstart.service.xmlbeans.StockQuoteServiceSkeleton
        </parameter>
        <operation name="update" mep="http://www.w3.org/ns/wsdl/in-only">
            <actionMapping>urn:update</actionMapping>
        </operation>
        <operation name="getPrice" mep="http://www.w3.org/ns/wsdl/in-out">
            <actionMapping>urn:getPrice</actionMapping>
            <outputActionMapping>http://quickstart.samples/StockQuoteServicePortType/getPriceResponse</outputActionMapping>
        </operation>
    </service>

    注意:

    这种方式的services.xml 消息接受处理器也变了

        <messageReceivers>
            <messageReceiver mep="http://www.w3.org/ns/wsdl/in-out"
                             class="samples.quickstart.service.xmlbeans.StockQuoteServiceMessageReceiverInOut"/>
            <messageReceiver mep="http://www.w3.org/ns/wsdl/in-only"
                             class="samples.quickstart.service.xmlbeans.StockQuoteServiceMessageReceiverInOnly"/>
        </messageReceivers>

    您可以通过查看服务列表来检查以确保服务已正确部署,

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

    您还可以在以下位置检查自定义WSDL:

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

    schema 

    http://localhost:8080/axis2/services/StockQuoteService?xsd
     
  • 相关阅读:
    Android 开发 深入理解Handler、Looper、Messagequeue 转载
    Android 开发 Handler的基本使用
    Java 学习 注解
    Android 开发 AlarmManager 定时器
    Android 开发 框架系列 百度语音合成
    Android 开发 框架系列 Google的ORM框架 Room
    Android 开发 VectorDrawable 矢量图 (三)矢量图动画
    Android 开发 VectorDrawable 矢量图 (二)了解矢量图属性与绘制
    Android 开发 VectorDrawable 矢量图 (一)了解Android矢量图与获取矢量图
    Android 开发 知晓各种id信息 获取线程ID、activityID、内核ID
  • 原文地址:https://www.cnblogs.com/xingyunblog/p/10330243.html
Copyright © 2011-2022 走看看