• 2.3 Apache Axis2 快速学习手册之 ADB 构建Web Service


    使用ADB生成服务(根据ADB 命令将wsdl 文件还原成Java代码)

    要使用Axis2数据绑定框架(ADB)生成和部署服务,请执行以下步骤。

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

    (Windows)
    %AXIS2_HOME%inwsdl2java.bat -uri resourcesMETA-INFStockQuoteService.wsdl -p samples.quickstart.service.adb -d adb -s -ss -sd -ssi -o buildservice
    
    (Linux)
    $AXIS2_HOME/bin/wsdl2java.sh -uri resources/META-INF/StockQuoteService.wsdl -p samples.quickstart.service.adb -d adb -s -ss -sd -ssi -o build/service

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

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

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

    打开build / service / src / samples / quickstart / adb / service / StockQuoteServiceSkeleton.java文件并对其进行修改,以将服务的功能添加到生成的方法中; 如代码清单6所示。

    代码6:定义 Web Service 文件

    package samples.quickstart.service.adb;
    
    import samples.quickstart.service.adb.xsd.GetPriceResponse;
    import samples.quickstart.service.adb.xsd.Update;
    import samples.quickstart.service.adb.xsd.GetPrice;
    
    import java.util.HashMap;
    
    public class StockQuoteServiceSkeleton implements StockQuoteServiceSkeletonInterface {
    
        private static HashMap map;
    
        static{ map = new HashMap(); }
    
        public void update(Update param0) {
            map.put(param0.getSymbol(), new Double(param0.getPrice()));
        }
    
        public GetPriceResponse getPrice(GetPrice param1) {
            Double price = (Double) map.get(param1.getSymbol());
            double ret = 42;
            if(price != null){
                ret = price.doubleValue();
            }
            GetPriceResponse res =
                    new GetPriceResponse();
            res.set_return(ret);
            return res;
        }
    }

    现在,您可以通过在build / service目录中键入以下命令来构建项目:

    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.adb.StockQuoteServiceMessageReceiverInOut"/>
            <messageReceiver mep="http://www.w3.org/ns/wsdl/in-only"
                             class="samples.quickstart.service.adb.StockQuoteServiceMessageReceiverInOnly"/>
        </messageReceivers>
        <parameter name="ServiceClass">samples.quickstart.service.adb.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>

    值得注意的是这种方式使用的消息处理器类是,这是和其他方法不同的地方

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

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

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

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

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

     the schema 

    http://localhost:8080/axis2/services/StockQuoteService?xsd
     
  • 相关阅读:
    产品 | What's产品经理
    产品 | 互联网+“加油”
    微信小程序 | 未来O2O电商的“阴谋”
    推荐书籍 | 产品必备书籍
    iOS | NSProxy
    iOS | 解决中文乱码
    HTML DOM addEventListener() 方法
    给每个对象加上新的属性
    vue.config.js基础配置
    SEO要点
  • 原文地址:https://www.cnblogs.com/xingyunblog/p/10330237.html
Copyright © 2020-2023  润新知