`
ganjp
  • 浏览: 72119 次
  • 性别: Icon_minigender_1
  • 来自: 其实还可以
社区版块
存档分类
最新评论

XFire的使用小结

阅读更多

以前就开始看过一些XFire的资料,但是每一次都是按照书写的例子才能写出一些基本的例子,根本不理解,目前又做了一种发布webservice的方式 通过继承XFireServlet的方式,这种方式的好处就是简单 不需要配置services.xml文件 


User
public class User {
private int id;
private String name;

public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

}

 


UserManager
public interface UserManager {
List findAllUser();
}

    UserManagerImpl

public class UserManagerImpl implements UserManager {

	public List findAllUser() {
		List list = new ArrayList();
		for(int i = 1 ; i <= 3 ; i ++) {
			User user = new User();
			user.setId(i);
			user.setName("user" + i);
			list.add(user);
		}
		return list;
	}

}

    最简单的两个方法

建立一个SOAPServlet继承XFireServlet,覆盖init()方法,在init()方法里面注册自己的服务:
public class SOAPServlet extends XFireServlet {
@Override
public void init() throws ServletException {
  super.init();
  ServiceRegistry registry = this.getXFire().getServiceRegistry();
  ObjectServiceFactory factory = new ObjectServiceFactory();
  Service service = factory.create(UserManager.class); // 根据具体类型创建服务
  service.setInvoker(new BeanInvoker(new UserManagerImpl())); // 设定服务调用模式
  registry.register(service); // 向服务管理注册服务
}
}

   注意一下super.init(),是必须加的,因为XFire核心的 Http Transprot是通过 XFireServletController实现的,我们可以来看下XFireServlet的init()方法里面都干了什么

写道
public void init()
throws ServletException
{
try
{
super.init();
xfire = createXFire();
controller = createController();//这里去创建XFireServletController
}
catch (Throwable tx)
{
// log.er
logger.error("Error initializing XFireServlet.", tx);
throw new ServletException("Error initializing XFireServlet.", tx);
}
}

 如果没有init()就会报空指针错误,当然这个错误很明显 会提示你XFireServletController为空,我只是在这里说明下,因为小弟水平太次了,就犯了这个错误,一看空指针也没有看详细信息就以为失败了,真是太2了。


再配置下web.xml把我们的servlet配置进去:

写道
<servlet>
<servlet-name>SOAPServlet</servlet-name>
<servlet-class>com.soap.SOAPServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SOAPServlet</servlet-name>
<url-pattern>/soap/*</url-pattern>
</servlet-mapping>

 好了启动服务访问下:

http://127.0.0.1:8080/webservice/soap/UserManager?wsdl


呵呵,估计又报错了,说类型不能识别,使用jdk1.5以上的朋友可以加上泛型把上面的List 都改成List<User>再跑就行了,但是很多情况下又得去支持jdk1.4那么我们就必须在接口的目录下添加一个xxx.aegis.xml文件了:


这里就是UserManager.aegis.xml配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<mappings>
    <mapping>
        <method name="findAllUser">
            <return-type componentType="com.soap.User"/>
        </method>
    </mapping>
</mappings>


相信大家一看就知道这个文件的意思了,但是为了帮助跟我一样的菜鸟  我稍微解释下这个文件的意思:

第一行不用说,xml的固定写法:

<mappings>下的mapping映射的<method>就是我们接口中的方法,为什么要这个配置文件呢,因为XFire只支持八种基本类型,有时候我都忘了八种基本类型有char和short了(char byte short  int long double float boolean 呵呵 这里补充下,真是太菜了,要不说出去都丢人了),好了 也就是说不是这八种类型 不管是参数 和 返回值  XFire都不知道,就需要我们手动配置了


<method name="findAllUser"> //name属性 方法名为findAllUser 

           //如果你的方法里面有参数也不是这八种基本类型 比如有个参数是 User user ,String str

          //配置

<parameter index="0" keyType="com.soap.User" componentType="com.soap.User" mappedName="user"/>   //名称就知道了 我就 不解释了

  <parameter index="1" keyType="java.lang.String" componentType="java.lang.String" mappedName="str"/>
            <return-type componentType="com.soap.User"/> //返回类型的List中封装的是什么 看来泛型真是个好东西,可惜为了兼容1.4只能忍了
</method>



好了不使用泛型的方式也行了 部署测试下。



可能还有需求我不想用web方式  用j2se方式 能发布xfire吗,答案是肯定的,XFire为我们提供了一个XFireHttpServer ,在上面那个基础上我写了一个文件:

public class ServiceStarter {
   
    XFireHttpServer server;
   
    public void start() throws Exception {
        //创建service
        ObjectServiceFactory serviceFactory = new ObjectServiceFactory();
        Service endpoint = serviceFactory.create(UserManager.class);
        Service endpoint1 = serviceFactory.create(WebserviceInterface.class);
       
        endpoint.setInvoker(new BeanInvoker(new UserManagerImpl()));
        endpoint1.setInvoker(new BeanInvoker(new Webservicehandler()));
       
        //我这里注册了两个服务  就是为了验证下看能否注册多个接口  上面XFire的例子也是一样的

       //这里就必须手动建立xfire了
        XFire xfire = XFireFactory.newInstance().getXFire();
        xfire.getServiceRegistry().register(endpoint);
        xfire.getServiceRegistry().register(endpoint1);
       
        //建立对象
        server = new XFireHttpServer();

       //设置监听端口
        server.setPort(8081);

     //开启服务
        server.start();
    }


    public void stop() throws Exception {
        server.stop();
    }
   
    public static void main(String[] args) {
        ServiceStarter starter = new ServiceStarter();
        try {
            starter.start();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

这里写的很简单,直接运行下这个方法   然后访问:

http://127.0.0.1:8081/UserManager?wsdl      这种情况估计不常见 知道下就可以了    



还有配置service.xml方式的例子 我就不介绍了,那种例子别人给的太多了 。。。。

 

 

 

分享到:
评论

相关推荐

    Xfire使用说明文档

    总结来说,Xfire提供了一种在Java应用中实现和使用Web服务的简便方式。通过配置Spring和Xfire,服务端可以轻松发布Web服务,而客户端则能通过生成的代理进行调用。然而,需要注意的是,Xfire项目目前已经不再维护,...

    java使用XFire调用webService接口

    "Java 使用 XFire 调用 webService 接口" 在本文中,我们将学习如何使用 XFire 框架在 Java 中调用 webService 接口。XFIRE 是一个基于 Java 的开源框架,用于简化 Web 服务的开发和集成。下面,我们将通过一个简单...

    xfire客户端生成

    总结,XFire客户端生成是Java开发Web服务客户端的一种高效方式,通过自动化的代码生成,开发者可以快速地接入并调用Web服务,大大减少了手动编写客户端代码的工作量。在实际开发中,结合Spring等框架,可以构建出...

    java 调用webservice使用HttpClient和XFire两种方式

    总结起来,Java调用Web Service的方式多样,HttpClient和XFire是其中常见的两个选择。HttpClient提供了基础的HTTP操作,适合对HTTP有自定义需求的场景;而XFire则提供了更高级的功能,简化了Web Service的调用过程。...

    Xfire-v1.99 XFire最高版本

    总结来说,XFire v1.99是Web服务开发的一个里程碑,它为Java开发者提供了一种高效且易于使用的工具,让Web服务的创建变得简单而直观。即使在今天,回顾XFire的历史和技术特性,仍能从中汲取宝贵的开发经验。

    XFire创建的WebService

    总结来说,【XFire创建的WebService】是利用XFire框架构建Web服务的一个实例,这涉及到服务接口的定义、服务实现、XFire的配置、服务部署和测试。虽然XFire在当前的Web服务生态系统中可能不再是最优选,但它仍然是...

    dwr和xfire使用

    虽然DWR主要用于浏览器和服务器之间的直接通信,而XFire是针对Web服务的,但两者可以结合使用。例如,DWR可以用来提供一个友好的用户界面,通过异步调用隐藏在背后的XFire服务,实现复杂的业务逻辑处理。这种方式将...

    Eclipse上使用XFire开发

    ### Eclipse上使用XFire开发WebService知识点详解 #### 一、概述 本文主要介绍如何在Eclipse平台上使用XFire框架来开发WebService。通过本教程的学习,读者可以了解到搭建环境的具体步骤,以及实现一个简单的...

    xfire实现webservice实例

    总结,XFire作为一款早期的Web服务框架,对Java开发者来说是一个快速上手Web服务的良好选择。虽然现在可能不再是最新的选择,但理解其工作原理和使用方法,对于理解Web服务的基本概念和开发流程仍然具有重要意义。...

    xfire的简单实例

    总结来说,xfire的简单实例展示了如何利用这个框架轻松地创建和消费Web服务。通过这个实例,开发者可以快速理解和实践Web服务的基本原理,为更复杂的项目打下坚实的基础。在实际开发中,xfire的灵活性和高效性使其...

    xfire-1.2.6.rar xfire-1.2.6.rar xfire-1.2.6.rar

    总结起来,XFire 1.2.6是一个强大的游戏服务器通信框架,其核心组件和丰富的开发资源为游戏开发者提供了便利。通过深入理解和运用这些组件,开发者可以构建出高效、稳定、用户体验优良的网络游戏服务。同时,XFire的...

    xfire开发所需jar包

    XFire是Apache CXF项目的一部分,它在2005年推出,旨在简化Web服务的创建和使用。XFire基于JAX-RPC规范,提供了一套完整的API,用于处理XML消息的序列化和反序列化,以及服务的发布和消费。其核心优势在于对JAXB和...

    xfire 所有JAR包

    总结,XFire作为一个历史悠久的Java Web服务框架,其设计理念和实现方式对后来的Web服务框架产生了深远影响。通过对这些压缩包文件的分析,我们可以看到XFire如何通过其核心组件和扩展模块提供全面的Web服务解决方案...

    使用xfire开发webservice的客户端需要的完整jar包

    总结来说,使用Xfire开发Web服务客户端涉及导入必要的jar包、配置服务信息、生成代理类以及编写调用代码。虽然Xfire已不再更新,但其简单易用的特点使其在某些场景下依然具有价值。对于新项目,推荐使用更现代的框架...

    XFire1.2.6

    XFire是一款历史悠久的Java...总结,XFire 1.2.6是一个强大而灵活的Web服务开发工具,尤其适合那些希望避免复杂Web服务框架的开发者。通过理解并熟练运用其中的jar文件,开发者可以高效地构建和部署符合标准的Web服务。

    xfire服务端

    - **创建Web服务**:编写一个实现了服务接口的Java类,使用xfire的注解来标记服务方法。例如,可以使用`@WebService`注解标记整个类,`@WebMethod`注解标记具体的服务方法。 - **部署服务**:创建一个`web.xml`文件...

    xfire web service调用代码

    XFire简化了Web服务的创建、部署和使用过程,提供了一种直观的方式来处理XML消息。 三、XFire与Web Service调用 在Java中,使用XFire调用Web服务的基本步骤如下: 1. 创建客户端代理:XFire使用WSDL文档生成客户端...

    webservice XFire xml解析

    总结来说,"webservice XFire xml解析"这个项目涉及到Java Web服务开发,使用了XFire作为框架,XML作为数据交换格式,并在JDK 1.6和Tomcat 6.0环境下运行。通过学习和实践这个项目,你可以掌握Web服务的创建、部署、...

    eclipse下xfire的使用

    总结起来,Eclipse与XFire的结合为Java开发者提供了一个便捷的Web服务开发环境。通过上述步骤,可以快速创建、部署和测试Web服务。对于初学者来说,理解Web服务的概念、学习如何在Eclipse中配置XFire以及编写和测试...

    使用XFire开发一个简单的web服务

    ### 使用XFire开发一个简单的Web服务 在Java领域中,Web服务是一种常用的技术手段,用于实现不同系统间的通信。XFire作为一个轻量级且功能强大的Web服务框架,它简化了开发过程,使得开发者能够更容易地创建和部署...

Global site tag (gtag.js) - Google Analytics