使用axis发布简单的webservice

http://www.cnblogs.com/bjzhanghao/archive/2004/10/09/50216.aspx

 

使用Axis,要发布一个Web服务非常简单,简直不能再简单了,尽管看起来过程和相关代码有些长。我这个帖子里用到了这些软件:Axis 1.1、Eclipse 2.1和Eclipse的Tomcat插件2.2(Sysdeo Tomcat plugin)。发布的方法如下:

我要发布的服务是一个图书商店,公布的方法有添加图书addBook、列表图书listBooks、删除图书deleteBook等等,为简单起见这里就只发布一个添加图书方法,因为其他方法的发布是类似的。

1、首先在Eclipse里新建一个名为bookstore的Tomcat工程,注意要安装了前面说的Tomcat插件才有这个选项的。如果没有安装可以建立一个java工程,然后手动建立必要的目录结构(WEB-INF等),并在Tomcat的server.xml里手动增加与项目对应的<context>项。

2、接下来建立图书类(com.bookstore.model.Book),图书有名称、ISDN号和页数三个属性,这是一个Bean类,代码如下:

package com.bookstore.model;

public class Book {
    private String name;
    private String ISDN;
    private 
int  page;

    public String getISDN() {
        
return  ISDN;
    }

    public String getName() {
        
return  name;
    }

    public 
int  getPage() {
        
return  page;
    }

    public 
void  setISDN(String string) {
        ISDN 
=  string;
    }

    public 
void  setName(String string) {
        name 
=  string;
    }

    public 
void  setPage( int  i) {
        page 
=  i;
    }

}

3、接下来建立用来提供服务的类(com.bookstore.BookSvc),这个类就是实际的功能类了,它里面只有一个public的addBook()方法,而它的参数只有一个就是要添加的图书。代码如下:

package com.bookstore;

import com.bookstore.model.Book;

public class BookSvc {
    
    public 
void  addBook(Book book){
        
// here you save a book into database
        System.out.println( " Book has been added. " );
    }
}

4、现在,把下载来的Axis解压缩到一个文件夹,这里假设你解到C:\axis-1_1。把C:\axis-1_1\webapps\axis \WEB-INF\lib目录下的所有.jar文件复制到你的这个web应用程序的WEB-INF\lib下,再把C:\axis-1_1 \webapps\axis\WEB-INF目录下的web.xml复制到你的web应用程序的WEB-INF下。这个步骤相当于在你的web应用程序中配置了Axis。

5、为了让Axis知道你要发布哪些服务,你得在WEB-INF下建立一个名为server-config.wsdd的文件,内容如下:

<? xml version="1.0" encoding="UTF-8" ?>
< deployment  xmlns ="http://xml.apache.org/axis/wsdd/"  xmlns:java ="http://xml.apache.org/axis/wsdd/providers/java" >
 
< globalConfiguration >
  
< parameter  name ="adminPassword"  value ="admin" />
  
< parameter  name ="attachments.Directory"  value ="C:\eclipse\workspace\bookstore\WEB-INF\attachments" />
  
< parameter  name ="attachments.implementation"  value ="org.apache.axis.attachments.AttachmentsImpl" />
  
< parameter  name ="sendXsiTypes"  value ="true" />
  
< parameter  name ="sendMultiRefs"  value ="true" />
  
< parameter  name ="sendXMLDeclaration"  value ="true" />
  
< parameter  name ="axis.sendMinimizedElements"  value ="true" />
  
< requestFlow >
   
< handler  type ="java:org.apache.axis.handlers.JWSHandler" >
    
< parameter  name ="scope"  value ="session" />
   
</ handler >
   
< handler  type ="java:org.apache.axis.handlers.JWSHandler" >
    
< parameter  name ="scope"  value ="request" />
    
< parameter  name ="extension"  value =".jwr" />
   
</ handler >
  
</ requestFlow >
 
</ globalConfiguration >
 
< handler  name ="LocalResponder"  type ="java:org.apache.axis.transport.local.LocalResponder" />
 
< handler  name ="Authenticate"  type ="java:org.apache.axis.handlers.SimpleAuthenticationHandler" />
 
< handler  name ="URLMapper"  type ="java:org.apache.axis.handlers.http.URLMapper" />
 
< service  name ="Version"  provider ="java:RPC" >
  
< parameter  name ="allowedMethods"  value ="getVersion" />
  
< parameter  name ="className"  value ="org.apache.axis.Version" />
 
</ service >
 
< service  name ="BookSvc"  provider ="java:RPC" >
  
< parameter  name ="allowedMethods"  value ="*" />
  
< parameter  name ="className"  value ="com.bookstore.BookSvc" />
 
</ service >
 
< service  name ="AdminService"  provider ="java:MSG" >
  
< parameter  name ="allowedMethods"  value ="AdminService" />
  
< parameter  name ="enableRemoteAdmin"  value ="false" />
  
< parameter  name ="className"  value ="org.apache.axis.utils.Admin" />
  
< namespace > http://xml.apache.org/axis/wsdd/ </ namespace >
 
</ service >
 
< transport  name ="local" >
  
< responseFlow >
   
< handler  type ="LocalResponder" />
  
</ responseFlow >
 
</ transport >
 
< transport  name ="http" >
  
< requestFlow >
   
< handler  type ="URLMapper" />
   
< handler  type ="java:org.apache.axis.handlers.http.HTTPAuthHandler" />
  
</ requestFlow >
 
</ transport >
</ deployment >

这个文件里发布了三个服务:Version、AdminService和我们的BookSvc。还有一个方法可以生成这个文件,好象Axis推荐使用这种生成的方法,就是在同样目录下写一个deploy.wsdd文件(如果不想看可以直接跳到下一步),内容如下:

< deployment  xmlns ="http://xml.apache.org/axis/wsdd/"
            xmlns:java
="http://xml.apache.org/axis/wsdd/providers/java" >
 
< service  name ="BookSvc"  provider ="java:RPC" >
  
< parameter  name ="className"  value ="com.bookstore.BookSvc" />
  
< parameter  name ="allowedMethods"  value ="*" />
 
</ service >
</ deployment >

也就是说deploy.wsdd里只包含关于我们的服务的描述,确认Tomcat已经启动,然后在同一目录下用下面这个命令生成server-config.wsdd文件:

java org.apache.axis.client.AdminClient  - lhttp: // localhost:8080/bookstore/services/AdminService deploy.wsdd

其中bookstore是我这个web应用程序的虚拟路径。

6、重新启动Tomcat,访问路径http://localhost:8080/bookstore/services,就可以看到现在发布了三个Web服务,如下图。点击每个服务后的wsdl链接可以看到对应的WSDL描述。

使用axis发布简单的webservice

相关链接:

你可能感兴趣的:(webservice)