`

使用 xfire 开发 web service 应用

阅读更多

转载: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测试工具进行一下测试

分享到:
评论
2 楼 yonghuuser 2011-12-12  
< namespace > http://www.oksonic.cn/xfire </ namespace >
如果想给命名空间起个别名呢
1 楼 antonie1111 2008-08-18  
写的什么东西啊,中间还有html标签什么的.还不如不写.乱

相关推荐

    xfire开发web service文档.rar

    在文件列表中,"xfire开发web service文档.doc"可能是主文档,包含了整个教程的详细内容,包括理论解释、示例代码、步骤指南和可能的截图,以帮助读者逐步学习和实践使用XFire创建Web服务。 总的来说,这个压缩包...

    MyEclipse+xFire开发Web Service

    【MyEclipse+xFire开发Web Service】是一个关于如何使用MyEclipse集成开发环境和xFire框架来构建和测试Web服务的教程。xFire是一个基于Java的SOAP框架,它提供了轻量级的信息处理机制,利用STAX进行SOAP消息处理。这...

    xfire开发Web Service接口第一个程序源代码

    在这个“xfire开发Web Service接口第一个程序源代码”的资源中,我们将探讨如何利用Xfire来开发一个简单的Web服务。 首先,理解Web服务的基本概念是至关重要的。Web服务通常基于SOAP(Simple Object Access ...

    web service xfire 开发包及api

    这个版本可能是Xfire Web Service的一个稳定版本,适合开发者进行产品开发或学习使用。 以下是Xfire Web Service的一些关键知识点: 1. **SOAP(Simple Object Access Protocol)**:Xfire Web Service可能基于...

    使用XFire编写web service的上传文件的例子

    【使用XFire编写web service的上传文件例子详解】 在IT领域,Web Service是一种基于标准的、平台无关的方式,用于应用程序之间的交互。XFire是Apache CXF的前身,它是一个轻量级的Java框架,用于构建和消费Web服务...

    eclipse 使用xfire开发webservices server

    标题中的“eclipse使用xfire开发webservices server”意味着我们将使用Eclipse IDE和XFire来创建和部署一个Web服务服务器。以下是一步步的操作步骤: 1. **安装Eclipse和XFire插件**:首先确保你的Eclipse已经安装...

    xfire实现Web Service

    接下来,我们将探讨使用XFire实现Web Service的步骤: 1. **安装和配置XFire**: 首先,你需要下载XFire的库文件并将其添加到你的项目类路径中。这通常涉及到在构建路径中包含`xfire-assembly-x.x.x.jar`和其他...

    使用Xfire创建Web service和客户端使用的视频

    MyEclipse是一款功能强大的Java EE集成开发环境,它扩展了Eclipse的功能,特别适合于开发Web应用程序。在本示例中,MyEclipse将作为开发Web服务和客户端代码的平台,提供了一套完整的工具集,包括代码编辑、调试、...

    使用XFire+Spring构建Web Service

    【使用XFire+Spring构建Web Service】是一种高效且灵活的方法,尤其适合于那些希望利用Spring框架的优秀特性来开发Web Service应用的开发者。XFire是一个先进的Web Service框架,与Axis2并列为新一代的选择,因其...

    第15章 开发XFire Web Service应用.pdf

    ### 第15章 开发XFire Web Service应用 #### 15.1 引言 ##### 15.1.1 WebService简介 WebService(Web服务)是一项最初由微软和IBM提出的技术规范,旨在实现不同编程语言之间的网络功能互通互联。它的核心特性...

    第十五章 开发XFire Web Service应用.pdf

    ### 第十五章 开发XFire Web Service应用 #### 15.1 引言 ##### 15.1.1 WebService简介 WebService(通常译作Web服务)是由微软和IBM等公司共同提出的一项技术规范,它允许在互联网上通过标准的协议(如HTTP)...

    第十五章 开发XFire Web Service应用22.pdf

    通过本章的学习,开发者不仅掌握了使用XFire和MyEclipse开发Web服务的基础知识,还深入了解了Web服务的原理、开发流程和技术要点。无论是创建简单的“Hello World”服务,还是构建复杂的天气预报客户端,都能够...

    使用 XFire 与 Spring 开发 Web Service.docx

    2. **新建WTP动态WEB工程**:创建一个Web项目,用于部署Web Service应用。 3. **实现服务**:在Java项目中定义服务接口,然后实现该接口,添加业务逻辑。 4. **利用Spring、XFire装配与暴露服务**:在Spring配置文件...

    xfire开发webservice接口开发(带有软件包)

    【xfire开发Web Service接口开发】是一个针对初学者的教程,旨在帮助开发者了解如何使用Xfire框架构建Web Service接口。Xfire是早先流行的一款Java Web Service框架,它简化了SOAP(Simple Object Access Protocol)...

    MyEclipse+XFire开发Web Services

    ### MyEclipse+XFire开发Web Services #### 实验背景与目标 随着互联网技术的发展,Web Services作为一种重要的软件架构模式,在分布式系统中的应用越来越广泛。它允许不同平台、语言的应用程序通过标准协议(如...

    XFire Web Service的开发

    【XFire Web Service的开发】是指使用XFire框架在Eclipse环境下构建Web服务的过程。XFire是Apache CXF的一部分,后者是一个开源的Web服务框架,它整合了Celtix和XFire的功能,提供了丰富的Web服务支持。 在Eclipse...

    XFire 实现web service入门实例源码

    XFire作为Web服务框架,简化了开发过程。它支持SOAP、RESTful风格的服务,以及多种数据绑定技术,如JAXB(Java Architecture for XML Binding)和Aegis。XFire利用动态代理和Java注解来减少代码量,使得开发者可以...

    Xfire配置Web Service+Spring+Hibernate详细配置流程

    在IT行业中,Web服务是一种广泛使用的通信协议,它允许不同应用程序之间进行数据交换。Xfire是一款曾经流行的在线游戏社区软件,但在这里,我们讨论的是它作为技术栈的一部分,用于构建Web服务。结合Spring和...

    xFire发布Web Service,并调用远程服务

    xFire通过提供易于使用的API和工具,使得开发者能够快速地构建Web服务客户端和服务器端应用。 在标题和描述中提到的,你需要完成两个主要步骤:发布Web服务和调用远程服务。以下是详细的操作流程: 1. **发布Web...

Global site tag (gtag.js) - Google Analytics