在Eclipse中,用XFire发布web服务

环境: Eclipse SDK 3.2.2 Tomcat5.5.20 XFire-1.2.6
    首先建立一个动态 web 项目,命名为“ WSProject ”,将 xfire-distribution-1.2.6.zip(http://xfire.codehaus.org/Download) 解压缩后,把 xfire-all-1.2.6.jar lib 目录下的所有 jar 包都拷贝到项目的 WebContent/WEB-INF/lib 目录下。编写一个用于发布的类文件 HelloService.java 。这里我用一个简单的类,它接受传来的 name 参数,返回 { name } ,你好!”。代码如下:
1 package  hao;
2
3 public   class  HelloService  {
4    public String sayHello(String name){
5        return name+",你好!";
6    }

7}

8
    下一步就是对 XML 文件的配置,这些配置非常关键,大多错误也出在这上面。
    先说services.xml,它是对所有要发布的服务的描述文件,xfire就是依据这些信息来发布你的服务。这里针对我们刚才那个类建立services.xml。内容如下:
<? xml version="1.0" encoding="UTF-8" ?>
< beans  xmlns ="http://xfire.codehaus.org/config/1.0" >
  
< service >
    
< name > HelloService </ name >
    
< serviceClass > hao.HelloService </ serviceClass >
  
</ service >
</ beans >

        service 标签的子标签不止这两个,但其余的都是可选的。关于 services 的更多描述,请参阅 xfire 的官方网站。文件建好了,就是把它放到项目的哪个位置的问题了,这里我在项目的 WebContent/ META-INF 目录下面新建一个 xfire 文件夹,把 services.xml 文件放到这个新建文件夹里。最后再把 META-INF 文件夹整个移到 WebContent/ WEB-INF 目录下,这时 services.xml 文件的配置全部完成,如果我说的还不清楚,请直接看图一,图中左侧有文件结构,只要照那个结构调整项目中的文件及文件夹的位置就可以了。
    注意,如果services.xml文件的放置位置不对,在用http://localhost:8080/WSProject/services/网址访问服务器时,会抛出下面的异常:
Exception
    javax.servlet.ServletException: Error initializing XFireServlet.
root cause

       org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [META-INF/xfire/services.xml]; nested exception is java.io.FileNotFoundException: class path resource [META-INF/xfire/services.xml] cannot be opened because it does not exist

    然后是web.xml文件,在项目已有的web.xml文件基础上修改一下就可以。修改后的最终内容如下:

<? xml version="1.0" encoding="UTF-8" ?>
< web-app  version ="2.4"  xmlns ="http://java.sun.com/xml/ns/j2ee"  xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation ="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
  
< servlet >
    
< servlet-name > XFireServlet </ servlet-name >     
    
< servlet-class >
        org.codehaus.xfire.transport.http.XFireConfigurableServlet
    
</ servlet-class >
  
</ servlet >
  
< servlet-mapping >
    
< servlet-name > XFireServlet </ servlet-name >
    
< url-pattern > /servlet/XFireServlet/* </ url-pattern >
  
</ servlet-mapping >
  
< servlet-mapping >
    
< servlet-name > XFireServlet </ servlet-name >
    
< url-pattern > /services/* </ url-pattern >
  
</ servlet-mapping >     
</ web-app >

    到这里第一部分的所有步骤已经完成,打开Tomcat,在服务器上运行这个动态web项目。输入网址http://localhost:8080/WSProject/services/HelloService?wsdl,如果正确发布,会得到如图一中显示的wsdl文档。

                                                图一  
    以后要访问这个
web服务的wsdl文件,只需要把Tomcat打开,然后输入上面的网址就可以了,这在第二部分创建客户端访问web服务时要用到。好了,web服务的发布就完成了。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值