- 浏览: 441601 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
wjy20150716:
我遇到的问题,删除哪个都不行,最后实在没办法了,就用了Tomc ...
Unable to read TLD “META-INF/c.tld” from JAR file的 -
lijun123:
对新手来说不错
Oracle新建用户,授权,建表空间 -
netkongjian:
欢迎加入程序员网址导航[deyi]
[Z]浅析中国五大网址导航!!! -
iijjll:
crystal1205 写道RonQi 写道google搜索“ ...
Unable to read TLD “META-INF/c.tld” from JAR file的 -
iijjll:
oh,yeah! get it。问题解决了!
Unable to read TLD “META-INF/c.tld” from JAR file的
原文链接:http://ws.apache.org/axis2/1_1_1/quickstartguide.html
本指南的目的是让你尽可能快的创建使用Axis2的服务和客户端,我们将使用一个简单的StockQuote服务并显示给你一些创建和部署它
的不同的方式,以及快速的看看Axis2自带的一些工具,然后我们将看看创建访问这些服务的客户端。
内容
- 介绍
- 做好准备
- <SPAN class=hilite1>Axis2</SPAN>服务
- 创建服务
- 部署POJOs
- 使用AXIOM构建服务
- 使用ADB生成服务
- 使用XMLBeans生成服务
- 使用JiBX生成服务
- 生成客户端
- 使用AXIOM创建一个客户端
- 使用ADB生成一个客户端
- 使用XMLBeans生成一个客户端
- 使用JiBX生成一个客户端
- 总结
- 进一步学习
介绍
做好准备
Axis2服务
创建服务
部署POJOs
使用AXIOM构建服务
使用ADB生成服务
使用XMLBeans生成服务
使用JiBX生成服务
生成客户端
使用AXIOM创建一个客户端
使用ADB生成一个客户端
使用XMLBeans生成一个客户端
使用JiBX生成一个客户端
总结
进一步学习
快速安装笔记:
文档的代码可以在解压的标准二进制发布[/url]找到,更明确的位于其中的Axis2_HOME/samples/目录-quickstart,quickstartdb,
quickstartaxiom,quickstartjibx和quickstartxmlbeans,如果你继续下去它将帮你掌握它。它包含一个Ant构建文件(build.xml)
贯穿所有的例子我们将提到它来使得编译更容易。
介绍
让我们以服务本身开始。我们将使它简单,所以你可以看到当我们构建并部署服务时会发生什么,一个StockQuoteService例子看起来
像这个,所以让我们使用下面的(参看Code Listing 1)。
Code Listing 1: StockQuoteService类
- package samples.quickstart.service.pojo;
- import java.util.HashMap;
- public class StockQuoteService {
- private HashMap map = new HashMap();
- public double getPrice(String symbol) {
- Double price = (Double) map.get(symbol);
- if(price != null){
- return price.doubleValue();
- }
- return 42.00;
- }
- public void update(String symbol, double price) {
- map.put(symbol, new Double(price));
- }
- }
package samples.quickstart.service.pojo; import java.util.HashMap; public class StockQuoteService { private HashMap map = new HashMap(); public double getPrice(String symbol) { Double price = (Double) map.get(symbol); if(price != null){ return price.doubleValue(); } return 42.00; } public void update(String symbol, double price) { map.put(symbol, new Double(price)); } }
它将为一个具有两个可能的调用的简单服务,其中一个是一个in/out消息,另一个则为一个只能in的服务,最终我们将打包服务并用
四种不同的方式部署部署它。
首先,让我们看看这个简单的Java类怎样响应一个服务。
做好准备
在我们使用Axis2构建任何东西之前,我们将需要关注一些家务事。现在你将需要准备好你使用Axis2的环境,幸运的是,它只包括一
些简单的步骤:
1,下载并安装Java(版本至少为JDK1.4)
2,下载Axis2并解压到一个目标目录
3,复制axis2.war文件到你的servlet引擎的webapps目录
4,设置AXIS2_HOME环境变量来指出目标目录,注意Axis2生成的所有脚本和构建文件依赖于这个值,所以不要遗漏了这个步骤。
大多数情况下,我们的服务也将需要一个WSDL文件,Axis2的Java2WSDL可以用来生成一个WSDL。执行以下步骤来从一个Java类生成一
个WSDL文件:
1,创建并编译Java类
2,使用该命令生成WSDL:
%AXIS2_HOME%/bin/java2wsdl -cp . -cn samples.quickstart.service.pojo.StockQuoteService -of StockQuoteService.wsdl
移动你生成WSDL文件,你可以做你需要的任何更改。例如,你可能添加自定义的过错或者改变生成的元素名。例如,该StockQuoteSer
vice.wsdl位于%AXIS2_HOME%/samples/quickstartadb/resources/META-INF文件夹,我们将在本指南的其他部分使用它,代替生成过
程创建的一般参数。
Axis2服务
在我们构建任何东西之前,理解最终产品看起来像什么是有用的。Axis2的服务器端可以被部署在任何Servlet引擎上,并且有如下的
Code Listing 2显示的结构。
Code Listing 2: axis2.war的目录结构
- <SPAN class=hilite1>axis2</SPAN>-web
- META-INF
- WEB-INF
- classes
- conf
- <SPAN class=hilite1>axis2</SPAN>.xml
- lib
- activation.jar
- ...
- xmlSchema.jar
- modules
- modules.list
- addressing.mar
- ...
- soapmonitor.mar
- services
- services.list
- aservice.aar
- ...
- version.aar
- web.xml
axis2-web META-INF WEB-INF classes conf axis2.xml lib activation.jar ... xmlSchema.jar modules modules.list addressing.mar ... soapmonitor.mar services services.list aservice.aar ... version.aar web.xml
从最上面开始,axis2-web是组成Axis2管理程序的一些JSPs,你可以通过它来执行任何需要的动作,例如添加服务,使用模块和禁止
模块。WEB-INF包含了运行部署到服务目录的任何服务的实际上的java类和其他支持文件。
这里主要的文件是axis2.xml,它控制程序怎样与接收的消息打交道,决定Axis2是否需要使用模块目录里定义的任何模块。
这里你可以看到,服务可以被部署为*.aar文件,但是它们的内容必须以一个特殊的方式安排。例如,服务的结构将为如下:
- - StockQuoteService
- - META-INF
- - services.xml
- - samples
- - quickstart
- - service
- - pojo
- - StockQuoteService.class
- StockQuoteService - META-INF - services.xml - samples - quickstart - service - pojo - StockQuoteService.class
这不是太复杂,服务的名字为StockQuoteService,它在services.xml中指定,并且根据包名把任何Java类放到合适的位置。META-INF
目录包含关于Axis2需要来正确执行服务的额外信息。services.xml文件定义了服务本身并把Java类链接到它(参看Code Listing 3)。
Code Listing 3: 服务定义文件
- <service name="StockQuoteService" scope="application">
- <description>
- Stock Quote Sample Service
- </description>
- <messageReceivers>
- <messageReceiver
- mep="http://www.w3.org/2004/08/wsdl/in-only"
- class="org.apache.<SPAN class=hilite1>axis2</SPAN>.rpc.receivers.RPCInOnlyMessageReceiver"/>
- <messageReceiver
- mep="http://www.w3.org/2004/08/wsdl/in-out"
- class="org.apache.<SPAN class=hilite1>axis2</SPAN>.rpc.receivers.RPCMessageReceiver"/>
- </messageReceivers>
- <parameter name="ServiceClass">
- samples.quickstart.service.pojo.StockQuoteService
- </parameter>
- </service>
<service name="StockQuoteService" scope="application"> <description> Stock Quote Sample Service </description> <messageReceivers> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> </messageReceivers> <parameter name="ServiceClass"> samples.quickstart.service.pojo.StockQuoteService </parameter> </service>
这里你看到服务本身被定义了,以及不同的消息交换模式相关的messageReceiver类型。
META-INF目录也是你打算包含在该程序中的自定义WSDL文件的位置。
你可以通过简单的采用该文件目录结构并复制到你的servlet引擎的webapps目录来部署一个服务,这是著名的"爆发"形式,但是你也
可以压缩你的文档到一个*.aar文件,类似于一个*.jar文件,并直接将*.aar文件放到servlet引擎的webapps目录。
既然你理解了我们在尝试完成什么,我们几乎准备好开始构建了。
首先,下载并解压合适版本的Axis2标准二进制发布。确认你设置了AXIS2_HOME变量的值来匹配你解压该版本内容的位置。
让我们看看一些创建客户端和服务的不同方式。
创建服务
在这个部分,我们将看看根据StockQuoteService类创建服务的五种方式:部署Plain Old Java Objects(POJO),使用AXIOM的OMElement
构建服务,使用Axis2 Databinding Framework(ADB)生成服务,使用XMLBeans生成服务和使用JiBX生成服务。
部署POJOs
使用POJOs(Plain Old Java Objects)来部署服务,执行下面的步骤。
注意包含在<AXIS2_HOME>/samples/quickstart的目录结构(services.xml文件来自于该指南的第一个部分):
- - quickstart
- - README.txt
- - build.xml
- - resources
- - META-INF
- - services.xml
- - src
- - samples
- - quickstart
- - service
- - pojo
- - StockQuoteService.java
- quickstart - README.txt - build.xml - resources - META-INF - services.xml - src - samples - quickstart - service - pojo - StockQuoteService.java
注意你可以通过在quickstart目录键入ant generate.wsdl来生成WSDL。
尽管如此,创建StockQuoteService.wsdl是可选的。它可以是直接从Java类生成的版本,或者该文件的一个自定义版本,并且servi
ces.xml是本文档前面提到的同一文件。
现在通过在quickstart目录键入ant generate.service来构建工程,该目录创建了以下目录结构:
- - quickstart/build/classes
- - META-INF
- - services.xml
- - samples
- - quickstart
- - service
- - pojo
- - StockQuoteService.class
- quickstart/build/classes - META-INF - services.xml - samples - quickstart - service - pojo - StockQuoteService.class
如果你想以爆发形式部署服务,重命名classes目录为StockQuoteService,并复制它到你的servlet引擎的webapps/axis2/WEB-INF/s
ervices目录。否则,复制build/StockQuoteService.aar文件到你的servlet引擎的webapps/axis2/WEB-INF/services目录。然后通过
视察以下服务列表来确认服务被正确部署:
http://localhost:8080/axis2/services/listServices
你也可以检验以下WSDL:
http://localhost:8080/axis2/services/StockQuoteService?wsdl
以及以下结构:
http://localhost:8080/axis2/services/StockQuoteService?xsd
一旦这些urls工作,让我们快速测试一下服务。让你的浏览器访问以下URL试试:
http://localhost:8080/axis2/rest/StockQuoteService/getPrice?symbol=IBM
你将得到如下应答:
- <ns:getPriceResponse xmlns:ns="http://pojo.service.quickstart.samples/xsd"><ns:return>42</ns:return></ns:getPriceResponse>
<ns:getPriceResponse xmlns:ns="http://pojo.service.quickstart.samples/xsd"><ns:return>42</ns:return></ns:getPriceResponse>
如果你像这样调用update方法:
http://localhost:8080/axis2/rest/StockQuoteService/update?symbol=IBM&price=100
然后调用第一个getPrice url。你可以看到price被更新了。
使用AXIOM构建服务
为了使用AXIOM"从零开始"构建一个服务,执行以下步骤。
注意包含在/samples/quickstartaxiom的目录结构:
- - quickstartaxiom
- - README.txt
- - build.xml
- - resources
- - META-INF
- - services.xml
- - StockQuoteService.wsdl
- - src
- - samples
- - quickstart
- - service
- - axiom
- - StockQuoteService.java
- - clients
- - AXIOMClient.java
- quickstartaxiom - README.txt - build.xml - resources - META-INF - services.xml - StockQuoteService.wsdl - src - samples - quickstart - service - axiom - StockQuoteService.java - clients - AXIOMClient.java
由于AXIOM有一点不同,你将需要一个与POJO所用不同的services.xml文件,在Code Listing 4中显示了它的定义。
Code Listing 4: 服务定义文件
- <service name="StockQuoteService" scope="application">
- <description>
- Stock Quote Service
- </description>
- <operation name="getPrice">
- <messageReceiver class="org.apache.<SPAN class=hilite1>axis2</SPAN>.receivers.RawXMLINOutMessageReceiver"/>
- </operation>
- <operation name="update">
- <messageReceiver class="org.apache.<SPAN class=hilite1>axis2</SPAN>.receivers.RawXMLINOnlyMessageReceiver"/>
- </operation>
- <parameter name="ServiceClass">samples.quickstart.service.axiom.StockQuoteService</parameter>
- </service>
<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>
注意,几乎是一样的,除了操作是显示地定义在service.xml文件中,而且MessageReceiver现在是RawXML。
现在,上面提到的简单的使用Axis2库的类的StockQuoteService.java类,在Code Listing 5中定义。
Code Listing 5:使用AXIOM的StockQuoteService类
- 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));
- }
- }
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)); } }
Axis2使用AXIOM,或者AXIs Object Model,一个基于StAX API(Streaming API for XML)的DOM(Document Object Model)类似的结构
作为服务的方法必须使用OMElement作为它们的参数,OMElement表示一个XML元素,在这里它则为进来的SOAP消息的有效载荷。这里,
你提取有效载荷元素的第一个孩子,添加文本给它,并使用它作为返回的OMElement的内容。除非这是一个"只有in"的服务,这些方法
必须返回一个OMElement,因为它成为返回的SOAP消息的有效载荷。
现在通过在Axis2_HOME/samples/quickstartaxiom目录键入ant generate.service来构建工程。
把StockQuoteService.aar文件放在servlet引擎的webapps/axis2/WEB-INF/services目录,通过视察下面的服务列表来确认服务正确
部署:
http://localhost:8080/axis2/services/listServices
你也可以检验以下WSDL:
http://localhost:8080/axis2/services/StockQuoteService?wsdl
以及以下结构:
http://localhost:8080/axis2/services/StockQuoteService?xsd
使用ADB生成服务
执行以下步骤来使用Axis2 Databinding Framework(ADB)生成和部署服务。
通过在Axis2_HOME/samples/quickstartadb目录键入以下内容来使用WSDL2Java工具生成骨架:
%AXIS2_HOME%/bin/WSDL2Java -uri resources/META-INF/StockQuoteService.wsdl -p samples.quickstart.adb -d adb -s -ss
-sd -ssi -o build/service
或者在Axis2_HOME/samples/quickstartadb目录简单的键入ant generate.service
选项-d adb指定了Axis Data Binding(ADB)。-s转换指定同步或者只模块化调用。-ss转换创建服务器端代码(骨架和相关文件)。-sd
转换创建一个服务描述符(services.xml文件)。-ssi转换为服务骨架创建一个接口。服务文件现在应该定位于build/service。
如果你通过使用WSDL2Java直接生成代码,下一步你需要修改生成的骨架来实现服务(如果你使用"ant generate.service",一个完全
的骨架会自动复制并覆盖生成的那个)。
打开build/service/src/samples/quickstart/adb/service/StockQuoteServiceSkeleton.java文件并修改它来添加你的服务的功能性
到生成的方法,下面的Code Listing 6显示了。
Code Listing 6:定义服务骨架文件
- 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 {
- 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;
- }
- }
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 { 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消息,而且StockQuoteService.aar文件在build/service/build/lib
目录中。复制该文件到servlet引擎的webapps/axis2/WEB-INF/services目录。
你可以通过视察下面的服务列表来确认服务正确部署:
http://localhost:8080/axis2/services/listServices
你也可以检验以下WSDL:
http://localhost:8080/axis2/services/StockQuoteService?wsdl
以及以下结构:
http://localhost:8080/axis2/services/StockQuoteService?xsd
使用XMLBeans生成服务
执行以下步骤来使用XMLBeans生成服务。
通过在Axis2_HOME/samples/quickstartxmlbeans目录键入以下命令来使用WSDL2Java工具生成骨架:
%AXIS2_HOME%/bin/WSDL2Java -uri resources/META-INF/StockQuoteService.wsdl -p samples.quickstart.service.xmlbeans
-d xmlbeans -s -ss -sd -ssi -o build/service
或者在Axis2_HOME/sampels/quickstartxmlbeans目录简单的键入ant generate.service
选项-d xmlbeans指定XMLBeans数据绑定。-s转换指定同步或者只是模块化调用。-ss转换创建服务器端代码(骨架和相关文件)。-sd
转换创建一个服务描述符(services.xml文件)。-ssi转换创建一个服务骨架的接口。现在服务文件应该位于build/service。
如果你通过使用WSDL2Java直接生成代码,下一步你需要修改生成的骨架来实现服务(如果你使用"ant generate.service",一个完全
的骨架将被自动复制并覆盖生成的那个)。
下一步打开build/service/src/samples/quickstart/service/xmlbeans/StockQuoteServiceSkeleton.java文件并修改它来添加你的
服务的功能性到生成的方法(参看Code Listing 7)。
Code Listing 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) {
- }
- public GetPriceResponseDocument getPrice(GetPriceDocument param1) {
- }
- }
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) { } public GetPriceResponseDocument getPrice(GetPriceDocument param1) { } }
通过在build/service目录键入命令ant jar.server构建项目,该目录包含build.xml文件。
如果一切进展顺利,你应该在你的窗口看到BUILD SUCCESSFUL消息,而且StockQuoteService.aar文件位于新创建的build/service/
build/lib目录。复制该文件到servlet引擎的webapps/axis2/WEB-INF/services目录。
你可以通过视察下面的服务列表来确认服务正确部署:
http://localhost:8080/axis2/services/listServices
你也可以检验以下WSDL:
http://localhost:8080/axis2/services/StockQuoteService?wsdl
以及以下结构:
http://localhost:8080/axis2/services/StockQuoteService?xsd
使用JiBX生成服务
执行以下步骤来使用JiBX数据绑定生成和部署服务。
通过在Axis2_HOME/samples/quickstartjibx目录的控制台键入以下内容来使用WSDL2Java工具生成骨架:
%AXIS2_HOME%/bin/wsdl2java -uri resources/META-INF/StockQuoteService.wsdl -p samples.quickstart.service.jibx -d jibx
-s -ss -sd -ssi -uw -o build/service
或者在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文件并修改它来添加你的服务的功能性到生成的方法,在Code Listing
8中显示了。
Code Listing 8:定义服务骨架文件
- package samples.quickstart.service.jibx;
- import java.util.HashMap;
- public class StockQuoteServiceSkeleton implements StockQuoteServiceSkeletonInterface {
- private HashMap map = new HashMap();
- public void update(String symbol, Double price) {
</
相关推荐
XFire 还具有易于上手、快速发布服务、灵活的 Binding 机制等特点。 与 Axis1 相比,XFire 的性能有了质的提高,XFire 比 Axis1.3 快 2-6 倍,XFire 的响应时间是 Axis1.3 的 1/2 到 1/5。XFire 的灵活性更高,...
Axis2是Apache软件基金会的一个用于构建和部署WebService的引擎,它基于Apache Axis项目,并且是Apache Web服务堆栈的...通过这个指南,开发者可以快速上手Axis2的使用,以及深入理解和应用其在各种场景下的强大功能。
### Axis2 WebService 开发指南知识点详述 #### 一、Axis2 WebService 技术概览 **Axis2** 是Apache的一个开源项目,旨在提供一个高性能、灵活且可扩展的Web服务框架,用于实现基于SOAP协议的Web服务。与前代产品*...
在这个名为"AXIS2快速学习资料"的压缩包中,包含两份宝贵的资源:一份是中文的Word文档,标题为"Axis2--Java访问Axis2接口.doc",另一份是英文的PDF,标题为"Axis2--Dev_Web_Services_With_Apache_Axis2.pdf"。...
在IT行业中,Web服务是应用程序之间进行通信的一种标准方法,而Axis和Axis2是两种流行的Java SOAP(简单对象访问协议)框架,用于构建和消费Web服务。本文将深入探讨这两个API,以及它们在Web服务开发中的作用。 ...
而Axis2是Apache软件基金会开发的一个高效、灵活且可扩展的Web服务框架,它为开发人员提供了一个快速创建和部署Web服务的平台。本教程将详细介绍如何使用Axis2快速发布自己的WSDL(Web Service Definition Language...
Axis1.x系列版本与Axis2系列版本在体系结构和使用方式上存在显著差异,Axis1.x被认为是更加稳定的一个系列,且相对而言,其文档资料也更加丰富和齐全。 ### WebService简介 WebService是一种基于网络的分布式计算...
标题中的"axis2-idea-plugin-1.7.9.zip_axis2_axis2-idea-plugin_idea导入axis2_"提到了几个关键元素,分别是"axis2"、"idea-plugin"和"idea导入axis2",这暗示了这个压缩包是用于在IntelliJ IDEA这款集成开发环境...
2. `axis2-1.6.1-docs.zip`:文档包,提供了关于Axis2 1.6.1版本的详细用户指南、开发者文档、API参考和教程。这些文档对于学习和理解如何使用和扩展Axis2至关重要,它们通常包括HTML格式的在线文档,PDF文件,以及...
axis2-adb-1.5.4.jar axis2-adb-codegen-1.5.4.jar axis2-codegen-1.5.4.jar axis2-corba-1.5.4.jar axis2-fastinfoset-1.5.4.jar axis2-java2wsdl-1.5.4.jar axis2-jaxbri-1.5.4.jar axis2-jaxws-1.5.4.jar axis2-...
Axis2的帮助文档包括用户指南、开发者指南和API参考,为初学者和高级用户提供详尽的指导。用户可以通过官方文档学习如何配置Axis2、创建服务、调用服务以及使用各种特性。此外,社区论坛和邮件列表也是获取问题解答...
axis2-1.6.2.zip, windows axis2工具,根据 WSDL生成java文件。 1、axis2客户端下载地址:http://mirror.esocc.com/apache//axis/axis2/java/core/1.6.2/axis2-1.6.2-bin.zip; 2、下载解压在D:\Work_Program_...
《Axis2 WebService 开发指南》 Axis2是一款强大的Web服务框架,它是Apache Axis1的升级版,提供了更高效、更灵活的服务实现和部署机制。本指南将详细讲解如何使用Axis2进行Web服务的开发,从基础准备到高级特性,...
eclipse axis2 插件安装指南 Axis2 是一个开源的 Web 服务引擎,由 Apache 软件基金会维护。它提供了一个灵活、可扩展、性能高效的 Web 服务解决方案。Eclipse 是一个流行的集成开发环境(IDE),Axis2 插件安装...
首先,`axis2-1.6.2-docs.zip` 文件包含了 Axis2 框架的完整文档,包括用户指南、开发者指南、API参考以及各种教程。这些文档对于理解 Axis2 的工作原理、如何创建和消费Web服务、以及如何自定义和扩展其功能至关...
Apache Axis2是著名的开源Web服务框架,用于构建和部署高效且灵活的Web服务。这个框架是基于Axis1的升级版,提供了许多改进和新特性,包括更好的性能、模块化架构和增强的MIME支持。标题提到的“axis2-1.5.1-bin.zip...
- **文档**:可能有用户指南、API文档等,帮助开发者理解和使用Axis2。 - **配置文件**:如axis2.xml,这是Axis2的主配置文件,用于定义服务行为和服务部署的细节。 - **工具**:可能包括上面提到的wsdl2java和java2...
本教程将引导你快速入门,掌握使用Axis2创建Web服务的基本步骤。 **一、了解Axis2** Axis2是Axis1的下一代产品,它提供了更强大的功能和更高的性能。Axis2基于模块化架构,支持多种传输协议(如HTTP、HTTPS、SMTP...
### Axis与Axis2在WSDL2Java工具中的发布差异 #### 概述 本文将详细介绍Axis与Axis2在使用WSDL2Java工具进行服务发布的差异性。这两种工具都是Apache项目的一部分,它们为开发者提供了强大的Web服务支持。其中,...