以前就开始看过一些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提供了一种在Java应用中实现和使用Web服务的简便方式。通过配置Spring和Xfire,服务端可以轻松发布Web服务,而客户端则能通过生成的代理进行调用。然而,需要注意的是,Xfire项目目前已经不再维护,...
"Java 使用 XFire 调用 webService 接口" 在本文中,我们将学习如何使用 XFire 框架在 Java 中调用 webService 接口。XFIRE 是一个基于 Java 的开源框架,用于简化 Web 服务的开发和集成。下面,我们将通过一个简单...
总结,XFire客户端生成是Java开发Web服务客户端的一种高效方式,通过自动化的代码生成,开发者可以快速地接入并调用Web服务,大大减少了手动编写客户端代码的工作量。在实际开发中,结合Spring等框架,可以构建出...
总结起来,Java调用Web Service的方式多样,HttpClient和XFire是其中常见的两个选择。HttpClient提供了基础的HTTP操作,适合对HTTP有自定义需求的场景;而XFire则提供了更高级的功能,简化了Web Service的调用过程。...
总结来说,XFire v1.99是Web服务开发的一个里程碑,它为Java开发者提供了一种高效且易于使用的工具,让Web服务的创建变得简单而直观。即使在今天,回顾XFire的历史和技术特性,仍能从中汲取宝贵的开发经验。
总结来说,【XFire创建的WebService】是利用XFire框架构建Web服务的一个实例,这涉及到服务接口的定义、服务实现、XFire的配置、服务部署和测试。虽然XFire在当前的Web服务生态系统中可能不再是最优选,但它仍然是...
虽然DWR主要用于浏览器和服务器之间的直接通信,而XFire是针对Web服务的,但两者可以结合使用。例如,DWR可以用来提供一个友好的用户界面,通过异步调用隐藏在背后的XFire服务,实现复杂的业务逻辑处理。这种方式将...
### Eclipse上使用XFire开发WebService知识点详解 #### 一、概述 本文主要介绍如何在Eclipse平台上使用XFire框架来开发WebService。通过本教程的学习,读者可以了解到搭建环境的具体步骤,以及实现一个简单的...
总结,XFire作为一款早期的Web服务框架,对Java开发者来说是一个快速上手Web服务的良好选择。虽然现在可能不再是最新的选择,但理解其工作原理和使用方法,对于理解Web服务的基本概念和开发流程仍然具有重要意义。...
总结来说,xfire的简单实例展示了如何利用这个框架轻松地创建和消费Web服务。通过这个实例,开发者可以快速理解和实践Web服务的基本原理,为更复杂的项目打下坚实的基础。在实际开发中,xfire的灵活性和高效性使其...
总结起来,XFire 1.2.6是一个强大的游戏服务器通信框架,其核心组件和丰富的开发资源为游戏开发者提供了便利。通过深入理解和运用这些组件,开发者可以构建出高效、稳定、用户体验优良的网络游戏服务。同时,XFire的...
XFire是Apache CXF项目的一部分,它在2005年推出,旨在简化Web服务的创建和使用。XFire基于JAX-RPC规范,提供了一套完整的API,用于处理XML消息的序列化和反序列化,以及服务的发布和消费。其核心优势在于对JAXB和...
总结,XFire作为一个历史悠久的Java Web服务框架,其设计理念和实现方式对后来的Web服务框架产生了深远影响。通过对这些压缩包文件的分析,我们可以看到XFire如何通过其核心组件和扩展模块提供全面的Web服务解决方案...
总结来说,使用Xfire开发Web服务客户端涉及导入必要的jar包、配置服务信息、生成代理类以及编写调用代码。虽然Xfire已不再更新,但其简单易用的特点使其在某些场景下依然具有价值。对于新项目,推荐使用更现代的框架...
XFire是一款历史悠久的Java...总结,XFire 1.2.6是一个强大而灵活的Web服务开发工具,尤其适合那些希望避免复杂Web服务框架的开发者。通过理解并熟练运用其中的jar文件,开发者可以高效地构建和部署符合标准的Web服务。
- **创建Web服务**:编写一个实现了服务接口的Java类,使用xfire的注解来标记服务方法。例如,可以使用`@WebService`注解标记整个类,`@WebMethod`注解标记具体的服务方法。 - **部署服务**:创建一个`web.xml`文件...
XFire简化了Web服务的创建、部署和使用过程,提供了一种直观的方式来处理XML消息。 三、XFire与Web Service调用 在Java中,使用XFire调用Web服务的基本步骤如下: 1. 创建客户端代理:XFire使用WSDL文档生成客户端...
总结来说,"webservice XFire xml解析"这个项目涉及到Java Web服务开发,使用了XFire作为框架,XML作为数据交换格式,并在JDK 1.6和Tomcat 6.0环境下运行。通过学习和实践这个项目,你可以掌握Web服务的创建、部署、...
总结起来,Eclipse与XFire的结合为Java开发者提供了一个便捷的Web服务开发环境。通过上述步骤,可以快速创建、部署和测试Web服务。对于初学者来说,理解Web服务的概念、学习如何在Eclipse中配置XFire以及编写和测试...
### 使用XFire开发一个简单的Web服务 在Java领域中,Web服务是一种常用的技术手段,用于实现不同系统间的通信。XFire作为一个轻量级且功能强大的Web服务框架,它简化了开发过程,使得开发者能够更容易地创建和部署...