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

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

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

  1. %AXIS2_HOME%\bin\wsdl2java.bat -uri resources\META-INF\StockQuoteService.wsdl -p samples.quickstart.service.xmlbeans -d xmlbeans -s -ss -sd -ssi -o build\service

否则,只需在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:定义服务框架

  1. package samples.quickstart.service.xmlbeans;
  2.  
  3. import samples.quickstart.service.xmlbeans.xsd.GetPriceDocument;
  4. import samples.quickstart.service.xmlbeans.xsd.GetPriceResponseDocument;
  5. import samples.quickstart.service.xmlbeans.xsd.UpdateDocument;
  6.  
  7. import java.util.HashMap;
  8.  
  9. public class StockQuoteServiceSkeleton implements StockQuoteServiceSkeletonInterface {
  10.  
  11. private static HashMap map;
  12.  
  13. static{ map = new HashMap(); }
  14.  
  15. public void update(UpdateDocument param0) {
  16. map.put(param0.getUpdate().getSymbol(), new Double(param0.getUpdate().getPrice()));
  17. }
  18.  
  19. public GetPriceResponseDocument getPrice(GetPriceDocument param1) {
  20. Double price = (Double) map.get(param1.getGetPrice().getSymbol());
  21. double ret = 42;
  22. if(price != null){
  23. ret = price.doubleValue();
  24. }
  25. System.err.println();
  26. GetPriceResponseDocument resDoc =
  27. GetPriceResponseDocument.Factory.newInstance();
  28. GetPriceResponseDocument.GetPriceResponse res =
  29. resDoc.addNewGetPriceResponse();
  30. res.setReturn(ret);
  31. return resDoc;
  32. }
  33. }

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

  1. ant jar.server

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

services.xml

  1. <service name="StockQuoteService" scope="application">
  2. <messageReceivers>
  3. <messageReceiver mep="http://www.w3.org/ns/wsdl/in-out"
  4. class="samples.quickstart.service.xmlbeans.StockQuoteServiceMessageReceiverInOut"/>
  5. <messageReceiver mep="http://www.w3.org/ns/wsdl/in-only"
  6. class="samples.quickstart.service.xmlbeans.StockQuoteServiceMessageReceiverInOnly"/>
  7. </messageReceivers>
  8. <parameter name="ServiceClass">samples.quickstart.service.xmlbeans.StockQuoteServiceSkeleton
  9. </parameter>
  10. <operation name="update" mep="http://www.w3.org/ns/wsdl/in-only">
  11. <actionMapping>urn:update</actionMapping>
  12. </operation>
  13. <operation name="getPrice" mep="http://www.w3.org/ns/wsdl/in-out">
  14. <actionMapping>urn:getPrice</actionMapping>
  15. <outputActionMapping>http://quickstart.samples/StockQuoteServicePortType/getPriceResponse</outputActionMapping>
  16. </operation>
  17. </service>

注意:

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

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

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

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

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

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

schema

  1. http://localhost:8080/axis2/services/StockQuoteService?xsd
 

2.4 Apache Axis2 快速学习手册之XMLBeans 构建Web Service的更多相关文章

  1. 2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

    1. 准备:创建一个Maven Web App 项目 这里让我们使用Maven 模板创建一个Web App 项目 1. New------> Maven Project 2. 使用默认配置,点击 ...

  2. 2.2 Apache Axis2 快速学习手册之 AXIOM 构建 Web Service

    和上一篇的POJO 部署相比主要是services.xml 中配置的消息接受处理器类不一样和Java 类中写法不一样. 使用AXIOM构建服务 样例源码路径: C:\Apps\axis2\axis2- ...

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

    使用ADB生成服务(根据ADB 命令将wsdl 文件还原成Java代码) 要使用Axis2数据绑定框架(ADB)生成和部署服务,请执行以下步骤. 通过在Axis2_HOME / samples / q ...

  4. 2.5 Apache Axis2 快速学习手册之JiBx 构建Web Service

    5. 使用JiBX生成服务(通过JIBX 命令将wsdl 生成 services ) 要使用JiBX数据绑定生成和部署服务,请执行以下步骤. 通过在Axis2_HOME / samples / qui ...

  5. 2. Apache Axis2 快速学习手册之概览

    这篇博文和大家一起学习下Apache Axis2 官方文档的快速指南篇 英文原文:http://axis.apache.org/axis2/java/core/docs/quickstartguide ...

  6. Eclipse利用Axis2插件构建Web Service并测试

    在学习Web Service的时候,从网上找到前辈的博客http://www.cnblogs.com/hexinlin/p/3358558.html,并依此文的方法按部就班:编写欲发布的java类He ...

  7. Spring学习(七)——开发Web Service的几种方式

    本文作者在学习使用Java开发Web Service(不包括Restful)时,由于不知道Java有这么多框架支持开发Web Service一度陷入迷惘,不知道这些框架各有 什么不同,各有什么优缺点. ...

  8. 【webpack插件使用】在开发中快速掌握并使用Webpack构建web应用程序

    1.webpack-dev-server插件的基本使用 入门程序 const path = require('path'); // 导出一个Webpack的配置对象(通过node中的模块操作,向外暴露 ...

  9. 1. Apache Axis2 下载安装入门

    Apache Axis2 /Java 学习手册   by 星云 0x01 什么是Apache Axis2/Java? Apache Axis2™ 是一个Web Service / SOAP / WSD ...

随机推荐

  1. jquery数组(sort() 排序)

    HTML: <h3>字符串数组排序前</h3> <div id="show5"></div> <h3>排序后</h ...

  2. Map的知识点梳理(不包含collections工具类)

    一:基础公共方法(map不再是简单的加索引,可以直接命名key,通过key进行遍历) 1.常见的map子类 HashTable:底层是哈希表结构.不允许null键和null值,线程同步 HashMap ...

  3. 031 分布式中,zookeeper的部署

    一:准备 1.概述 为分布式应用提供协调服务的项目 提供一个简单的原语集合,以便于分布式应用可以在它之上构建更高层次的同步服务. 类似于文件系统那样的树形数据结构 目的:将分布式服务不再由于协作冲突而 ...

  4. 洛谷 p1164 小A点菜 【dp(好题)】 || 【DFS】 【恰好完全装满】

    题目链接:https://www.luogu.org/problemnew/show/P1164 题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家……餐馆,很低端的那种. u ...

  5. 【RAY TRACING THE REST OF YOUR LIFE 超详解】 光线追踪 3-1 蒙特卡罗 (一)

    今天起,我们就开始学习第三本书了 这本书主要讲的是蒙特卡罗渲染,以及相关的数学.术语概念等 这本书相较于前面两本有着什么不同,承担着什么样的任务,尚涉书未深,姑妄言之: 第一本书,带领我们初探光线追踪 ...

  6. C# DataGridView插入DB

    public static bool ContrastColumns(DataColumnCollection co1, DataGridViewColumnCollection co2) { boo ...

  7. 安卓 logcat设置 Android logcat Settings

    安卓 logcat设置 Android logcat Settings 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E-mail: 3131 ...

  8. 洛谷.3065.第一!First!(Trie 拓扑)

    题目链接 \(Description\) 给出n个字符串,问重定义英文字符的顺序(即字典序),有哪些单词可能排在第一 \(Solution\) 一个单词想要排在第一,首先是没有其它字符串是它的前缀.那 ...

  9. [BZOJ2650]积木

    [BZOJ2650]积木 题目大意: 有一排\(n\)个积木,第\(i\)个积木的高度为\(h_i\),定义混乱值为相邻两个积木高度之差的绝对值之和乘上系数\(c\).可以花费\(t^2\)的代价将一 ...

  10. tomcat出现Error in dependencyCheck java.io.IOException: invalid manifest format

    我只能说这个错误很坑爹,检查了很多地方都没问题,结果最后在MANIFEST.MF 里面把所有的空的行都删掉就好了.坑爹有木有.