- 浏览: 180224 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (186)
- Ant (11)
- Axis2 (15)
- Car (9)
- Eclipse (1)
- Java (19)
- Java-EM (4)
- Javascript (11)
- Jsp (1)
- Hibernate (9)
- Mysql (1)
- Ms-Dos (5)
- Music (0)
- Oracle (3)
- Postgresql (0)
- Photoshop (1)
- Spring (17)
- Struts (8)
- Selenium (5)
- Ubuntu (13)
- News (17)
- Others (7)
- SSH (11)
- 算法 (5)
- FreeMarker (4)
- Tomcat (2)
- Linux (5)
最新评论
创建服务
在这个部分,我们将看看根据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目录键入ant generate.wsdl来生成WSDL。
尽管如此,创建StockQuoteService.wsdl是可选的。它可以是直接从Java类生成的版本,或者该文件的一个自定义版本,并且servi
ces.xml是本文档前面提到的同一文件。
现在通过在quickstart目录键入ant generate.service来构建工程,该目录创建了以下目录结构:
如果你想以爆发形式部署服务,重命名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
你将得到如下应答:
如果你像这样调用update方法:
http://localhost:8080/axis2/rest/StockQuoteService/update?symbol=IBM&price=100
然后调用第一个getPrice url。你可以看到price被更新了。
使用AXIOM构建服务
为了使用AXIOM"从零开始"构建一个服务,执行以下步骤。
注意包含在/samples/quickstartaxiom的目录结构:
由于AXIOM有一点不同,你将需要一个与POJO所用不同的services.xml文件,在Code Listing 4中显示了它的定义。
Code Listing 4: 服务定义文件
注意,几乎是一样的,除了操作是显示地定义在service.xml文件中,而且MessageReceiver现在是RawXML。
现在,上面提到的简单的使用Axis2库的类的StockQuoteService.java类,在Code Listing 5中定义。
Code Listing 5:使用AXIOM的StockQuoteService类
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目录,通过视察下面的服务列表来确 ...
在这个部分,我们将看看根据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.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 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目录,通过视察下面的服务列表来确 ...
发表评论
-
Spring Web Service 学习之Hello World篇2
2008-11-03 15:32 10826, 修改配置文件spring-ws- ... -
webservice之axis2方式开发总结
2008-11-04 09:33 723webservice之axis2方式开发总结 关键字: we ... -
基于Axis2开发WebService代码详解
2008-11-04 09:34 921基于Axis2开发WebService代码详解 关键字: we ... -
基于Tomcat5.0和Axis2开发Web Service应用实例
2008-11-04 09:38 768基于Tomcat5.0和Axis2开发Web Service应 ... -
使用Axis2来构建Web Service客户端
2008-11-04 09:46 767使用Axis2来构建Web Service客户端 2 ... -
webservice-之使用axis+spring开发
2008-11-04 17:42 635... -
webservice-之使用axis+spring开发2
2008-11-04 17:42 799三、配置文件 (全部放在 ... -
Axis 开发WebService
2008-11-04 18:16 747Axis 开发WebService Axis 开发WebSe ... -
spring与axis的整合
2008-11-04 18:23 692spring与axis的整合 eclipse resin ax ... -
在Eclipse中创建基于Axis2的web services
2008-11-05 09:04 1034本实验的目的是让你尽可能快的创建使用 Axis2 的服务和客户 ... -
Axis2快速上手指南
2008-11-05 09:06 727本指南的目的是让你尽可能快的创建使用Axis2的服务和客户端, ... -
Axis2快速上手指南4
2008-11-05 09:08 856使用ADB生成一个客户端 执行以下步骤来使用Axis Dat ... -
Axis2 Integration With The Spring Framework
2008-11-05 09:16 881Axis2 Integration With The Spri ... -
定义web service接口的十点注意事项
2008-11-05 14:03 1249一、接口是自说明的。 也就是说,接口的名字、参数和返回值在一看 ...
相关推荐
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的使用,以及深入理解和应用其在各种场景下的强大功能。
在IT行业中,Web服务是应用程序之间进行通信的一种标准方法,而Axis和Axis2是两种流行的Java SOAP(简单对象访问协议)框架,用于...在实际工作中,结合详细的API文档,开发者可以快速上手,实现高效的服务开发和集成。
- `samples`目录:可能包含了一些示例服务和使用指南,帮助初学者快速上手。 了解了这些基础知识后,开发者可以利用Apache Axis2 1.7.9创建高效率、可扩展的Web服务,同时享受其强大的功能和灵活性。在实际项目中,...
- `README.txt`:通常包含快速安装指南、基本操作和一些重要的提示,帮助用户快速上手使用Axis2。 Axis2的核心特性包括: - **模块化**:Axis2允许通过模块进行功能扩展,模块可以独立于服务存在,提高代码复用性...
4. **文档**:可能会包含用户指南、API参考文档和其他技术文档,解释了Axis2的用法和配置选项。 5. **源代码**:如果标记正确,那么会有一系列的源代码文件,这包括了Axis2的实现,开发者可以研究并学习其设计和...
"经典实例,工程导入就能用"意味着这是一个可以直接运行的项目,无需过多的设置,这对于初学者或开发者快速上手Axis2非常有帮助。 【标签】"Axis2"、"myeclipse"和"例子"、"jar"揭示了几个关键概念。Axis2是Apache...
6. **samples**:可能包含示例Web服务和教程,帮助用户快速上手。 7. **docs**:可能包含API文档和用户指南。 8. **Distributions**或**WebContent**:包含Axis2的Web应用程序结构,可以部署到Web服务器如Tomcat。 ...
4. **示例和服务**:可能包含一些预打包的示例Web服务,帮助用户快速上手和理解如何在Axis2中部署和调用服务。 5. **文档**:包括用户手册、开发者指南和API文档,帮助开发者了解如何使用和扩展Axis2。 6. **模块**...
- **samples**目录:包含示例服务和客户端应用,帮助开发者快速上手。 - **repository**目录:存储服务、模块和依赖的仓库。 - **docs**目录:可能包含API文档和用户指南。 通过解压并探索这个“axis2-1.4.1-bin”...
- "axis2&axis教程资料"可能包含了关于这两个框架的详细教程、示例代码和最佳实践,可以帮助初学者快速上手。 - 在线文档:Apache官方提供了详细的 Axis2 和 Axis 文档,包括用户指南、开发者指南和API参考。 7. ...
3. **README.txt** - 这个文件通常包含关于如何安装、配置和使用软件的基本指南,对于快速上手Axis2 1.5.4的部署和配置非常有帮助。 4. **NOTICE.txt** - 通知文件,列出在软件中使用的第三方组件及其各自的版权信息...
- **在线教程和示例代码**:帮助快速上手并深入理解Axis2的工作原理和实践技巧。 总之,Apache Axis2是一个强大且灵活的Web服务框架,为企业级应用提供了一套完善的解决方案,无论是对于初学者还是有经验的开发者,...
- **DEMO分析**:指南中提供的DEMO将演示如何创建、部署和调用Web服务,以及如何处理响应,这些实例有助于开发者快速上手。 - **问题解决**:通过实例,开发者可以学习到常见问题的解决方法,比如命名空间问题、...
通过阅读“Quickstart Apache Axis2.pdf”,你可以逐步掌握这些概念并实践操作,从而快速上手Apache Axis2的使用。"E书说明.txt"可能包含了关于PDF文档的阅读和使用提示,而"阅读器下载.htm"可能是推荐的PDF阅读器...
AXIS简化了WebService的开发流程,通过自动代码生成和部署工具,使得开发人员可以快速地实现服务接口。 ### 2. 简单介绍 **2.1 WebService介绍** WebService是一种基于标准的、平台无关的通信方式,通过SOAP消息在...
总的来说,《Packt - Quickstart Apache Axis2》是一本全面的指南,涵盖了从基础到高级的Apache Axis2知识,适合想要快速上手并深入理解Web服务开发的开发者。通过阅读本书,读者将能够熟练地运用Apache Axis2构建...
4. **Samples**:提供示例代码和配置文件,帮助开发者快速上手,通过实际操作理解Axis2的功能和用法。 5. **Schema**:可能包含Axis2支持的数据交换格式(如WSDL和XML Schema)的定义文件。 6. **Deployment ...