`
coach
  • 浏览: 387028 次
  • 性别: Icon_minigender_2
  • 来自: 印度
社区版块
存档分类
最新评论

xfire+spring配置webservice实例讲解

阅读更多
web.xml:
<!-- begin xfire -->
    <servlet>
       <!-- 配合Spring容器中XFire一起工作的Servlet-->
       <servlet-name>xfireServlet</servlet-name>
       <servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>
    </servlet>
    <servlet-mapping>
       <servlet-name>xfireServlet</servlet-name>
       <!-- 在这个URI下开放Web Service服务 -->
       <url-pattern>/service/*</url-pattern>
    </servlet-mapping> 
<!-- end xire -->


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>

	<!-- 引入XFire预配置信息 -->
	<import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />

	<!-- Web服务实现类,就是要发布成web服务的pojo,标注了@WebService注解  -->  
	<bean id="userService" class="com.test.xfire.UserServiceImpl" />


	<!-- 获得applicationContext中所有bean的JSR181 annotation --> 
	<!-- 该Bean获取Spring容器中所有标注@WebService的Bean -->
	<bean id="webAnnotations" class="org.codehaus.xfire.annotations.jsr181.Jsr181WebAnnotations" /> 
	
	<!-- 对标注@WebService的Bean进行处理,完成导出工作  -->
	<bean id="jsr181HandlerMapping" class="org.codehaus.xfire.spring.remoting.Jsr181HandlerMapping"> 
		<property name="xfire" ref="xfire" /> 
		<property name="webAnnotations" ref="webAnnotations" /> 
	</bean>

</beans>



package com.test.xfire;

public class User
{
    private String username;
    private int age;
    private String hobby;

    public String getUsername()
    {
        return username;
    }

    public void setUsername(String username)
    {
        this.username = username;
    }

    public int getAge()
    {
        return age;
    }

    public void setAge(int age)
    {
        this.age = age;
    }

    public String getHobby()
    {
        return hobby;
    }

    public void setHobby(String hobby)
    {
        this.hobby = hobby;
    }

    public String toString()
    {
        return "用户:" + username + ",年龄" + age + "时,爱好:" + hobby;
    }
}



package com.test.xfire;

import javax.jws.WebService;

@WebService
public interface IUserService
{
    public User findUserHobby(User user) throws Exception;
}


package com.test.xfire;

import java.util.HashMap;
import java.util.Map;

import javax.jws.WebService;

/**
 * serviceName是这这个服务的名称,默认为接口实现类的名称,endpointInterface是该类实现的接口的类全名<BR>
 * 访问:http://localhost:8080/ssh/service/userServiceImpl?wsdl
 * 
 * @author Administrator
 */
@WebService(serviceName = "userServiceImpl", endpointInterface = "com.test.xfire.IUserService")
public class UserServiceImpl implements IUserService
{
    private static final Map<String, String> mapUser = new HashMap<String, String>();

    static
    {
        mapUser.put("jg.sun", "篮球");
        mapUser.put("lcrystal", "足球");
        mapUser.put("s0meb0dy", "游泳");
        mapUser.put("猫来猫去", "睡觉");
        mapUser.put("小刚", "唱歌");
    }

    public User findUserHobby(User user) throws Exception
    {
        if (user == null)
        {
            return null;
        }

        String hobby = mapUser.get(user.getUsername());

        if (hobby == null)
        {
            user.setHobby("无");
        }
        else
        {
            user.setHobby(hobby);
        }
        return user;
    }
}


客户端调用2种方式:
1、通过WSDL文件生成客户端调用程序,先在目录存放WSDL文件
package com.test.xfire.client;

import org.codehaus.xfire.client.Client;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

import com.test.xfire.IUserService;
import com.test.xfire.User;

/**
 * 通过WSDL文件生成客户端调用程序
 * 
 * @author Administrator
 */
public class WebServiceClientTestByWsdl
{
    IUserService iUserService = null;

    public static void main(String[] args) throws Exception
    {
        WebServiceClientTest test = new WebServiceClientTest();
        test.testClient();
    }

    public void testClient() throws Exception
    {
        String wsdl = "userServiceImpl.wsdl"; // 对应的WSDL文件
        Resource resource = new ClassPathResource(wsdl);
        Client client = new Client(resource.getInputStream(), null); // 根据WSDL创建客户实例

        User user = new User();
        user.setUsername("猫来猫去");
        Object[] objArray = new Object[1];
        objArray[0] = user;
        // 调用特定的Web Service方法
        Object[] results = client.invoke("findUserHobby", objArray);
        System.out.println("result: " + results[0]);
    }
}



2、根据服务地址创建客户端调用程序

webserviceClient.xml

<?xml version="1.0" encoding="GBK"?>

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
	http://www.springframework.org/schema/context 
	http://www.springframework.org/schema/context/spring-context-2.5.xsd
    http://www.springframework.org/schema/tx 
    http://www.springframework.org/schema/tx/spring-tx-2.5.xsd 
    http://www.springframework.org/schema/aop 
    http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">

	<bean  id ="testWebService"  class ="org.codehaus.xfire.spring.remoting.XFireClientFactoryBean">
		<property name ="serviceClass">          
			<value>com.test.xfire.IUserService</value>       
		</property>      
		<property name ="wsdlDocumentUrl">         
			<value>http://localhost:8080/ssh/service/userServiceImpl?wsdl</value>       
		</property>      
	</bean>

	
</beans>


package com.test.xfire.client;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.test.xfire.IUserService;
import com.test.xfire.User;

/**
 * 根据服务地址创建客户端调用程序
 * 
 * @author Administrator
 */
public class WebServiceClientTest
{
    IUserService iUserService = null;

    public static void main(String[] args)
    {
        WebServiceClientTest test = new WebServiceClientTest();
        test.testClient();
    }

    public void testClient()
    {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("webserviceClient.xml");
        iUserService = (IUserService) ctx.getBean("testWebService");
        try
        {
            User user = new User();
            user.setUsername("猫来猫去");
            System.out.println(iUserService.findUserHobby(user));
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}






分享到:
评论

相关推荐

    xfire+spring+webservice+client

    标题中的“xfire+spring+webservice+client”是一个关于集成XFire、Spring框架和Web服务客户端的专题,这涉及到Java开发中的一项重要技术——Web服务的消费与提供。在这个主题下,我们将深入探讨以下几个核心知识点...

    xfire+spring+webservice

    首先,Spring的IoC容器可以管理XFire的服务实例,使得服务的生命周期控制更加简洁。其次,通过Spring的AOP,我们可以方便地添加事务管理、日志记录等通用功能到Web服务中。最后,Spring的数据访问抽象层(如...

    xfire+spring+webservice例子

    【标题】"xfire+spring+webservice例子"是一个典型的示例项目,它演示了如何在Java环境中结合XFire和Spring框架来创建和消费Web服务。这个项目旨在帮助开发者理解和实践基于Spring的Web服务实现,同时也展示了XFire...

    xfire+spring+webservice入门例子

    【xfire+Spring+WebService 入门实例详解】 在IT行业中,Web服务是一个重要的通信方式,它允许不同系统间的应用程序进行数据交换。本入门实例将深入探讨如何使用XFire框架与Spring集成来构建和消费Web服务。XFire是...

    xfire+spring+maven构建webservice服务器和客户端

    标题中的“xfire+spring+maven构建webservice服务器和客户端”揭示了本教程将围绕三个主要技术进行讨论:XFire、Spring和Maven。这三者都是Java开发中不可或缺的工具,尤其在构建Web服务方面。 XFire是早期的一个...

    使用xfire+spring编写webservice例子,供大家学习与交流

    在Spring的配置文件中,引入XFire的相关依赖,并声明一个`XFireConfigurer`,配置XFire实例: ```xml &lt;import resource="classpath:xfire.xml" /&gt; &lt;bean id="xfireConfigurer" class="org.springframework.xd....

    xFire+spring webService 示例

    在"xFire+Spring WebService"的集成中,你可以使用Spring来配置和管理xFire,这样就可以利用Spring的强大功能,如自动装配、事务管理和安全性,同时利用xFire的Web服务处理能力。下面是一些关键步骤: 1. **配置...

    spring+hibernate+struts+XFire的webService实例

    总结来说,"Spring+Hibernate+Struts+XFire的WebService实例"提供了一个完整的Java Web服务解决方案,涵盖了从数据持久化到用户界面,再到Web服务的整个开发流程。这个实例对于学习和理解企业级Java应用的开发具有很...

    使用XFire+Spring构建Web Service

    XFire的导出器实例在Spring中扮演关键角色。一个基础的Web Service导出器(如`baseWebService`)可以配置通用属性,然后你可以创建特定服务的导出器(如`HelloWebService`),它继承自`baseWebService`并指定代理...

    cxf+spring webService实例

    在这个"CXF+Spring WebService实例"中,我们将深入探讨如何利用这两个工具来创建、发布和消费Web服务。 CXF全称为CXF CXF (CXF XFire + XWS), 是一个开源的Java框架,它支持多种Web服务标准,如SOAP、WSDL、WS-...

    XFire+Spring发布Web Service(一)

    通过Spring的依赖注入和配置管理,我们可以轻松地创建和管理Web服务客户端实例,而XFire则负责处理底层的SOAP通信和WSDL解析。这样的组合使得开发人员可以专注于业务逻辑,而不需要过多关注技术细节。

    xfire+spring

    3. 使用Spring的ApplicationContext加载配置,获取ClientBean实例。 4. 通过ClientBean调用Web服务方法,此时,Spring会自动处理安全认证的相关细节,将必要的安全信息添加到SOAP请求中。 5. 服务器端接收到请求后,...

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

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

    webservice(xfire)+spring的二种实现方式

    首先,你需要在Spring配置文件中声明XFire的Servlet和ServiceBean。Servlet配置将Web服务暴露到HTTP端点,而ServiceBean定义了服务的具体实现。例如: ```xml &lt;bean id="xfireServlet" class="org.codehaus.xfire....

    webservice xfire spring2.0完整实例

    在这个“webservice xfire spring2.0完整实例”中,我们将会探讨如何结合XFire 1.2.6和Spring 2.0来创建和消费Web服务。首先,我们需要理解Spring 2.0中的Web服务抽象层,即Spring Web Services模块。这个模块提供了...

    JQuery1.4.2+Struts2.1.8+JSON0.34+Spring2.5.6+Hibernate3.5+XFire1.2.6整合实例

    JQuery1.4.2+Struts2.1.8+JSON0.34+Spring2.5.6+Hibernate3.5+XFire1.2.6整合实例(已上传) 1、JSON0.34使用的是struts2附带的struts2-json-plugin-2.1.8.1.jar 2、db是mysql,名字为test,用户名root,密码空 3、...

    Spring+xfire实现WebService

    当Spring与XFire结合时,可以利用Spring的DI来管理XFire的服务实例,这使得Web服务的生命周期更容易控制。下面是一些关键步骤来实现Spring+XFire的Web服务: 1. **配置XFire**: 首先,我们需要在Spring的配置文件中...

    xfire-spring:xfire1.2.6+spring3.2.5webservice示例程序

    在xfire-spring项目中,XFire被用来创建和消费Web服务,而Spring则负责管理和注入服务实例。 二、Spring框架的Web服务支持 Spring框架以其灵活的依赖注入和AOP(面向切面编程)闻名,而在Spring3.2.5版本中,它已经...

    Spring+xFire+wss4j配置Helloworld完整版,Myeclipse项目服务端+客户端.rar

    在这个“Hello World”实例中,我们将学习如何配置Spring、xFire和wss4j来创建一个安全的Web服务。服务端会定义一个简单的服务接口,例如: ```java @WebService public interface HelloWorld { @WebMethod ...

Global site tag (gtag.js) - Google Analytics