使用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 1.1、Eclipse 2.1和Tomcat插件发布Web服务的方法。以图书商店服务为例,详细说明了在Eclipse中新建Tomcat工程、建立图书类和服务类、配置Axis、生成服务配置文件等步骤,重启Tomcat后可查看发布的服务。
141

被折叠的 条评论
为什么被折叠?



