让我们从服务本身开始。我们将简化,以便您可以看到构建和部署服务时发生的事情。在这样的实例中,StockQuoteService示例似乎是必需的,所以让我们使用以下代码(参见代码清单1)。
代码清单1:StockQuoteService类
这将是一个简单的服务,有两个可能的调用。其中一个是输入/输出消息,另一个是only-in 的服务。最终,我们将打包服务并以四种不同的方式部署它。
首先,让我们看看这个简单的Java类如何与服务相对应。
在我们使用Axis2构建任何东西之前,我们必须处理一些内务管理。首先,您需要准备好使用Axis2的环境。幸运的是,它只涉及几个简单的步骤:
- 下载并安装Java(最低版本为JDK1.5)。将JAVA_HOME环境变量设置为安装JDK版本的目录的路径名。
- 下载Axis2并将其解压缩到目标目录。
- 将axis2.war文件复制到servlet引擎的webapps目录。
- 将AXIS2_HOME环境变量设置为指向步骤中的目标目录。请注意,Axis2生成的所有脚本和构建文件都取决于此值,因此请勿跳过此步骤!Linux用户也可以在AXIS2_HOME / bin目录中运行setenv.sh文件,将AXIS2_HOME环境变量设置为解压缩的Axis2目录的路径名。
在大多数情况下,我们还需要一个WSDL文件来提供服务。Axis2的Java2WSDL可用于引导WSDL。要从Java类生成WSDL文件,请执行以下步骤:
- 创建并编译Java类。
- 使用以下命令生成WSDL:
生成WSDL文件后,您可以进行所需的更改。例如,您可以添加自定义错误或更改生成的元素的名称。例如,此StockQuoteService.wsdl位于AXIS2_HOME / samples / quickstartadb / resources / META-INF文件夹中,我们将在本指南的其余部分中使用该文件夹,替换生成过程创建的通用参数。
请注意,您可以通过键入以下内容从quickstart目录生成WSDL:
但是,创建StockQuoteService.wsdl是可选的。它可以是直接从Java类生成的版本,也可以是该文件的自定义版本,而services.xml与本文档前面引用的文件相同。
现在通过在quickstart目录中键入ant generate.service来构建项目,该目录创建以下目录结构:
如果要以展开的目录格式部署服务,请将classes目录重命名为StockQuoteService,并将其复制到servlet引擎中的webapps / axis2 / WEB-INF / services目录。否则,将build / StockQuoteService.aar文件复制到servlet引擎中的webapps / axis2 / WEB-INF / services目录。然后通过查看以下服务列表来检查以确保服务已正确部署:
您还可以在以下位置查看WSDL:
the schema 在
URL正常工作后,快速测试服务。尝试将浏览器指向以下URL:
您将收到以下响应:
如果您调用更新方法,
然后执行第一个getPrice URL,您将看到价格已更新。
要使用AXIOM“从头开始”构建服务,请执行以下步骤。
请注意/ samples / quickstartaxiom中包含的目录结构:
由于AXIOM略有不同,因此您需要一个与POJO不同的service.xml文件。定义它,如代码清单4所示。
代码4:服务定义文件。
请注意,它几乎相同,只是在service.xml文件中显式定义了操作,MessageReceivers现在是RawXML。
现在,上面引用的StockQuoteService.java类是一个使用Axis2库中的类的普通Java类,其定义如代码清单5所示。
代码5:使用AXIOM的StockQuoteService类
Axis2使用AXIOM,或AXIs对象模型,类似于(文档对象模型)的结构,它基于StAX API(用于XML的Streaming API)。充当服务的方法必须将OMElement作为其参数,OMElement表示在这种情况下发生的XML元素是传入SOAP消息的有效负载。例如,方法getPrice(OMElement)提取有效负载元素的第一个子元素的内容,该元素对应于股票代码,并使用它来查找股票的当前价格。除非这是“仅在”服务,否则这些方法必须返回OMElement,因为它成为返回SOAP消息的有效负载。
现在通过在Axis2_HOME / samples / quickstartaxiom目录中键入ant generate.service来构建项目。
将StockQuoteService.aar文件放在servlet引擎的webapps / axis2 / WEB-INF / services目录中,并通过查看服务列表来检查是否已正确部署该服务,
您还可以在以下位置检查自定义WSDL:
the schema
要使用Axis2数据绑定框架(ADB)生成和部署服务,请执行以下步骤。
通过在Axis2_HOME / samples / quickstartadb目录中键入以下内容,使用WSDL2Java实用程序生成框架:
否则,只需在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:定义服务骨架文件
现在,您可以通过在build / service目录中键入以下命令来构建项目:
如果一切顺利,您应该在窗口中看到BUILD SUCCESSFUL消息,并在build / service / build / lib目录中看到StockQuoteService.aar文件。将此文件复制到servlet引擎的webapps / axis2 / WEB-INF / services目录。
您可以通过查看服务列表来检查以确保服务已正确部署,
您还可以在以下位置检查自定义WSDL:
the schema
要使用XMLBeans生成服务,请执行以下步骤。
通过在Axis2_HOME / samples / quickstartxmlbeans目录中键入以下内容,使用WSDL2Java实用程序生成框架
否则,只需在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:定义服务框架
通过在build / service目录中键入以下命令来构建项目,该目录包含build.xml文件:
如果一切顺利,您应该在窗口中看到BUILD SUCCESSFUL消息,并在新创建的build / service / build / lib目录中看到StockQuoteService.aar文件。将此文件复制到servlet引擎的webapps / axis2 / WEB-INF / services目录。
您可以通过查看服务列表来检查以确保服务已正确部署,
您还可以在以下位置检查自定义WSDL:
schema
要使用生成和部署服务,请执行以下步骤。
通过在Axis2_HOME / samples / quickstartjibx目录中的控制台上键入以下内容,使用WSDL2Java实用程序生成框架
否则,只需在Axis2_HOME / samples / quickstartjibx目录中键入“ant generate.service”即可。
选项-d jibx指定JiBX数据绑定。-s开关仅指定同步或阻塞调用。-ss开关创建服务器端代码(框架和相关文件)。-sd开关创建服务描述符(services.xml文件)。-ssi开关为服务框架创建一个接口。-uw开关打开传入和传出服务操作的参数,以创建更自然的编程接口。
运行WSDL2Java后,服务文件应位于build / service。如果直接使用WSDL2Java生成代码,则需要修改生成的框架以实现服务(如果使用“ant generate.service”,则完成的框架将自动复制到生成的框架上)。打开build / service / src / samples / quickstart / service / jibx / StockQuoteServiceSkeleton.java文件并对其进行修改,以将服务的功能添加到生成的方法中,如代码清单8所示。
代码8:定义服务框架文件
现在,您可以通过在build / service目录中键入以下命令来构建项目:
如果一切顺利,您应该在窗口中看到BUILD SUCCESSFUL消息,并在build / service / build / lib目录中看到StockQuoteService.aar文件。将此文件复制到servlet引擎的webapps / axis2 / WEB-INF / services目录。
您可以通过查看服务列表来检查以确保服务已正确部署,
您还可以在以下位置检查自定义WSDL:
schema
更多学习信息:JiBX code generation integration
在本节中,我们将介绍基于StockQuoteService类创建客户端的四种方法:构建基于AXIOM的客户端,使用Axis2数据绑定框架(ADB)生成客户端,使用XMLBeans生成客户端,以及使用JiBX生成客户端。
Axis2使用AXIOM,或AXIs对象模型,类似于DOM(文档对象模型)的结构,它基于StAX API(用于XML的Streaming API)。在这里,您可以为服务的更新和getPrice方法设置有效负载。创建有效负载的方式类似于为AXIOM服务创建getPriceResponse有效负载的方式。然后设置Options类,并创建一个ServiceClient,用于与服务进行通信。首先调用update方法,这是一个不返回任何内容的fireAndForget方法。最后,您调用getPrice方法,并从服务中检索当前价格并显示它。
现在,您可以通过在Axis2_HOME / samples / quickstartaxiom目录中键入ant run.client来构建和运行AXIOM客户端。
您应该获得以下输出:
要使用Axis Data Binding(ADB)构建客户端,请执行以下步骤。
通过在Axis2_HOME / samples / quickstartadb目录中键入以下内容来生成客户端数据绑定:
另外,只需在Axis2_HOME / samples / quickstartadb目录中输入ant generate.client即可。
接下来看一下quickstartadb / src / samples / quickstart / clients / ADBClient.java,看看它是如何在代码清单10中定义的。
代码10:ADBClient类
此类使用您创建的Axis Data Bindings创建客户端存根。然后它调用Web服务上的getPrice和更新操作。getPrice方法操作创建GetPrice有效内容并将符号设置为ABC。然后它发送请求并显示当前价格。update方法创建Update有效负载,将符号设置为ABC,价格设置为42.35。
现在通过在Axis2_HOME / samples / quickstartadb目录中键入ant run.client来构建和运行客户端。
您应该获得以下输出:
要使用XML Bean数据绑定构建客户端,请执行以下步骤。
通过在xmlbeansClient目录中键入以下内容来生成数据库。
另外,只需在Axis2_HOME / samples / quickstartxmlbeans目录中键入ant generate.client即可。
请注意,这会创建客户端存根代码而不会创建服务器端代码。
接下来看一下quickstartxmlbeans / src / samples / quickstart / clients / XMLBEANSClient.java,看看它是如何在代码清单11中定义的。
代码11:XMLBEANSClient类
此类使用您创建的XML Beans数据绑定创建客户端存根。然后它调用Web服务上的getPrice和更新操作。getPrice方法操作创建GetPriceDocument,其内部GetPrice类并将符号设置为ABC。然后它发送请求并检索GetPriceResponseDocument并显示当前价格。update方法创建一个UpdateDocument,更新并将符号设置为ABC并将价格设置为42.32,完成后显示“done”。
现在通过在Axis2_HOME / samples / quickstartxmlbeans目录中键入ant run.client来构建和运行项目。
您应该获得以下输出:
要使用JiBX构建客户端,请执行以下步骤。
通过在Axis2_HOME / samples / quickstartjibx目录中的控制台上键入以下内容来生成客户端存根。
否则,只需输入“ant generate.client”即可。
接下来看一下quickstartjibx / src / samples / quickstart / clients / JiBXClient.java,如下面的代码清单12所示。
代码12:JiBXClient类
此类使用创建的JiBX客户端存根来访问Web服务上的getPrice和更新操作。getPrice方法发送股票“ABC”的请求并显示当前价格。更新方法将库存“ABC”的价格设置为42.35。
现在通过在Axis2_HOME / samples / quickstartjibx目录中的控制台键入“ant run.client”来构建和运行客户端。
您应该获得以下输出:
更多信息,JiBX code generation integration
Axis2提供了一种灵活而强大的方式,可以立即启动和运行Web服务。本指南介绍了创建可在Axis2上部署的服务的五种方法,以及创建与服务进行通信的客户端的四种方法。您现在可以使用各种不同的技术灵活地创建Web服务。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/java-jiao-cheng/10351.html