转载:oksonic博客
制作工具:Eclipse3.2 MyEclipse5.0m2 Tomcat5.5.x
一、一个简单的 web service 新建一个 web service 工程,名称为 xfire 新建一个 java 文件,名称为 Hello.java,内容如下: -------------------------------------------------------------------------------------
package com.test;
public class Hello {
public String getName(String name){
return "Hello world " + name;
}
}
------------------------------------------------------------------------------------- 修改Web Services目录下的 services.xml 文件,内容如下: < beans xmlns = "http://xfire.codehaus.org/config/1.0" >
< service >
< name > Hello </ name >
< namespace > http://www.oksonic.cn/xfire </ namespace >
< serviceClass > com.test.Hello </ serviceClass >
</ service >
</ beans >
< name > Hello </ name > 服务名称
< serviceClass > com.test.Hello </ serviceClass > 服务类
现在可以部署项目,使用以下链接访问: http://localhost/xfire/services/Hello?wsdl
注:我的端口已经修改为80,如果没有修改过的话请使用 http://localhost:8080/xfire/services/Hello?wsdl
网上原有的教程中提到可以使用 http://localhost/xfire/services/ 访问,但测试时出现无法连接 页面中出现 xml 文件内容表示服务正常
二、使用 jsr181 风格
--------------------- 介绍 摘抄自 XFire 实战 ------------------------
JSR 181通过标准化一个易于学习且可以快速开发的Web服务简单编程模型,从而刺激了对Web服务的采用。一直以来,J2EE开发人员要开发和部署Web服务就必须掌握相当多的信息。通过使用J2SE 5.0中的新增注释功能,Java软件源代码可以使用JSR 181注释进行注释,从而声明式地定义所需的Web服务行为。这使开发人员可以将注意力集中在Web服务的应用逻辑上而无需担心复杂的API、协议和部署描述符。 BEA官方网站有一篇 “ web服务元数据简介 ” ,对理解JSR 181规范很有帮助。 这一节的例子和上一节的例子很相似,或者通过使用java注释,比上一节的POJO稍微复杂了一点。不是说JSR 181节省了很多的配置信息吗?鄙人认为可以从这个方面来理解,正常情况下,POJO如果配置到其他webservices框架下,比如axis2、Celtix、weblogic等容器中,必然需要编写适合这些容器的配置文件,以便这些容器能够识别这个POJO类是wenservices,并根据配置文件中的比如命名空间、参数类型、web服务的方法等信息提供web服务。而通过jsr 181规范中的定义可以自动识别这些信息,这样这些信息不必在每个容器中所配置,这些容器通过java注释就可以得到这些信息,所以说jsr181在这方面进行了简化。XFire通过services.xml文件得到哪个类被定义为web服务, XFire可以通过java注释来获取web服务的相关信息。
------------------------------------------------------------------------------------- 修改 Hello.java 文件,内容如下:
-------------------------------------------------------------------------------------
package com.test;
import javax.jws.WebMethod;
import javax.jws.WebParam; i
mport javax.jws.WebResult;
import javax.jws.WebService;
@WebService (name= "Hello" ,serviceName= "Hello" , targetNamespace= "http://www.oksonic.cn/xfire" )
public class Hello {
@WebMethod
@WebResult
public String getName( @WebParam String name){ return "Hello world " + name;
}
}
------------------------------------------------------------------------------------- 修改 services.xml 文件,内容如下:
-------------------------------------------------------------------------------------
< beans xmlns = "http://xfire.codehaus.org/config/1.0" >
< service >
< serviceClass > com.test.Hello </ serviceClass >
< serviceFactory > jsr181 </ serviceFactory >
</ service >
</ beans >
------------------------------------------------------------------------------------- 启动服务,现次测试,没什么变化,服务正常
三、对 xfire 进行单元测试
--------------------- 介绍 摘抄自 XFire 实战 ------------------------
你不必发布到 tomcat 等容器中就可以进行测试,常用的测试类常继承 AbstractXFireTest 抽像类。 AbstractXFireSpringTest 类又实现了 AbstractXFireTest 类,AbstractXFireTest 类是 TestCase 的子类,所以你可以使用 junit 进行单元测试。
------------------------------------------------------------------------------
新建一个 JUnit case ,这是为了让 IDE 自动增加 JUnit 相关的类库 新建一个 java 文件,名称为 HelloTest.java,此类继承 AbstractXFireSpringTest, 实现一个 createContest 方法,内容如下:
------------------------------------------------------------------------------
package test.com.test;
import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;
import org.codehaus.xfire.spring.AbstractXFireSpringTest;
import org.jdom.Document;
import org.springframework.context.ApplicationContext;
public class HelloTest extends AbstractXFireSpringTest {
@Override
protected ApplicationContext createContext() {
return new ClassPathXmlApplicationContext( new String[] {
"/org/codehaus/xfire/spring/xfire.xml" ,
"/META-INF/xfire/services.xml" });
}
public void testService() throws Exception {
Document wsdl = getWSDLDocument( "Hello" );
printNode(wsdl);
}
}
------------------------------------------------------------------------------
为了让 createContext 方法可以找到 services.xml 文件,需要把 Web Services 目录下的 services.xml 拷贝到 src/ META-INF/xfire 目录下
不用启动 tomcat 直接在 HelloTest.java 文件上点击鼠标右键 Run as --> Junit ... 进行测试,
结果显示绿色条,通过测试!
关于其它的测试方法请查看《XFire实战.pdf》
四、和 Spring 集成 新建一个 service 层接口 IHelloService,内容如下:
------------------------------------------------------------------------------ package com.test.services;
public interface IHelloService {
public String getName(String name);
}
------------------------------------------------------------------------------
创建接口的实现 HelloService,内容如下:
------------------------------------------------------------------------------
package com.test.services.impl;
import com.test.services.IHelloService;
public class HelloService implements IHelloService {
public String getName(String name) {
return "Hello World " + name;
}
}
------------------------------------------------------------------------------
添加 spirng 框架,设置将 applicationContext.xml 文件创建到 WEB-INF 目录下
修改 applicationContext.xml 文件,内容如下:
------------------------------------------------------------------------------
<? xml version = "1.0" encoding = "UTF-8" ?>
<! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
< beans >
< bean id = " helloBean " class = "com.test.services.impl.HelloService" />
</ beans >
------------------------------------------------------------------------------
在 WEB-INF 目录下新建 xfire -servlet.xml 文件,文件内容如下:
------------------------------------------------------------------------------
<? xml version = "1.0" encoding = "UTF-8" ?>
<! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
< beans >
< bean class = "org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" >
< property name = "urlMap" >
< map >
<!-- 配置 service 名称和 Service Bean -->
< entry key = "/Hello" >
< ref bean = " hello " />
</ entry >
</ map >
</ property >
</ bean >
< bean id = " hello " class = "org.codehaus.xfire.spring.remoting.XFireExporter" > < property name = "serviceFactory" >
< ref bean = "xfire.serviceFactory" />
</ property >
< property name = "xfire" >
< ref bean = "xfire" />
</ property >
< property name = "serviceBean" >
< ref bean = " helloBean " />
</ property >
< property name = "serviceClass" >
< value > com.test.services.IHelloService </ value >
</ property >
</ bean >
</ beans >
------------------------------------------------------------------------------
注意:红色字体部份必需一r致,深红色字体部份要和 spring 的配置文件部份一致 修改 web.xml 文件,增加 spring 配置部份,修改 xfire 的名称
------------------------------------------------------------------------------
<? xml version = "1.0" encoding = "UTF-8" ?>
< web-app xmlns = "http://java.sun.com/xml/ns/j2ee"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" version = "2.4"
xsi:schemaLocation = "http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
< context-param >
< param-name > contextConfigLocation </ param-name >
< param-value >
/WEB-INF/applicationContext.xml
classpath:org/codehaus/xfire/spring/xfire.xml
</ param-value >
</ context-param >
< listener >
< listener-class >
org.springframework.web.context.ContextLoaderListener
</ listener-class >
</ listener >
< servlet >
< servlet-name > xfire </ servlet-name >
< servlet-class >
org.springframework.web.servlet.DispatcherServlet
</ servlet-class >
< load-on-startup > 0 </ load-on-startup >
</ servlet >
< servlet-mapping >
< servlet-name > xfire </ servlet-name >
< url-pattern > /services/* </ url-pattern >
</ servlet-mapping >
</ web-app >
重启服务,进行测试!!! 一切正常,现在用一个web service测试工具进行一下测试
分享到:
相关推荐
在文件列表中,"xfire开发web service文档.doc"可能是主文档,包含了整个教程的详细内容,包括理论解释、示例代码、步骤指南和可能的截图,以帮助读者逐步学习和实践使用XFire创建Web服务。 总的来说,这个压缩包...
【MyEclipse+xFire开发Web Service】是一个关于如何使用MyEclipse集成开发环境和xFire框架来构建和测试Web服务的教程。xFire是一个基于Java的SOAP框架,它提供了轻量级的信息处理机制,利用STAX进行SOAP消息处理。这...
在这个“xfire开发Web Service接口第一个程序源代码”的资源中,我们将探讨如何利用Xfire来开发一个简单的Web服务。 首先,理解Web服务的基本概念是至关重要的。Web服务通常基于SOAP(Simple Object Access ...
这个版本可能是Xfire Web Service的一个稳定版本,适合开发者进行产品开发或学习使用。 以下是Xfire Web Service的一些关键知识点: 1. **SOAP(Simple Object Access Protocol)**:Xfire Web Service可能基于...
【使用XFire编写web service的上传文件例子详解】 在IT领域,Web Service是一种基于标准的、平台无关的方式,用于应用程序之间的交互。XFire是Apache CXF的前身,它是一个轻量级的Java框架,用于构建和消费Web服务...
标题中的“eclipse使用xfire开发webservices server”意味着我们将使用Eclipse IDE和XFire来创建和部署一个Web服务服务器。以下是一步步的操作步骤: 1. **安装Eclipse和XFire插件**:首先确保你的Eclipse已经安装...
接下来,我们将探讨使用XFire实现Web Service的步骤: 1. **安装和配置XFire**: 首先,你需要下载XFire的库文件并将其添加到你的项目类路径中。这通常涉及到在构建路径中包含`xfire-assembly-x.x.x.jar`和其他...
MyEclipse是一款功能强大的Java EE集成开发环境,它扩展了Eclipse的功能,特别适合于开发Web应用程序。在本示例中,MyEclipse将作为开发Web服务和客户端代码的平台,提供了一套完整的工具集,包括代码编辑、调试、...
【使用XFire+Spring构建Web Service】是一种高效且灵活的方法,尤其适合于那些希望利用Spring框架的优秀特性来开发Web Service应用的开发者。XFire是一个先进的Web Service框架,与Axis2并列为新一代的选择,因其...
### 第15章 开发XFire Web Service应用 #### 15.1 引言 ##### 15.1.1 WebService简介 WebService(Web服务)是一项最初由微软和IBM提出的技术规范,旨在实现不同编程语言之间的网络功能互通互联。它的核心特性...
### 第十五章 开发XFire Web Service应用 #### 15.1 引言 ##### 15.1.1 WebService简介 WebService(通常译作Web服务)是由微软和IBM等公司共同提出的一项技术规范,它允许在互联网上通过标准的协议(如HTTP)...
通过本章的学习,开发者不仅掌握了使用XFire和MyEclipse开发Web服务的基础知识,还深入了解了Web服务的原理、开发流程和技术要点。无论是创建简单的“Hello World”服务,还是构建复杂的天气预报客户端,都能够...
2. **新建WTP动态WEB工程**:创建一个Web项目,用于部署Web Service应用。 3. **实现服务**:在Java项目中定义服务接口,然后实现该接口,添加业务逻辑。 4. **利用Spring、XFire装配与暴露服务**:在Spring配置文件...
【xfire开发Web Service接口开发】是一个针对初学者的教程,旨在帮助开发者了解如何使用Xfire框架构建Web Service接口。Xfire是早先流行的一款Java Web Service框架,它简化了SOAP(Simple Object Access Protocol)...
### MyEclipse+XFire开发Web Services #### 实验背景与目标 随着互联网技术的发展,Web Services作为一种重要的软件架构模式,在分布式系统中的应用越来越广泛。它允许不同平台、语言的应用程序通过标准协议(如...
【XFire Web Service的开发】是指使用XFire框架在Eclipse环境下构建Web服务的过程。XFire是Apache CXF的一部分,后者是一个开源的Web服务框架,它整合了Celtix和XFire的功能,提供了丰富的Web服务支持。 在Eclipse...
XFire作为Web服务框架,简化了开发过程。它支持SOAP、RESTful风格的服务,以及多种数据绑定技术,如JAXB(Java Architecture for XML Binding)和Aegis。XFire利用动态代理和Java注解来减少代码量,使得开发者可以...
在IT行业中,Web服务是一种广泛使用的通信协议,它允许不同应用程序之间进行数据交换。Xfire是一款曾经流行的在线游戏社区软件,但在这里,我们讨论的是它作为技术栈的一部分,用于构建Web服务。结合Spring和...
xFire通过提供易于使用的API和工具,使得开发者能够快速地构建Web服务客户端和服务器端应用。 在标题和描述中提到的,你需要完成两个主要步骤:发布Web服务和调用远程服务。以下是详细的操作流程: 1. **发布Web...