最简单的webservice工程,xfire简单示例

本文介绍如何使用MyEclipse创建一个简单的WebService项目,并部署到Tomcat服务器。从搭建工程、定义接口和服务实现,到配置services.xml文件,一步步详解过程。同时,提供了一个客户端示例验证服务的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.首先建立一个web service工程 工程名称 HelloWorld(很重要)
     

 


点击finish之后,myeclipse自动帮你生成services.xml以及web应用目录结构,其中的services.xml是你导出服务的配置文件,注意在WEB-INF/web.xml文件中配置了xfire自己的servlet.
<servlet>
    <servlet-name>XFireServlet</servlet-name>
    <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>XFireServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>

2.接下来,现在编写要导出的pojo类,首先是接口:
package net.rubyeye.webservicedemo;

//Generated by MyEclipse

public interface IHelloWorldService {
    
    public String sayHello(String name);
    
}
这个接口我们只提供一个方法:sayHello(),我们没有采用JSR181标注式的声明方式,还是采用xml配置文件。然后是实现类:
package net.rubyeye.webservicedemo;

//Generated by MyEclipse

public class HelloWorldServiceImpl implements IHelloWorldService {
    
    public String sayHello(String name){
        return "hello,"+name;
    }
    
    
}
最后,配置下services.xml文件:
<service>
        <name>HelloWorldService</name>
        <serviceClass>
            net.rubyeye.webservicedemo.IHelloWorldService
        </serviceClass>
        <implementationClass>
            net.rubyeye.webservicedemo.HelloWorldServiceImpl
        </implementationClass>
        <style>wrapped</style>
        <use>literal</use>
        <scope>application</scope>
    </service>
我们的web服务名称叫做HelloWorldService,接口是IHelloWorldService,实现类是HelloWorldServiceImpl。注意,其实我们这三个步骤可以一步完成,只要直接使用myeclipse的new web service向导即可

 

3. 然后将此工程部署到tomcat上,通过http://localhost: 8081/HelloWorld/services/HelloWorldService?wsdl可以看到生成的wsdl文件。注意,在部署之后, services会被拷贝到WEB-INF/classes/META-INF/xfire目录下,xfire会自动搜索此目录并加载配置文件。我们可以 编写一个client来测试web服务,你也可以点击myeclipse上的Launch the Web Services来测试web服务

 

4.编写client代码:

package net.rubyeye.webservicedemo;

import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.List;

import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;

public class HelloWorldClient {
    public static void main(String args[]) {
        Service srvcModel = new ObjectServiceFactory()
                .create(IHelloWorldService.class);
        XFireProxyFactory factory = new XFireProxyFactory(XFireFactory
                .newInstance().getXFire());
        
        String helloWorldURL = "http://localhost:8081/HelloWorld/services/HelloWorldService";
        try {
            IHelloWorldService srvc = (IHelloWorldService) factory.create(
                    srvcModel, helloWorldURL);
            System.out.print(srvc.sayHello("dennis"));
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

    }
}

执行,打印:hello,dennis

注意,你也可以使用MyEclipse的new webservice client向导自动生成client,同时生成供客户端调用的stub类等。
上文是我学习webservice时候学习到的看到的文章.

但是我在学习过程中发现了两个初学容易混淆的问题:1. String helloWorldURL = "http://localhost:8081/HelloWorld/services/HelloWorldService" 访问地址不能把握,;研究发现 HelloWorld 就是工程名称.   HelloWorldService是 在service.xml配的nama结点.  新手容易发现 code=404错误

问题:2 访问 出现 not close tag  是因为 web传过来的信息有错误 原因是由于service.xml格式或编码不对

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值