`
tenn
  • 浏览: 566660 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

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



可以看出,在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里即可。

分享到:
评论

相关推荐

    axis安装及web服务发布

    详细描述了axis的安装过程,并实现了一个简单的web services 的发布

    jdk tomcat axis 安装配置 web service 发布

    本文详细介绍了jdk tomcat axis 的安装配置,并发布了一个简单的web 服务

    axis2入门及简单例子

    Axis2 是一个基于 Java 的 Web 服务框架,它提供了一个灵活、可扩展、可靠的方式来创建、部署和管理 Web 服务。Axis2 是 Apache 软件基金会的一个开源项目,是基于 SOAP 和 WSDL 的 Web 服务实现。 一、准备工作 1...

    axis2发布示例

    axis2发布webservice,随着普通web工程发布;本示例简单明了,代码注释中附有发布步骤,导入工程即可运行,无须下载任何jar包。 工程中也有调用发布后接口的代码执行main方法即可

    Axis开发Webservice的简单步骤

    axis全称Apache EXtensible Interaction System 即阿帕奇可扩展交互系统。 本例主要对axis用实例进行简单发布,实现两个项目之间的通信。

    Java之Web服务开发方法论图解..pdf

    本文将详细介绍使用Axis2和CXF开发Web服务的方法论图解。Web服务是基于SOAP(Simple Object Access Protocol)的应用程序之间的交互方式,是一种基于XML的远程过程调用(RPC)机制。 Axis2 Axis2是Apache软件组织...

    xfire教程+axis+webservice

    XFire是codeHaus组织提供的一个开源框架,它构建了POJO和SOA之间的桥梁,主要特性就是支持将POJO通过非常简单的方式发布成Web服务,这种处理方式不仅充分发挥了POJO的作用,简化了Java应用转化为Web服务的步骤和过程...

    Webservice之Axis高级编程

    1.1 AXIS第一课:最简单的发布AXIS的Web Service 1.2 AXIS第二课:工程应用中的AXIS的发布方法Stub 1.3 AXIS第三课:AXIS高级应用,使用Handler来增强Web服务的功能 1.4 AXIS第四课:AXIS高级应用,建立安全的AXIS...

    axis1.4.1常用

    Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。 Axis总体上是一个SOAP引擎,但又不仅仅是个引擎,它还是: 1)是一个简单的独立的服务器 2...

    Axis高级编程

    最简单的发布AXIS的Web Service 工程应用中的AXIS的发布方法Stub AXIS高级应用,使用Handler来增强Web服务的功能 AXIS高级应用,建立安全的AXIS服务 AXIS高级应用,在AXIS服务间传递JavaBean及其安全解决 使用...

    AXIS开发webservice

    3. 修改WEB.XML文件,最简单的方法是:直接把 \axis-bin-1_4\axis-1_4\webapps\axis\WEB-INF\web.xml 里面的内容复制过来就可以了 4. 编写一个业务类:Caculator.java public class Caculator { public int add...

    利用Java编写简单的WebService实例

    在本文中,我们详细介绍了如何使用 Java 编写简单的 WebService 实例,并使用 Apache Axis 将其发布到 Tomcat 下的 Web 应用中。通过本文,我们可以了解到 WebService 的基本概念和实现方式,以及如何使用 Java 和 ...

    webservice的创建以及部署过程1

    在 Axis 的 src 目录下编辑服务端代码,例如编写一个简单的 Hello 服务。服务端代码需要继承自 Axis 的服务类,并实现服务的业务逻辑。 step3: 编写发布文件 编写发布文件是为了将服务端代码部署到 Axis 服务器上...

    编程入门_Eclipse教程

    3.1. Axis2的简单WebService示例 10 3.1.1. 0配置POJO的Webservice 10 3.1.2. 用axis2的辅助工具发布、调用WebService 12 3.1.3. WebService会话Session的管理 24 3.1.4. 用Spring创建的JavaBean发布成WebService 29...

    webservice接口测试

    使用wsCaller软件的方法非常简单,下面是wsCaller的主界面: 首先在WSDL Location输入框中输入你想调用或想测试的Web Service的WSDL位置,如“http://www.somesite.com/axis/services/StockQuoteService?wsdl”,...

    Axsis and XFire Demo src code

    1.2 Axis发布Web Service 1.2.1 传递简单数据类型的Web Service 1. 把Axis依赖的jar包放入lib文件夹下. 2. 在web.xml中加入如下: &lt;!-- ****************** axis ws start ****************** --&gt; org....

    java调用webservice接口方法[文].pdf

    Webservice 的发布一般都是使用 WSDL(Web Service Descriptive Language)文件的样式来发布的。在 WSDL 文件里面,包含这个 Webservice 暴露在外面可供使用的接口。WSDL 文件提供了 Webservice 的详细描述,包括...

    分布式通信框架-webservice分析笔记1

    它提供了一个基于 web 的服务接口,让客户端可以访问服务器端的服务。 二、webservice 协议层 webservice 协议层包括 TCP/IP 应用层和 HTTP 协议。在 HTTP 协议中,我们使用 SOAP 协议来封装请求和响应报文。SOAP ...

    使​用​A​x​i​s​和​x​f​i​r​e​发​布​调​用​W​e​b​S​e​r​v​i​c​e​s

     3 1.2 Axis发布Web Service ........................................................................................................ 4  1.2.1 传递简单数据类型的Web Service ......................

    realtime_data_processor:用 web2py 编写的通用实时数据处理器

    realtime_data_processor 用 web2py 编写的通用实时数据处理器。 目标是使获取实时数据图表变得更加简单,而无需创建自己的系统来显示它。... 这将带您进入 feed_data 页面,它会向您显示将数据发布到的 url

Global site tag (gtag.js) - Google Analytics