开发步骤:
一, 环境搭建
新建Web工程(或者直接建service项目),名为webservice_helloworld
加入jar包 :
activation-1.1.jar、commons-beanutils-1.7.0.jar、commons-codec-1.3.jar、commons-httpclient.jar、commons-logging-1.0.4.jar、jaxen-1.1-beta-9.jar、jaxws-api-2.0.jar、jdom-1.0.jar、jsr173_api-1.0.jar、mail-1.4.jar、saaj-api-1.3.jar、saaj-impl-1.3.jar、spring-1.2.6.jar、stax-api-1.0.1.jar、wsdl4j-1.5.2.jar、wstx-asl-3.0.1.jar、xbean-2.1.0.jar、xbean-spring-2.5.jar、xfire-aegis-1.2.2.jar、xfire-annotations-1.2.2.jar、xfire-core-1.2.2.jar、xfire-java5-1.2.2.jar、xfire-jaxws-1.2.2.jar、xfire-jsr181-api-1.0-M1.jar、xfire-spring-1.2.2.jar、XmlSchema-1.1.jar
注:可依次加入也可通过myeclipse导入
二, 代码编写
1)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" 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>
<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>
<!-- 在这个URI下开放Web Service服务 -->
<url-pattern>/service/*</url-pattern>
</servlet-mapping>
<!-- end XFire 配置 -->
</web-app>
注:其中需要加载2个配置文件: 一个spring 一个xfire-servlet
2个listener:一个spring启动 。一个 xfire 启动
2个servlet :一个创建webservice时就有,一个是配合spring工作。
2)Web Service的接口类HelloWorld.java和对应实现类HelloWorldImpl.java
package webservice;
/**
*HelloWorld接口
*/
publicinterface HelloWorld {
String sayHelloWorld(String name);
}
package webservice;
/**
*HelloWorld的实现类.
*/
publicclass HelloWorldImpl implements HelloWorld {
public String sayHelloWorld(String name) {
String helloWorld = "hello," + name;
return helloWorld;
}
}
3)Spring配置文件applicationContext.xml和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 id="HelloWorldBean" class="webservice.HelloWorldImpl"/>
</beans>
注:
spring.xml 和xfire-servlet.xml的头部声明被替换掉 用来解决jai包冲突导致的 :
Line 5 in XML document from ServletContext resource [/WEB-INF/xfire-servlet.xml] is invalid; nested exception is org.xml.sax.SAXParseException: Document root element "beans", must match DOCTYPE root "null".
org.xml.sax.SAXParseException: Document root element "beans", must match DOCTYPE root "null".
下面是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="/HelloWorldService.ws">
<ref bean="HelloWorldService" />
</entry>
</map>
</property>
</bean>
<!-- 使用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="HelloWorldService" parent="baseWebService">
<!-- 业务服务bean -->
<property name="serviceBean" ref="HelloWorldBean" />
<!-- 业务服务bean的窄接口类 -->
<property name="serviceClass" value="webservice.HelloWorld" />
</bean>
</beans>
在上面的配置中,我们可以看到,在该配置文件中引入了xfire.xml这个Spring配置文件。它是在XFire核心JAR包中拥有一个预定义的Spring配置文件,它定义了XFire在Spring中必须用到的一些Bean和资源,需要引入这个预定义的配置文件。从该配置文件中可以看出,我们通过XFireExporter将业务类导出为Web Service,对于任何导出器,我们都需要引入XFire环境,即serviceFactory和xfire,这是标准的配置。ServiceFactory是XFire的核心类,它可以将一个POJO生成为一个Web Service。
在本实例中,我们通过定义一个baseWebService,其余的webService配置都将该bean作为父bean,这样可以简化Spring的配置,不需要多次引入serviceFactory和xfire ( parent="baseWebService")
3. Web Service的测试
在浏览器中输入地址:http://localhost:8080/webservice_helloworld/HelloWorldService.ws?wsdl 会看到wsdl文件
如果输入为:http://localhost:8080/webservice_helloworld/HelloWorldService.ws 可能会看到 Invalid SOAP request. 后面加上 ?wsdl 即可
一: 若在同一个项目中测试很简单
首先访问成功 。测试类如下
package com.client;
import java.net.MalformedURLException;
import java.util.List;
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 com.service.IService;
import com.vo.User;
public class TestClient {
/**
* 测试Xfire的客户端
*/
public static void main(String[] args) {
// 创建一个服务对象(远程调用),使用服务的工厂创建ws的服务对象
Service srcvMode = new ObjectServiceFactory().create(HelloWorld.class);
//创建调用代理工厂,获取服务
XFireProxyFactory factory=new XFireProxyFactory(XFireFactory.newInstance().getXFire());
String serviceURL="http://localhost:8080/webservice_helloworld/HelloWorldService.ws?wsdl";
HelloWorld HW=null;
//获取服务
try {
HW=(HelloWorld ) factory.create(srcvMode, serviceURL);
} catch (MalformedURLException e) {
e.printStackTrace();
}
//调用简单的WS方法
String strHW.sayHelloWorld("你是大笨象");
System.out.println();
}
}
也可以这样测试
Client client = new Client(new URL("http://localhost:8080/webservice_helloworld/HelloWorldService.ws?wsdl"))
//invoke("方法名", 参数值);
Object[] obj=client.invoke("sayHelloWorld", objArray);
System.out.println(results[0]);
也可以通过myEclipse工具反向生成service文件
具体步骤为:
1, 新建一个项目,导入xfire所需jar包(选择项目>右键>NyEclipse>Add XFire Service Cp..>jar包选Core与HTTP其它按需>)
2,new一个Web Service Client (new>other>Web Service Client>next>选择项目和jar包:手动加入选第一个>next>填写WSDL地址与生成文件所在位置>next>此时会检查配置信息且会访问WSDL地址:需保证路径可访问,若没有错误提示就可以next了)
3,查看生成文件,其中有一个文件叫xxxServiceClient.java(对应着接口名称的客户端)
打开看main 方法 这是一个调用实例
XxxrServicePortType service = client.getxxxServiceHttpPort();
使用service即可调用方法;
service.sayHelloWorld("你真的是一个小笨象")
分享到:
相关推荐
将XFire与Spring整合的主要目的是利用Spring的IoC(控制反转)和AOP能力来管理Web服务的生命周期,以及简化服务的配置和调用。通过Spring,开发者可以将XFire的服务定义为Spring Bean,这样就可以利用Spring的依赖...
在"spring3.1+xfire1.26 全注解"这个项目中,开发者利用Spring 3.1的注解特性来配置和管理应用程序组件,以及XFire 1.26来处理Web服务的创建和交互。全注解意味着不再需要XML配置文件,而是直接在Java类和方法上使用...
将XFire与Spring整合可以充分利用Spring的优秀特性,提高Web服务的开发效率和可维护性。本教程主要针对初学者,旨在通过一个清晰、简单的项目,介绍如何将XFire与Spring进行整合。 1. **环境准备** 在开始整合前,...
当我们将XFire与Spring进行整合时,我们可以利用Spring的强大功能来管理Web服务的生命周期,并且更容易地集成到现有的Spring应用中。 XFire与Spring的整合主要涉及以下几个关键知识点: 1. **Spring的Bean管理**:...
在那个时代,Xfire是Spring整合Web服务的首选工具,它提供了与Spring的紧密集成,使得创建和调用SOAP服务变得简单。以下是对这个主题的详细解释: **Spring框架2.5**: Spring 2.5是Spring框架的一个重要版本,发布...
在提供的文件名“XFireWsClient”和“XFireWsMe”中,我们可以推测它们可能包含了XFire与Spring整合的客户端和服务端示例代码。通过分析这些代码,我们可以更深入地理解如何在实际项目中应用上述知识点。 总之,...
Spring 和 XFire 是一个经典的组合,用于在Java应用程序中创建和消费Web服务。Spring作为一个强大的框架,提供了全面的依赖注入和面向切面编程能力,而XFire是早先的Web服务实现,它允许开发者轻松地将Java接口转换...
另一份文档《开发XFire_Web_Service应用.pdf》可能包含了更多关于XFire的用法、最佳实践和案例研究,对于深入理解和掌握XFire与Spring的整合非常有帮助。 总的来说,使用XFire和Spring开发Web服务能够提供一个高效...
在提供的压缩包文件"xfire+spring"中,可能包含了相关的示例代码、配置文件或者教程文档,帮助开发者理解并实践这一整合过程。通过学习这些资源,你可以深入理解如何将这两个强大的工具结合起来,构建出既高效又安全...
Xfire 1.2.6版本与Spring有着良好的整合,可以无缝地将Spring的应用转换为Web服务。Xfire提供了XML消息绑定、SOAP处理和WSDL生成等功能,使得服务化编程变得简单易行。 这个实例代码集包含了这些框架的集成示例,...
现在我们来深入探讨Spring 2.0与XFire 1.2.6的整合案例。 Spring 2.0是Spring框架的一个重要版本,引入了许多增强的功能,例如支持JSR-250注解、更强大的数据访问抽象以及对AspectJ的全面集成。这些改进使得Spring...
本教程将详细阐述如何利用Spring 2.5、Hibernate 3.0和Xfire 1.2.6这三大组件搭建一个完整的系统框架。 首先,Spring 2.5作为一款轻量级的Java应用框架,它提供了依赖注入(Dependency Injection, DI)和面向切面...
当XFire与Spring整合时,可以利用Spring的强大管理功能来管理和配置XFire的Web服务,简化开发流程。 XFire的核心特性包括XML绑定、协议支持(如SOAP、REST)、WS-*标准实现以及强大的异常处理机制。它使用StAX...
XFire和Spring都是Java领域中的重要框架,它们在构建和管理Web服务方面具有强大的能力。本篇文章将深入探讨如何利用XFire与Spring的组合来发布Web服务,并提供具体的实例和所需资源。 首先,XFire(现在称为Apache ...
标题中的“XFire+Spring整合的依赖包”意味着这是一个集合,包含了将XFire集成到Spring应用中所需的所有依赖库。这样的整合使得开发者可以利用Spring的强大功能来管理服务的生命周期,并结合XFire的高效Web服务处理...
webservice中用到的jar,xfire-spring-1.2.6.jar,xfire-spring-1.2.6.jar,xfire-spring-1.2.6.jar,xfire-spring-1.2.6.jar
spring与xfire整合正确演示例子
【Xfire整合Spring发布Web Services】是将Xfire——一个基于Java的Web服务实现框架,与Spring——一个广泛使用的轻量级应用框架相结合,用于构建和发布Web服务的过程。这个整合使得开发人员能够利用Spring的强大功能...