Chinaunix首页 | 论坛 | 博客
  • 博客访问: 48752
  • 博文数量: 25
  • 博客积分: 1415
  • 博客等级: 上尉
  • 技术积分: 270
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-13 05:50
文章分类

全部博文(25)

文章存档

2011年(5)

2010年(1)

2009年(19)

我的朋友

分类: 系统运维

2009-04-13 10:06:09

Uzip tomcat5.5 and ant and axis2 to the directory.

Set environment variables :

CATALINA_HOME, ANT_HOME, AXIS2_HOME

then

1.C:\>CD %AXIS2_HOME%

2.C:\axis2-1.4.1>CD WEBAPP

3.C:\axis2-1.4.1\webapp>ant create.war

  Buildfile: build.xml

4.copy the file dist/axis2.war to the tomcat webapp direcory

5.enter tomcat direcory and input command : startup

you will see some info. about tomcat deployed the axis2.war

6. browser the  you will see the service API format in XML you can use.

;-------------------------------------------------------------------------------------------

//let's have a real example

Open Eclipse and establish a project :

the code as follows:

// Product.java

package gmit;

public class Product
{
 private String partNumber ;
 private String partName ;
 private double price  ;
 
 public Product(String partNumber, String partName, double price) {
  super();
  this.partNumber = partNumber;
  this.partName = partName;
  this.price = price;
 }
 public String getPartNumber() {
  return partNumber;
 }
 public void setPartNumber(String partNumber) {
  this.partNumber = partNumber;
 }
 public String getPartName() {
  return partName;
 }
 public void setPartName(String partName) {
  this.partName = partName;
 }
 public double getPrice() {
  return price;
 }
 public void setPrice(double price) {
  this.price = price;
 }
}//

//ProductManager.java

package gmit;

import java.util.*;


public class ProductManager
{
 private Map products = new HashMap() ;
 
 public double getPrice(String number) throws Exception
 {
  if(products.containsKey(number))
  {
   return products.get(number).getPrice();
  }
  else
  {
   throw new Exception("no match number!") ;
  }
 }
 
 public void addPart(String number, String name , double price )
 {
  products.put(number, new Product(number,name ,price)) ;
 }
 
 public ProductManager()
 {
  Product p1 = new Product("AB-101", "T-shirt", 10.99) ;
  Product p2 = new Product("AB-102", "Jumper", 10.99) ;
  
  products.put(p1.getPartName(), p1);
  products.put(p2.getPartName(), p2);
 }
}
;--------------------------------------------------------------------------------

//publish the interface to the Internet:

 First, let's have the example in AXIS2.

----->/samples/quickstart

5种部署方式:

1. POJOs(Plain Old Java Objects)Deploy the services:

D:\Java\axis2-1.4.1\samples\quickstart>ant generate.wsdl  -->generate StockQuoteService.wsdl

D:\Java\axis2-1.4.1\samples\quickstart>ant generate.service -->generate StockQuoteService.aar

copy the aar file to the Tomcat home webapp folder, you can access the  public API.

Check:

 

2.使用AXIOM从零开始构建服务

/samples/quickstartaxiom的目录结构: 与之前的有所不同:

Axis2使用AXIOM,或者AXIs Object Model,一个基于StAX API(Streaming API for XML)的DOM(Document Object Model)类似的结构

作为服务的方法必须使用OMElement作为它们的参数,OMElement表示一个XML元素,在这里它则为进来的SOAP消息的有效载荷。这里,
你提取有效载荷元素的第一个孩子,添加文本给它,并使用它作为返回的OMElement的内容。除非这是一个"只有in"的服务,这些方法
必须返回一个OMElement,因为它成为返回的SOAP消息的有效载荷。

D:\Java\axis2-1.4.1\samples\quickstartaxiom>ant generate.service

 

3.使用ADB生成服务

执行以下步骤来使用Axis2 Databinding Framework(ADB)生成和部署服务。
通过在Axis2_HOME/samples/quickstartadb目录键入以下内容来使用WSDL2Java工具生成骨架:

D:\Java\axis2-1.4.1\samples\quickstartadb>WSDL2java -uri resources/META-INF/StockQuoteService.wsdl -p samples.quickstart.adb -d adb -s -ss -sd -o build/service

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文件并修改它来添加你的服务的功能性到生成的方法

build/service目录键入命令ant jar.server --> generate aar file

D:\Java\axis2-1.4.1\samples\quickstartadb\build\service>ant jar.service

 

4.使用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文件并修改它来添加你的服务的功能性到生成的方法

现在你可以通过在build/service目录键入命令ant jar.server构建工程 

5.使用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文件并修改它来添加你的服务的功能性到生成的方法

现在你可以通过在build/service目录键入命令ant jar.server构建工程 


部署自己的工程:

目录tree :

-ProductManger

  -resources

         -META-INF

               -services.xml

  -src

         -gmit

               -Product.java

               -ProductManager.java

  - build.xml

//build.xml

<project name="ProductManger" basedir="." default="generate.service">

   
   


   

   
       
           
       

   

   
       
       

       
                       fork="true"
               destdir="${build.dir}/classes"
               srcdir="${basedir}/src"
               classpathref="axis2.classpath">
       

   

   
                         classname="org.apache.ws.java2wsdl.Java2WSDLTask"
                 classpathref="axis2.classpath"/>
          <--- important
                   outputLocation="${build.dir}"
                   targetNamespace=""
                   schemaTargetNamespace="">
           
               
               
           

       

   

   
       
       
           
               
       
   

   
       
   


//services.xml

   
        Product Manager
   

   
                                 class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
                                 class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
   

    gmit.ProductManager  <--- important

//----------------------------------------------------------------------

copy the aar file to %CATALINA_HOME%\webapps\axis2\WEB-INF\services

then you can see the service ...

//----------------------------------------------------------------------

阅读(1534) | 评论(0) | 转发(0) |
0

上一篇:ARM 异常处理

下一篇:Touch Screen 移植

给主人留下些什么吧!~~