`
stone02111
  • 浏览: 215187 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Xfire实现webservice实例

    博客分类:
  • Java
 
阅读更多

 

本实例是以简单的加减法(a+ba-b)运算实现用xfire开发webservice服务端和客户端。


一、开发环境

运行环境: Tomcat 6.0.14,jdk 1.5

开发工具:Eclipse3.2 + MyEclipse 5.5


二、开发service(服务端)

开发之前请先到官方(http://xfire.codehaus.org/Download)下载xfire-distribution-1.2.6.zip并解压缩

 


 

<!--[if !supportLists]-->1.       <!--[endif]-->MyEclipse 建立一个web工程,命名为:XFireWebService,src目录下新建一个META-INF文件夹里包含 xfire/service.xml,把xfire-1.2.6lib所有jarxfire-all-1.2.6.jar拷贝到工程lib里,工程具 体信息如附件图


2.修改WebRoot/Web-INF/web.xml文件

<?xml version="1.0" encoding="UTF-8"?> 
<web-app> 
<welcome-file-list> 
<welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 

<context-param> 
     <param-name>log4jConfigLocation</param-name> 
     <param-value>/WEB-INF/log4j.properties</param-value> 
</context-param> 

<servlet> 
<servlet-name>XFireServlet</servlet-name> 
<servlet-class> 
   org.codehaus.xfire.transport.http.XFireConfigurableServlet 
</servlet-class> 
<load-on-startup>0</load-on-startup> 
</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> 
</web-app> 

 

3.修改src/META-INF/xfire/services.xml文件

<?xml version="1.0" encoding="UTF-8"?> 

<beans xmlns="http://xfire.codehaus.org/config/1.0"> 
<service> 
<name>MathService</name> 
<namespace> 
   http://localhost:8080/XFireWebService/MathService 
</namespace> 
<serviceClass>com.test.ws.MathServiceImpl</serviceClass> 
</service> 
</beans> 

 

 4.MathService接口类和MathServicImpl实现类 MathService接口类

package com.test.ws; 

public interface MathService { 
public long add(int p1, int p2); 
public long minus(int p3, int p4); 
} 

MathServiceImpl实现类 
package com.test.ws; 

public class MathServiceImpl implements MathService{ 

public long add(int p1, int p2) { 
System.out.println(p1 + p2); 
     return p1 + p2; 
} 

public long minus(int p3, int p4) { 
System.out.println(p3 - p4); 
return p3 - p4; 
} 
}


 5.MyEclipse会自动编译src文件,请到MyEclipseworkspace里找到刚才建的XFireWebService工程, 打开工程并copy WebRoot文件夹到%TOMCAT_HOME%/webapps里并把WebRoot改名为xfire,参照图如附件:


三、开发client(客户端

    开发client有几种模式 

1. 纯POJO模式 
需要service端提供MathService接口类

package com.test.client; 

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 com.test.ws.MathService; 

public class CallXfireWebService_POJO { 

/** 
* @param args 
*/ 
public static void main(String[] args) { 
Service serviceModel = new ObjectServiceFactory().create(MathService.class); 

XFire xfire = XFireFactory.newInstance().getXFire(); 
XFireProxyFactory factory = new XFireProxyFactory(xfire); 
String serviceUrl = "http://localhost:8080/xfire/services/MathService"; 

int p1 = 115; 
int p2 = 4; 

int p3 = 9; 
int p4 = 240; 

MathService client = null; 
try { 
client = (MathService) factory.create(serviceModel, serviceUrl); 
} catch (MalformedURLException e) { 
System.out.println( "Client call webservice has exception: " + e.toString()); 
} 

int result1 = (int) client.add(p1, p2); 
int result2 = (int) client.minus(p3, p4); 
System.out.println(result1); 
System.out.println(result2); 

} 
} 
 

      返回自定义类型必须把webservice中的自定义类型也拿过来,同时拿过来的包路径必须一致



2 JSR181模式 
Server端开发组需要向Client提供MathService的实现类MathServiceImpl,而不止于接口,有点危险,不提倡用这个模式。暂不研究。



3 SpringSide 
暂空着,下轮用到再详解。


4. 动态模式 
   动态模式不需要服务端的class,但在性能上有所欠佳。


package com.test.client; 

import java.net.MalformedURLException; 
import java.net.URL; 

import org.codehaus.xfire.client.Client; 

public class DynamicXfireWebService { 

/** 
* @param args 
*/ 
public static void main(String[] args) { 
Client client = null; 
try { 
client = new Client(new URL("http://localhost:8080/xfire/services/MathService?wsdl")); 
Object[] result1 = client.invoke("add", new Object[] {1, 2}); 
Object[] result2 = client.invoke("minus", new Object[] {1, 2}); 

System.out.println(result1[0]); 
System.out.println(result2[1]); 
} catch (MalformedURLException e) { 
e.printStackTrace(); 
} catch (Exception e) { 
e.printStackTrace(); 
} 

} 

} 
 

    这个方法应该是最适合SOA精神的,但经测试不是一方面不稳定,另一方面数组之类的输出有误


5. 根据WSDL生成Client Stub 
创建client文件夹里含build.xml文件,内容如下


<?xml version="1.0"?> 
<project default="genfiles" basedir="."> 
    <property name="lib" value="WebRoot/WEB-INF/lib" /> 
    <path id="myclasspath"> 
        <fileset dir="${lib}"> 
            <include name="*.jar" /> 
        </fileset> 
        <pathelement location="${genfiles}" /> 
    </path> 
    <property name="code_path" value="src" /> 
    <property name="wsdl_path" value="http://localhost:8080/xfire/MathService?wsdl" /> 
    <property name="code_package" value="com.playphone.ws.client" /> 
    <target name="genfiles" description="Generate the files"> 
        <taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask" classpathref="myclasspath" /> 
        <wsgen outputDirectory="${code_path}" wsdl="${wsdl_path}" package="${code_package}" binding="xmlbeans" overwrite="true" /> 
    </target> 
</project>
 

    用ms dos打开至client文件夹,执行ant. 
在所生成的client工程里写一个含math方法的ClientTest


四、启动Tomcat, 测试 
运行客户端程序即可看到结果。






 

 

分享到:
评论

相关推荐

    xfire实现webservice实例

    本实例将深入探讨如何利用XFire来实现Web服务。 一、XFire简介 XFire是Apache CXF项目的前身,它提供了一个轻量级、高性能的框架,用于创建和调用Web服务。XFire通过简化编程模型和强大的注解支持,使得开发者能够...

    使用xfire实现webservice实例

    接下来,你需要实现这个接口并创建一个服务实例。XFire会自动处理服务的发布和绑定到HTTP端点。 **3. 配置XFire** XFire可以通过XML配置文件或者编程方式来配置。配置文件通常包含服务的位置、端口设置、拦截器等...

    XFire建立Webservice实例,入门级别,适合初学者

    【XFire建立Webservice实例详解】对于初学者来说,理解并构建一个Web Service是一个重要的学习步骤,而XFire作为一款曾经流行的开源框架,提供了一种简单的方法来创建和部署Web Service。本文将详细介绍如何利用...

    xfire发布webservice实例无需设置地址和端口号

    xfire简单实例发布webservice,引用到2个jar包的简单例子

    xfire组件实现webservice实例

    本文详细介绍了利用xfire组件实现webservice的服务端和客户端实例,适合入门参考和使用!

    xfire发布webservice实例

    用java通过xfire框架实现ws,实现正向生成wsdl文件,并由wsdl逆向生成java ws客户端代码 测试输入:http://localhost:8080/webservice-xfire/services/CalculatorService?wsdl

    xfire webservice 完整实例下载

    XFire Webservice是一个基于Java的开源工具,它简化了创建、部署和消费Web服务的过程。在深入探讨这个完整实例之前,我们首先需要了解Web服务的基本概念。Web服务是一种通过网络进行通信的应用程序接口(API)。它们...

    用xfire开发webservice实例(原稿)

    **标题:“用XFire开发Web服务实例(原稿)”** **描述分析:** 这个资源是一个关于使用XFire框架创建Web服务的实际示例项目。XFire是早期流行的一个用于构建SOAP Web服务的Java库,它提供了轻量级且高效的解决方案。...

    XFire建立Webservice实例.docx

    XFire 建立 Webservice 实例 XFire 是一个基于 Java 的开源 Web 服务框架,它提供了一个简单、灵活和高效的方式来创建和消费 Web 服务。在本篇文章中,我们将详细介绍如何使用 XFire 建立一个 Webservice 实例,并...

    JAVAEE利用XFIRE创建WEBSERVICE实例

    【JAVAEE利用XFIRE创建WEBSERVICE实例】 Java EE(Java Platform, Enterprise Edition)是用于构建企业级Web应用的标准框架,而Web服务是Java EE中一个重要的组成部分,它允许应用程序通过网络进行通信。Xfire是一...

    xfire开发WebService实例

    本篇将深入探讨如何使用XFire开发Web服务实例。 一、XFire简介 XFire是Apache CXF项目的前身,是一个快速、灵活且轻量级的Web服务框架。它允许开发者通过简单的API创建SOAP(Simple Object Access Protocol)服务,...

    XFire建立Webservice实例

    【XFire建立Webservice实例详解】 XFire是一个早期流行的Java Web Service框架,它允许开发者轻松地创建和消费Web服务。本文将详细介绍如何使用XFire在MyEclipse环境中创建和部署一个简单的Web服务。 一、创建Web...

    xfire-webservice实例(下载即可运行)

    《Xfire Webservice实例详解与应用》 Xfire是一款强大的Java Web服务框架,它简化了创建、部署和消费Web服务的过程。在这个实例中,我们将会深入探讨如何利用Xfire快速构建一个可运行的Web服务,并了解其核心概念和...

    用XFire开发Webservice简单实例

    在这个实例中,`MyEclipse下XFire开发Webservice实例.doc`文件应该包含了详细的步骤说明和源码示例,帮助读者更好地理解和实践这个过程。通过阅读文档和动手操作,开发者可以快速掌握XFire的使用技巧,从而在实际...

    myeclipse xfire 开发webservice实例

    3. 创建`HelloWebService.java`类,并通过`New`创建包`com.service`,此时向导会自动创建对应的接口类与实现类。 4. 修改`HelloWebServiceImpl.java`类: ```java package com.service; public class ...

    Spring XFire 实现webService

    1. 引入XFire的Bean定义:在Spring的XML配置文件中,你需要导入XFire的相关bean,例如`XFireServiceFactoryBean`,它负责创建并管理Web服务实例。 ```xml &lt;bean id="xfireServiceFactory" class="org.codehaus....

    XFire框架实现WebService(二)

    通过学习"XFire框架实现WebService(二)"这篇教程,读者应该能够理解如何使用XFire创建和调用Web服务,以及如何利用其特性来提高开发效率和代码质量。在实际项目中,结合源码分析和实际操作,读者将能够更好地掌握这...

    MyEclipse下XFire开发Webservice实例

    2. 输入项目名称如“WebServiceServer”,在“Framework”选项中选择“XFire”,其余选项保持默认。 3. 点击“Next”,保留默认设置。 4. 在“Project Library”中选择XFire 1.2的核心库。 5. 点击“Finish”,你会...

    spring+hibernate+struts+XFire的webService实例

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

Global site tag (gtag.js) - Google Analytics