`

Web Service修炼之二Xfire+Spring

 
阅读更多
1、准备开发环境 

   环境:MyEclipse xx +tomcat6.0+JDK1.5

   xfire版本:xifre-1.2.6

   XFire所需jar:

   http://xfire.codehaus.org/下载xfire1.2.6-.zip压缩包,解压后libjar

   MyEclipse下新建一个Web Applications,命名为wss

2、配置运行环境

    WEB-INF目录下新建一个web.xml文件,文件中输入:

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" 

version="2.4"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 

  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<display-name>XFireService</display-name>

<!-- begin Spring配置 -->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>

/WEB-INF/applicationContext.xml,/WEB-INF/xfire-servlet.xml

</param-value>

</context-param>

<!-- 启动时加载SpringContextServlet -->

<listener>

<listener-class>

org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

<listener>

<listener-class>

  org.springframework.web.util.IntrospectorCleanupListener

</listener-class>

</listener>

<!-- end Spring配置 -->

<!-- begin XFire 配置 -->

<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>*.ws</url-pattern>

</servlet-mapping>

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

<url-pattern>/services/*</url-pattern>

</servlet-mapping>

<!-- end XFire 配置 -->

</web-app>

3、开发应用程序 

    src文件夹下新建一个packagecom.test.wss,在这个包下面新建一个接口:

    业务接口Java代码 

package com.test.wss;

public interface SayHelloService {

  //调用的业务方法

  public String sayHello(String name); 

}

    这个接口是告诉服务器你的WebService哪些方法可以被用户调用的。我们再来写一个SayHelloService的实现类,以完成业务逻辑:

业务接口Java代码 

package com.test.wss;

public class SayHelloServiceImpl implements SayHelloService {

    //业务实现方法

public String sayHello(String name) {

if(name==null){ 

    return "你有名字呢?"

     } 

 return name+",晚上好,还没有下班吗 ?"

}

    这个类实现了sayHello方法,该方法是可以通过WebService调用访问到的。 接下来发布WebService

4、配置部署服务

    在ws/WEB-INF/目录下新建XML文件:applicationContext.xmlxfire-servlet.xml文件内容如下:

    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="SayHelloServiceImpl" class="com.test.wss.SayHelloServiceImpl"/>

</beans>

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

<!--定义访问的url -->

<bean

class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

<property name="urlMap">

<map>

<!-- 配置暴露的服务名称 -->

<entry key="/sh.ws">

<ref bean="SayHelloService"/>

</entry>

</map>

</property>

</bean>

 

<!-- 使用XFire导出器 我们通过XFireExporter将业务类导出为Web Service,对于任何导出器,

我们都需要引入XFire环境,即serviceFactory和xfire,这是标准的配置。ServiceFactory是

XFire的核心类,它可以将一个POJO生成为一个Web Service。在本实例中,我们通过定义一个

baseWebService,其余的webService配置都将该bean作为父bean,这样可以简化Spring的配置,

不需要多次引入serviceFactory和xfire。-->

 

<bean id="baseWebService"

class="org.codehaus.xfire.spring.remoting.XFireExporter"

lazy-init="false" abstract="true">

<!--引用xfire.xml中定义的工厂 -->

<property name="serviceFactory" ref="xfire.serviceFactory"/>

<!--引用xfire.xml中的xfire实例 -->

<property name="xfire" ref="xfire"/>

</bean>

<bean id="SayHelloService" parent="baseWebService">

<!-- 业务服务bean -->

<property name="serviceBean" ref="SayHelloServiceImpl"/>

<!-- 业务服务bean的窄接口类 -->

<property name="serviceClass" value="com.test.wss.SayHelloService"/>

</bean>

</beans>

目录结构

 

 

把工程wss部署到tomcat

5、运行测试应用

    启动Tomcat
    再打开浏览器,输入:http://localhost:8080/wss/sh.ws?wsdl

服务器返回的结果如下:
    

    说明web service发布成功。

    方法1:同工程内调用web service

      新建一个SayHelloClient的客户端:

package com.test.wss.client;

import java.net.MalformedURLException;

import org.codehaus.xfire.client.Client;

import org.codehaus.xfire.client.XFireProxyFactory;

import org.codehaus.xfire.service.Service;

import org.codehaus.xfire.service.binding.ObjectServiceFactory;

import org.codehaus.xfire.transport.http.CommonsHttpMessageSender;

public class SayHelloClient {

public static void main(String args[]) { 

String serviceURL = "http://localhost:8080/wss/sh.ws"

//创建service对象

Service serviceModel = new ObjectServiceFactory().create(SayHelloService.class); 

XFireProxyFactory serviceFactory = new XFireProxyFactory(); 

try

//获取服务对象

SayHelloService service = (SayHelloService) serviceFactory.create(serviceModel, serviceURL); 

Client client = Client.getInstance(service); 

//忽略http连接的超时时间,0为不设置超时时间,》=1为超时毫秒数

client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT"0"); 

String msg = service.sayHello("大兵"); 

System.out.println("服务器对[大兵]的回复:" +  msg); 

 msg = service.sayHello(null); 

System.out.println("服务器对你的回复:" +  msg); 

}catch (MalformedURLException e) { 

    e.printStackTrace();

}

   } 

}

    运行输出结果为:

    服务器对[大兵]的回复:大兵,晚上好,还没有下班吗 ?

    服务器对你的回复:你有名字呢?

    方法2:不在一个工程内调用的客户端的测试:

     新建一个Java工程:wssclient,把工程wss内的com.test.wss.client包拷贝到wssclient功能,进行运行测试。

package com.test.wss.client;

import org.codehaus.xfire.client.Client;

import org.codehaus.xfire.client.XFireProxyFactory;

import org.codehaus.xfire.service.Service;

import org.codehaus.xfire.service.binding.ObjectServiceFactory;

import org.codehaus.xfire.transport.http.CommonsHttpMessageSender;

public class SayHelloNClient {

public static void main(String args[]) { 

String serviceURL = "http://localhost:8080/wss/sh.ws"

//创建service对象

Service serviceModel = new ObjectServiceFactory().create(SayHelloService.class); 

XFireProxyFactory serviceFactory = new XFireProxyFactory(); 

try

//获取服务对象

SayHelloService service = (SayHelloService) serviceFactory.create(serviceModel, serviceURL); 

Client client = Client.getInstance(service); 

//忽略http连接的超时时间,0为不设置超时时间,》=1为超时毫秒数

client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT"0"); 

Object[] results = client.invoke("sayHello",new Object[] { "若轩" });

System.out.println("服务器对[若轩]的回复:" + (String) results[0]); 

results = client.invoke("sayHello",new Object[] {null});

System.out.println("服务器对你的回复:" +  (String) results[0]); 

}catch (Exception e) { 

    e.printStackTrace();

}

}

}

 

    运行输出结果为:

    服务器对[若轩]的回复:若轩,晚上好,还没有下班吗 ?

    服务器对你的回复:你有名字呢?

<!--EndFragment-->
  • 大小: 10.5 KB
  • 大小: 73.9 KB
分享到:
评论
1 楼 917380319 2014-11-20  
找了N多个,就你的能在安卓远程调用,谢谢了

相关推荐

    xfire+spring+安全认证

    "xfire+spring+安全认证"的主题聚焦于如何利用XFire和Spring框架来实现安全的Web服务。XFire是一个用于创建、消费和部署SOAP Web服务的Java库,而Spring框架则是一个广泛使用的全功能应用开发框架,提供了包括安全性...

    xfire+spring开发webservice

    在提供的文档《xfire+spring2_5开发webservice接口的两种方式.mht》中,详细讲解了这两种方法的实现步骤、示例代码和注意事项。读者可以通过阅读该文档,了解如何在Spring 2.5版本下结合XFire创建Web服务。 另一份...

    使用XFire+Spring构建Web Service

    在与XFire+Spring Web Service的项目中,MooTools可能被用来在客户端消费Web服务,实现页面的动态更新和用户交互。 总的来说,XFire+Spring的组合为Java开发者提供了一个强大且灵活的Web服务解决方案,结合MooTools...

    xfire+spring+webservice+client

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

    使用XFire+Spring构建Web Service步骤

    至此,一个简单的XFire+Spring Web Service就已经构建完成。客户端可以通过调用WSDL中定义的端点地址来访问这个服务,进行“Hello, World!”的交互。 总结,使用XFire和Spring构建Web Service,可以利用Spring的IoC...

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

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

    XFire+Spring webwervice

    【XFire+Spring Web Service】是一个结合了XFire和Spring框架的解决方案,用于构建高效、易用的Web服务。XFire作为一个现代化的Web服务框架,它与Axis2齐名,但因其简洁的API和对Web服务标准的支持,如JSR181、WSDL...

    xfire+spring+hibernate的一种整合方式

    本案例中的"xfire+spring+hibernate"是一种早期的整合方式,它将Web服务(通过XFire实现)、Spring框架的依赖注入与管理以及Hibernate的持久层处理结合在一起。以下是对这种整合方式的详细解释。 1. **XFire**:...

    使用XFire+Spring构建Web Service(二).doc

    总结来说,这个例子不仅展示了如何使用XFire+Spring构建Web服务,还涵盖了处理复杂数据类型、对象序列化、服务发布、异常处理等多个关键点。通过这样的实践,开发者可以更好地理解Web服务的实现原理,并能够灵活地...

    xfire +spring jar

    描述中提到的“本来想把xfire+spring例子也一起传上来,太大不让传”,意味着这个压缩包可能包含了示例代码或者项目实例,用于展示如何在实际应用中整合XFire和Spring。由于文件大小限制未能一同上传,我们只能从...

    XFire+Spring发布Web Service(一)

    在"XFire+Spring发布Web Service(一)"这个主题中,我们主要关注的是如何设置客户端来消费发布的Web服务。客户端代码是与服务端进行交互的部分,通常包括调用服务接口、处理响应等操作。 首先,你需要在你的项目中...

    Xfire+spring+hiebrnate webService

    本项目“Xfire+Spring+Hibernate WebService”是一个采用特定技术栈构建的Web服务解决方案。下面将详细阐述这个项目中涉及的核心技术和它们之间的交互。 【Xfire】: Xfire是一款开源的Java库,它提供了创建和消费...

Global site tag (gtag.js) - Google Analytics