`
iton
  • 浏览: 9026 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Spring集成Xfire

阅读更多

以下文章纯属转载.并用在项目开发中!

一:下载XFire1.26

官网地址:http://xfire.codehaus.org/Download
下载 xfire-distribution-1.2.6.zip 与 xfire-all-1.2.6.jar 包,如单独下载jar包,会发生譬如找不到Spring依赖或Ant依赖等少包问题,因此最好把依赖jar包与核心jar包都下了,甩到lib中,万事无忧。


二:Xfire 服务端  VS  Xfire客户端
(一):Xfire 服务端构建

1:新建web工程 TestXfire ,将刚下载到的包括核心与依赖jar都丢到web-inf/lib中作为外部jar包引用。

2:打开xml,加入以下代码,将Xfire解析加到web工程中,在init-param的value属性中,规定了Xfire在哪里查找xfire配置文件,可根据自己需要更改文件位置。


..........
    <servlet>
         <servlet-name>XFireServlet</servlet-name>
         <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
         <init-param>
            <param-name>config</param-name>
            <param-value>xfire/services.xml</param-value>
         </init-param>
    </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>

3:新建包:xfire,在之下新建 services.xml ,作为 xfire 向外部暴露的web服务配置文件。

4:

新建包:com.testxfire.dao ,之下新建web服务接口:ICalculation.java ,接口中声明了用于向外部暴露的计算服务方法:


package com.testxfire.dao;

public interface ICalculation {
    
    public String CalculationMain(int type,double p1,double p2);

}

新建包:com.testxfire.dao.impl ,之下ICalculation实现类:CalculationImpl.java
package com.testxfire.dao.impl;

import java.text.DecimalFormat;

import com.testxfire.dao.ICalculation;

public class CalculationImpl implements ICalculation {

    public String CalculationMain(int type, double p1, double p2) {
        String str = "";
        
        try{
            DecimalFormat df=new DecimalFormat("#.00"); 
            
            switch (type) {
            case 1:
                str = df.format(p1 + p2);
                break;
            case 2:
                str = df.format(p1 - p2);
                break;
            case 3:
                str = df.format(p1 * p2);
                break;
            case 4:
                str = df.format(p1 / p2);
                break;
            default:
                str = "无效的运算符";
                break;
            }
        }catch(Exception es){
            str = "运算发生未知错误";
        }
        
        return str;
    }

}


5:因为第4步新建了用于web服务的接口及实现类,因此需要在xfire的配置文件 services.xml 中声明它们,这样Xfire可通过读取配置文件得到需要向外暴露的接口:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
    <service>
        <name>calculation</name>
        <namespace>ws_cal</namespace>
        <serviceClass>com.testxfire.dao.ICalculation</serviceClass>
        <implementationClass>com.testxfire.dao.impl.CalculationImpl</implementationClass>
    </service>
</beans>
6:整个过程完成后,部署到Tomcat运行,输入 http://localhost:7999/TestXfire/services/calculation?wsdl ,如可以看到浏览器找到了解释此 webServices 系统的wsdl文件,说明服务端构建成功。

-----------------------------------------------------------------

(二):Xfire 客户端构建

1:新建web工程TestXfireClient,同样把下载的xfire包丢到lib中引用。

2:新建包:com.clientbean ,之下新建 Servlet类:WebClientBean.java
package com.clientbean;

import java.io.IOException;
import java.net.URL;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.codehaus.xfire.client.Client;

public class WebClientBean extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp){
        try {           
            doPost(req, resp);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {      
        String p1 = req.getParameter("p1");
        double p = Double.parseDouble(p1);
        
        Client client;
        try {
            client = new Client(new URL("http://localhost:7999/TestXfire/services/calculation?wsdl"));
            Object[] results = client.invoke("CalculationMain", new Object[] {new Integer(1), p,p});
            System.out.println((String) results[0]);        
            System.out.println(p1);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }   
}
3:将WebClientBean.java 在web.xml 中声明为servlet。
  <servlet>
    <servlet-name>wsclient</servlet-name>
    <servlet-class>com.clientbean.WebClientBean</servlet-class>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>wsclient</servlet-name>
    <url-pattern>/wsclient</url-pattern>
  </servlet-mapping>
4:在首页 index.jsp 中建立一个表单提交,提交到WebClientBean
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>    
    <title>调用远程webservice</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
  </head>
  
  <body>
    <form action="/TestXfireClient/wsclient">
        <input type="hidden" id="p1" name="p1" value="4.5" />
        <input type="submit" value="按下调用webServices计算 4.5 + 4.5" />
    </form>
  </body>
</html>
可以看到在WebClientBean.java中,XFire调用远程web服务需要在获得WSDL描述文件后,必须设定一个远程代理(代理需传入调用的方法名、方法参数)。XFire 只用了2句代码就调用了一个远程web服务并返回结果,当然这份代码前提是web服务没有进行加密。因此XFire相比于其他webservice如ASIX,有着很大的便捷性,更重要XFire是新一代的WebService,是基于SOAP的。部署到Tomcat运行后,按下index.jsp的按钮,转到eclipse的控制台,可以看到 WebClientBean.java 中 System.out.println((String) results[0]);  这句代码打印出调用后的结果:9.0 。



Spring 集成 Xfire

1:新建web工程TestSpringXfire,加入下载的Xfire包,然后从中删除掉Spring1.26 jar包,以免与后面的Spring2.0发生冲突,另外加入Spring2.0 core、web包。

2:在web.xml中加入Spring、Xfire解析。

Spring:
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:org/codehaus/xfire/spring/xfire.xml,/WEB-INF/ApplicationContext.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
Xfire:
  <servlet>
    <servlet-name>XFireServlet</servlet-name>
    <servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</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>
3:将之前TestXfire新建的接口与其实现类粘贴到此工程中来

4:在web.xml中声明Spring配置文件的位置加入Spring配置文件,此工程配置文件名为:ApplicationContext.xml 。打开此xml,在<beans>节点中加入:

    <bean id="calWS" class=" com.testxfire.dao.impl.CalculationImpl"/>
    <bean id="addressingHandler" class="org.codehaus.xfire.addressing.AddressingInHandler" />
    
    <bean name="wsService" class="org.codehaus.xfire.spring.ServiceBean" >
        <property name="serviceBean" ref="calWS" ></property>
        <property name="serviceClass" value="com.testxfire.dao.ICalculation"></property>
        <property name="inHandlers">
            <list>
                <ref bean="addressingHandler" />
            </list>
        </property>
    </bean> 
..........
此段代码主要是将web服务暴露的外部接口交给了Spring去管理,并且由spring去决定是否开放此web服务。

5:部署到Tomcat运行,输入:http://localhost:7999/TestSpringXfire/services,可以web服务页面,上面标注了此web服务开放的服务接口。

6:第5步中标注的服务接口后有每个服务接口的wsdl链接,点击后将wsdl的url复制,替换掉TestXfireClient工程中WebClientBean.java中用到获取wsdl描述文件的wsdl url。运行TestXfireClient,可以看到后台打印出调用结果。
分享到:
评论

相关推荐

    spring集成xfire教程

    本教程将探讨如何将 Spring 集成到 XFire 中,以充分利用两者的优势。 首先,让我们了解 Spring 和 XFire 的基本概念。Spring 提供了一个全面的编程和配置模型,可以用于简化企业级应用开发,包括依赖注入、事务...

    spring 集成xfire 比较好的一种方式

    Spring 和 XFire 的集成是构建基于 SOAP 的 Web 服务的一种高效方法。XFire 是一个 Java 框架,专门用于创建和消费 Web 服务,而 Spring 框架则提供了全面的企业级应用开发支持。将这两者结合可以利用 Spring 的强大...

    spring集成xfire webservice实现

    spring集成xfire webservice实现远程调用 将项目发布后,点击http://localhost:8080/SpringWebServiceTest/services/HelloWS?wsdl即可 其中也有客户端的调用,自己试试吧。

    spring集成xfire

    标题“spring集成xfire”指的是将Spring框架与XFire服务框架进行整合,以实现轻量级的Web服务功能。在Spring框架中集成XFire,可以让开发者利用Spring的强大 IoC(Inversion of Control)和AOP(Aspect Oriented ...

    spring+xfire集成解决方案

    ### Spring与XFire集成解决方案详解 #### 一、Spring与XFire概述 Spring框架作为Java平台上最流行的轻量级框架之一,提供了强大的依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented ...

    Web Service框架xfire与spring集成开发流程

    在XFire与Spring集成开发的过程中,主要分为以下几个步骤: 1. **配置web.xml**: - 首先,需要在`web.xml`中设置`context-param`来指定Spring的配置文件位置,这样Spring容器就可以加载相应的bean定义。 - 接着...

    spring+xfire( 编写webservice完整配置+案例)

    然而,在这个特定的案例中,我们使用的是XFire,因为它在早期被广泛使用,并且与Spring有良好的集成。 1. **安装和配置XFire**: 在开始之前,确保你的开发环境中已经包含了XFire的库。你可以通过Maven或Gradle将...

    Spring2.0和XFire1.2.6整合案例

    在IT行业中,集成框架是开发复杂应用程序的关键,Spring和XFire就是两个重要的工具。Spring作为一个强大的Java企业级应用开发框架,提供了丰富的功能,包括依赖注入、面向切面编程(AOP)以及各种服务管理。而XFire...

    整理xfire和spring的集成 web service 面向服务编程 java

    通过集成XFire和Spring,我们可以利用Spring的强大功能,如依赖注入和事务管理,简化Web Service的开发和维护。这种方式使得Web Service的实现更加灵活和易于扩展。同时,由于XFire支持多种协议,包括SOAP、REST等,...

    spring整合xfire例子

    XFire提供了丰富的API和工具,使得与Spring的集成变得简单。它支持XML处理、类型绑定、数据验证以及WS-I兼容性,为构建高性能、高可靠性的Web服务提供了可能。 三、Spring整合XFire步骤 1. **添加依赖**:首先,在...

    Spring和XFIRE结合

    5. **测试**:Spring测试框架可以方便地对Spring+XFire组合的应用进行单元测试和集成测试,确保服务的正确性。 **源码分析**: 虽然没有提供具体的源码,但在博文链接中,可能会介绍一个实际的例子,展示如何在...

    spring与xfire结合

    标题“spring与xfire结合”涉及的是在Java开发中整合Spring框架和XFire服务引擎的技术。Spring是一个广泛应用的开源框架,主要用于简化企业级应用的开发,而XFire(现已被Apache CXF所吸收)则是一个用于创建Web服务...

    spring和xfire 整合webservice

    在Spring框架中集成XFire,可以充分利用Spring的IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)特性,使得Web服务的开发变得更加简洁和灵活。Spring通过提供一个名为...

    spring和xfire配置

    在本文中,我们将探讨如何将Spring框架与XFire集成,以构建一个服务导向的应用程序。XFire是一个基于Java的Web服务实现,它允许开发者快速、简单地创建和部署Web服务。Spring则是一个强大的企业级应用开发框架,提供...

    Spring + Xfire + 注解方式

    Xfire集成了Spring,使得可以利用Spring的IoC容器来管理和配置Web服务。在Xfire中,可以通过XML配置文件或者注解来定义服务接口和实现。 描述中提到的博客链接虽然无法直接访问,但根据常规的博客内容,博主可能...

    xfire+spring+安全认证

    2. 将Spring Security集成到Spring应用上下文中,启用Web安全配置。 3. 在XFire服务端,配置WS-Security,如添加用户名令牌验证或者数字签名,确保消息传输的安全性。 4. 在客户端,设置相应的安全配置,如提供...

    spring,xfire开发soap接口

    XFire与Spring集成良好,允许开发者利用Spring的IoC(控制反转)和AOP特性来构建Web服务。 在使用Spring和XFire开发SOAP接口时,我们首先需要设置项目环境,包括添加相关的依赖库到项目中,如Spring和XFire的JAR...

    xfire 与Spring完整集成实例(WebService)

    标题 "xfire 与Spring完整集成实例(WebService)" 提示我们关注的是如何将XFire框架与Spring框架整合,以实现Web服务的功能。XFire是一个早期的Java Web Service框架,它提供了快速、轻量级的方式来创建和消费SOAP...

    xfireSpring集成需要的Jar包

    当我们将Xfire与Spring集成时,可以利用Spring的依赖注入特性来管理和配置Xfire服务,从而提高代码的可测试性和可维护性。 在"xfireSpring集成需要的Jar包"中,我们需要一些关键的库文件来确保两个框架的无缝协作。...

Global site tag (gtag.js) - Google Analytics