`

[WS]使用Axis发布简单的Web服务

    博客分类:
  • axis
阅读更多

[WS]使用Axis发布简单的Web服务

 

使用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描述。

[WS]使用Axis发布简单的Web服务(补充)

 

这篇帖子是对《使用Axis发布简单的Web服务》的补充。

可以看出,在Axis里书写deploy.wsdd并利用org.apache.axis.client.AdminClient发布,其主要工作就是把<service>标签中的内容添加在server-config.wsdd里,所以一般直接编辑server-config.wsdd文件会更方便一些。不过当你还没有server-config.wsdd文件时,使用deploy.wsdd的方法会更方便些,因为AdminClient会帮你生成一些额外的xml元素(<handler>等等),而这些元素是必要的。

服务发布以后,就可以在IE浏览器里看到它的WSDL,一般是服务的URL后面加一个“?wsdl”,例如添加图书的WSDL可以通过http://localhost:8080/bookstore/services/BookSvc?wsdl看到。至于Java类是以何种规则映射到WSDL的,请参考JAX-RPC规范;WSDL本身的说明见这里;为了搞清生成的WSDL中各种URL格式的名称空间,最好对XML Schema有所了解,我觉得这篇文章还不错。

我们还可以通过IE浏览器直接调用服务,方法是在服务URL后加“method=xxx”,其中xxx是要调用的方法名称。例如可以通过http://localhost:8080/bookstore/services/BookSvc?method=addBook调用添加图书方法,按照我们的服务类,在Tomcat的控制台上应该可以看到打出了“Book has been added.”的字样。

因为添加图书方法的参数是一个自定义类型,所以在IE里调用时不能指定参数值(或者是可以以其他格式指定,但我还不知道);如果参数是简单类型,就可以指定了。例如我们可以为BookSvc增加一个echo()方法,参数是一个java.lang.String类型的值,如下所示,然后重新编译并启动Tomcat(server-config.wsdd文件不必更改)。

public void echo(String str){
    System.out.println("Hello "+str);
}

在IE里输入http://localhost:8080/bookstore/services/BookSvc?method=echo&str=Mike,就会看到Tomcat的控制台里打出了“Hello Mike”。如果有多个参数,只要把这些参数都列在URL里即可。

 

 

转载自:http://www.cnblogs.com/bjzhangha o/archive/2004/10/09/50216.html

 

本人一个实际项目中 第5步开始有所不同

只是在新建了deploy.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">
 <service name="服务名" provider="java:RPC">
      <parameter name="className" value="路径.类名"/>
     <parameter name="allowedMethods" value="*"/>
 </service>

 

启动TOMCAT、CMD命令

c:\Tomcat6.0.13\webapps\项目名\WEB-INF>java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -1http://IP地址/项目名/servlet/AxisServlet deploy.wsdd

 

出现

Processing file deploy.wsdd

即可以。

然后在TOmcat启动的情况下可以进入

http://ip/项目名/services  即可看到 发布的类方法

分享到:
评论

相关推荐

    用axis 发布ws的过程

    4. **使用Axis工具发布服务**:使用Axis的命令行工具或者Ant构建脚本来将Java类转换为Web服务。 5. **配置部署**:设置服务器环境,例如Tomcat或Jetty,以托管发布的Web服务。 在这个过程中,`build.properties`和...

    axis2发布webservice和调用axis2服务接口

    本文将详细讲解如何使用Axis2来发布Web服务以及如何生成客户端代码来调用这些服务。 首先,让我们了解发布Web服务的过程: 1. **创建WebService**:在Axis2中,可以通过编写一个简单的Java类并暴露其方法作为Web...

    Axis1发布webservice服务

    本项目是一个关于如何使用Axis1发布Web服务的示例,包含了必要的jar包和其他文件,可以直接运行。 首先,我们需要了解Web服务的基本概念。Web服务是一种基于互联网协议的软件,能够通过XML(eXtensible Markup ...

    axis2 axis webservice web 服务

    7. **安全性**:Axis2集成了多种安全机制,如Transport Layer Security (TLS)、WS-Security、WS-SecureConversation等,确保Web服务的安全性。 8. **易于部署**:Axis2的部署模型非常直观,可以通过简单的XML配置...

    axis1.3官网web应用

    Axis1.3是Apache软件基金会开发的一个开源SOAP(简单对象访问协议)引擎,它主要用于构建Web服务和客户端。SOAP是一种用于交换结构化信息的协议,它基于XML(可扩展标记语言),并广泛应用于分布式系统之间的通信。...

    axis2 生成web服务

    标题中的“axis2 生成web服务”指的是使用Apache Axis2框架来创建和部署Web服务的过程。Apache Axis2是Apache软件基金会开发的一个Web服务基础架构,它提供了强大的功能,包括消息处理、模块化架构以及多种协议支持...

    axis2发布web service

    通过以上步骤,我们成功地使用 Axis2 在 MyEclipse 环境下发布了一个简单的 HelloWorld Web 服务。在整个过程中,我们不仅了解了如何配置 Web 服务的基本结构,还掌握了如何通过 Axis2 进行服务的部署和发布。这对于...

    axis2-web

    8. **互操作性**:作为标准遵从的Web服务框架,Axis2-Web能够与其他遵循WS-I(Web服务互操作性)规范的平台进行无缝交互。 9. **调试与日志**:Axis2-Web内置了详细的日志记录功能和调试工具,帮助开发者跟踪和解决...

    Web服务框架 Apache Axis

    1. **易用性**:Apache Axis提供了一套简单的API和命令行工具,使得开发者能够快速地创建、发布和调用Web服务,无需深入理解底层的复杂技术。 2. **自动代码生成**:基于WSDL,Axis能自动生成服务端的Java stubs和...

    axis2-ws:axis2 Web服务,jax-ws Web服务

    【标题】"Axis2 Web服务与JAX-WS Web服务" 在Java开发中,Web服务是一种常见的通信方式,用于让应用程序之间交换数据。本主题主要关注两种Java实现Web服务的技术:Axis2和JAX-WS。 【Axis2】 Axis2是Apache软件...

    应用 AXIS 开始 Web 服务之旅

    AXIS作为Java平台上的Web服务工具,提供了强大的功能,如自动编码客户端和服务器端的Web服务,支持多种Web服务协议(如SOAP、WSDL),以及WS-I兼容性。AXIS简化了Web服务开发过程,使得开发者无需深入了解底层细节就...

    MyEclipse+Axis2插件开发Web服务

    为了在MyEclipse中使用Axis2进行Web服务开发,首先需要安装Axis2的相关插件。具体步骤如下: 1. **下载Axis2插件** - 可以从[http://apache.justdn.org/ws/axis2/tools/]...

    基于Tomcat5.0和Axis2开发Web Service应用实例

    在Web服务的世界里,Axis2是一个高效且强大的工具,它允许开发者创建、部署和使用SOAP Web服务。本教程将详细介绍如何利用Apache Tomcat 5.0作为应用服务器,以及如何结合Axis2来构建Web Service应用程序。 首先,...

    axis web Service

    1. **示例服务**:展示如何使用Axis创建一个简单的Web服务,包括服务类的编写、WSDL的生成以及服务的发布。 2. **示例客户端**:演示如何使用Axis生成客户端代码并调用发布的Web服务,这通常包括从WSDL生成客户端...

    Eclipse中使用Axis服务器搭建Web Service

    ### Eclipse中使用Axis服务器搭建Web Service 的详细过程与知识点 #### 一、环境准备与配置 **1.1 软件下载准备** 为了在Eclipse中使用Axis服务器搭建Web Service,首先需要准备好一系列必要的软件资源。具体包括...

Global site tag (gtag.js) - Google Analytics