最简单的webservice之xfire,hello word例子

来源:互联网 发布:java 线程池 统一管理 编辑:程序博客网 时间:2024/04/19 20:12

XFire 框架目前的最新版本是 1.2.6,可以访问 xfire.codehaus.org 下载 XFire 框架的安装包,下载时请选择“全部二进制发布包(Binary Distribution in zip package)”,而不仅仅是“XFire jar 文件(Jar of all XFire modules)”。

1、

<?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">
     <display-name>XFire实例</display-name>
     <description>基于XFire框架发布Web服务的例子</description>
     
      <servlet>
      <servlet-name>XFireServlet</servlet-name>
      <display-name>XFire Servlet</display-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>
   <!--  -->
  
 <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
  
 
 

</web-app>

2、

package org.vivianj.xfire.pojo;

 /**
 * HelloWorldService 中声明需要发布成 Web 服务的所有 Java 方法
 * HelloWorldService 作为Web服务接口
 */
 public interface HelloWorldService {
 /**
      * sayHello 方法声明了 Web 服务对外暴露的接口
  *
  * @return 返回给客户端的字符串
  */
 public String sayHello();
}

3、

package org.vivianj.xfire.pojo;


public class HelloWorldServiceImpl implements HelloWorldService {


 public String sayHello() {
  return "Hello World!";
 }

}
4、把文件放在src下的META-INF文件夹下 即META-INF/xfire/services.xml

 <beans xmlns="http://xfire.codehaus.org/config/1.0">

<service>
 <name>HelloWorldService</name>
 <namespace>http://vivianj.org/HelloWorldService</namespace>
 <serviceClass>
  org.vivianj.xfire.pojo.HelloWorldService
 </serviceClass>
 <implementationClass>
  org.vivianj.xfire.pojo.HelloWorldServiceImpl
 </implementationClass>
</service>
 </beans>

其中各元素的功能如下:

service
service 标签和它所包含的 xml 内容为发布成 Web 服务的 POJO 提供完整的描述。

name
Web 服务被发布时所采用的唯一名称。

namespace
Web 服务发布时所使用的命名空间。

serviceClass
Web 服务接口类的全名,包括包名和类名。

implemetationClass
Web 服务实现类的全名,包括包名和类名。

更多 service 元素的子元素和它们的用法请参考 XFire 站点。

5、

等 TOMCAT 服务器完全启动后,打开浏览器,在地址栏中输入 http://localhost:8080/XFire/services/HelloWorldService?wsdl
其中 HelloWorldServcie 是配置文件中 service/name 元素所定义的内容,”wsdl”参数表示查看该 Web 服务的 WSDL(Web服务描述语言)文件。

6、等通了之后,建立一个客户端

package sha.xfire.test;
 
 import java.net.MalformedURLException;

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

public class Client {

   public static void main(String[] args) {

        Service srvcModel = new ObjectServiceFactory()
                .create(HelloWorldService.class);
        XFireProxyFactory factory = new XFireProxyFactory(XFireFactory
                .newInstance().getXFire());

        String helloWorldURL = "http://localhost:8080/XFire/services/HelloWorldService";
        try {
            HelloWorldService srvc = (HelloWorldService) factory.create(srvcModel,
                   helloWorldURL);
            System.out.println(srvc.sayHello());
           //http://localhost:8080/XFire/services/HelloWorldService?wsdl
           
        } catch (MalformedURLException e) {
            e.printStackTrace();
       }

   }

}

7.

这样各个系统之间就可以通过接口互相调用了,当然要有类和jar包的支持才行,哈哈!