`
天涯海角tour
  • 浏览: 173104 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

xfire spring web service

 
阅读更多

  转载

 

 

 

http://hi.baidu.com/lotusxyhf/blog/item/64b5cb52eb667f1e0cf3e3f3.html

   
【整理】用XFire+Spring搭建WebService(Hello简单版+实用版)
2010-11-05 21:34

首先我们需要下载jar包.

如果你有或是正在用MyEclipse的话(我的MyEclipse 版本是5.5.1 GA)就非常容易了。直接新建web项目上右键-->MyEclipse-->Add Web Service Capabilities -->Finish(因为会默认XFIRE 1.2 Core Libraries)

如果你要下载,就去这里:xfire.codehaus.org/Download 下载最新的版本 xfire-distribution-1.2.6.zip (点此直接下载)。

官网还有XFire的源码,日后可以研究使用。

下载下来的zip里面examples-->spring就是一个简单的XFire+Spring的WebService(Echo例子)。

把lib,modules下我们需要的jar包添加到 WEB-INF - lib 目录(Spring的jar包自然要添加进去)。

  1. commons-codec-1.3.jar
  2. commons-httpclient-3.0.jar
  3. commons-logging-1.0.4.jar
  4. jdom-1.0.jar
  5. spring.jar
  6. stax-api-1.0.1.jar
  7. wsdl4j-1.6.1.jar
  8. xfire-all-1.2.6.jar  

先给大家看下我们搭建WebService完后的项目结构图(Eclipse版本)。此外我把这个演示项目连同源码一起发布了一个war包。

下载地址:code.google.com/p/jivam-utils/downloads/list 中的 webservice.war(点此直接下载)。



一、在src下面建立service的包,新建一个接口HelloService。

package service;

public interface HelloService {

public String sayHello(String name);

}

二、建立HelloService的接口实现类HelloServiceImpl。

package service;

public class HelloServiceImpl implements HelloService {

public String sayHello(String name) {
   return "Hello,"+name+" !";
}

}

三、修改WEB-INF下的web.xml

<?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"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">

    <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>
    </servlet>

    <servlet-mapping>
        <servlet-name>xfire</servlet-name>
        <url-pattern>/WebService/*</url-pattern>
    </servlet-mapping>

</web-app>

四、修改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="service.HelloServiceImpl"/>
</beans>

五、在WEB-INF下新建xfire-servlet.xml。(要结合上面的各个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>
                <entry key="/HelloService">
                    <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>service.HelloService</value>
        </property>
    </bean>

</beans>

这时候WebService就搭建完成了,那怎么测试呢?

请点击http://localhost:8080/webservice/WebService/HelloService?wsdl

看到下面的情况你就成功了:

<?xml version="1.0" encoding="UTF-8" ?>
- <wsdl:definitions targetNamespace="http://service" xmlns:soapenc12="http://www.w3.org/2003/05/soap-encoding" xmlns:tns="http://service" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc11="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
- <wsdl:types>
- <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://service">
- <xsd:element name="sayHello">
- <xsd:complexType>
- <xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" name="in0" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
- <xsd:element name="sayHelloResponse">
- <xsd:complexType>
- <xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
- <wsdl:message name="sayHelloRequest">
<wsdl:part name="parameters" element="tns:sayHello" />
</wsdl:message>
- <wsdl:message name="sayHelloResponse">
<wsdl:part name="parameters" element="tns:sayHelloResponse" />
</wsdl:message>
- <wsdl:portType name="HelloServicePortType">
- <wsdl:operation name="sayHello">
<wsdl:input name="sayHelloRequest" message="tns:sayHelloRequest" />
<wsdl:output name="sayHelloResponse" message="tns:sayHelloResponse" />
</wsdl:operation>
</wsdl:portType>
- <wsdl:binding name="HelloServiceHttpBinding" type="tns:HelloServicePortType">
<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="sayHello">
<wsdlsoap:operation soapAction="" />
- <wsdl:input name="sayHelloRequest">
<wsdlsoap:body use="literal" />
</wsdl:input>
- <wsdl:output name="sayHelloResponse">
<wsdlsoap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
+ <wsdl:service name="HelloService">
- <wsdl:port name="HelloServiceHttpPort" binding="tns:HelloServiceHttpBinding">
<wsdlsoap:address location="http://localhost:8080/webservice/WebService/HelloService" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

那下面我们来写个客户端(客户端需要commons-httpclient-3.0.jar,lib里面就有)。src下面新建test目录,新建HelloClient ,因为客户端和服务器端我写在同样的一个项目里,所以 HelloService 我直接引用了,实际项目中是分开的2个项目,此时就需要服务器的项目吧 HelloService 接口,如果有交互的实体类,则连同接口一起打成JAR包,放到客户端的目录下,然后就可以引用了。

 

 

 

package test;

import java.net.MalformedURLException;

import org.codehaus.xfire.XFire;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;

import service.HelloService;

public class HelloClient{

public static void main(String[] args) {
   Service srvcModel = new ObjectServiceFactory().create(HelloService.class);
   XFire xfire = XFireFactory.newInstance().getXFire();
   XFireProxyFactory factory = new XFireProxyFactory(xfire);
   String serviceUrl = "http://localhost:8080/webservice/WebService/HelloService";
   HelloService hs = null;
    try {
     hs = (HelloService)factory.create(srvcModel, serviceUrl);
    } catch (MalformedURLException e) {
     e.printStackTrace();
    }
    System.out.println(hs.sayHello("Jivam"));
}
}

=========项目过滤器中怎么安全的过滤WebService请求========

如果web.xml中 xFire的url-pattern地址是 <url-pattern>/WebService/*</url-pattern>

那么在相应的Filter中应这样过滤才是安全的:

HttpServletRequest req = (HttpServletRequest)request;
if(req.getServletPath().equals("/WebService")){
        chain.doFilter(request, response);
}


 

分享到:
评论

相关推荐

    xfire ibatis spring web service

    这篇博客可能讨论的是如何将这三个技术——XFire、iBatis和Spring——集成在一起,构建一个Web服务应用程序。在这样的集成中,Spring可以管理整个应用的生命周期,包括XFire的Web服务和iBatis的数据访问层。通过...

    使用XFire+Spring构建Web Service

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

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

    以下是关于"Xfire配置Web Service+Spring+Hibernate详细配置流程"的知识点详解: 1. **Spring框架**: Spring是Java企业级应用开发的首选框架,提供依赖注入(DI)和面向切面编程(AOP)。在Web服务场景中,Spring...

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

    ### Xfire配置Web Service+Spring+Hibernate详细流程 在IT领域,尤其是企业级应用开发中,集成Web Service、Spring框架以及Hibernate技术是非常常见的需求。本文将深入解析如何使用Xfire来配置并集成这三个核心技术...

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

    【整合XFire与Spring进行Web Service开发】 XFire是一个基于Java的SOAP Web Service框架,而Spring是一个广泛应用的轻量级框架,它提供了依赖注入、面向切面编程等特性。将两者集成可以方便地构建和消费Web Service...

    Spring Web Service实例

    好像没有多少人讨论, 大多数的话题都是围绕xfire, cxf, axis/axis2等主流的Web Service框架.尽管是从事这方面的工作, 不过实际开发中还是公司内部开发的一个Web Service模块, 发现与Spring提供的这个模块的构架很像...

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

    由于XFire与Spring框架的深度融合,使得开发者能够更加便利地在Spring环境中构建Web Service应用,这正是XFire在开源社区受到追捧的原因。 在XFire与Spring集成开发的过程中,主要分为以下几个步骤: 1. **配置web...

    XFire Java Web Service 客户端

    《XFire Java Web Service 客户端详解》 ...尽管现在有更多现代的解决方案如Apache CXF、Spring-WS等,但了解XFire的工作原理和使用方法,对于我们理解Web服务的实现机制和历史发展具有重要的学习价值。

    使用XFire+Spring构建Web Service步骤

    总结,使用XFire和Spring构建Web Service,可以利用Spring的IoC和AOP特性简化服务的创建和管理,同时XFire提供了高效且灵活的Web Service实现。通过以上步骤,开发者可以快速地搭建自己的Web Service,并与其他系统...

    MyEclipse+xFire开发Web Service

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

    使用XFire+Spring构建Web Service步骤以及源代码.rar

    XFire是一个高性能、易于使用的Java Web服务框架,而Spring则是广泛采用的轻量级应用框架,它提供了丰富的功能来支持各种应用程序的开发,包括Web服务。本教程将详细介绍如何结合XFire和Spring来构建Web服务,并提供...

    xfire实现Web Service

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

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

    总的来说,Xfire配置Web Service+Spring+Hibernate的详细流程涉及到以下几个关键步骤: 1. 配置Xfire,定义Web服务接口和实现。 2. 引入Spring,配置bean和依赖注入。 3. 集成Hibernate,配置数据库连接和...

    基于XFire与Spring集成的Web Service实现

    内容概要:本文档提供了基于XFire和Spring框架集成来搭建Web Service的基本指南。具体包含了创建服务接口和服务实现类(Echo 和 EchoImpl),并在Spring的应用上下文中配置XFire Exporter进行Web服务发布以及相应的...

Global site tag (gtag.js) - Google Analytics