xfire开发实例--HelloWorld篇

2024-04-02 04:32
文章标签 开发 实例 helloworld xfire

本文主要是介绍xfire开发实例--HelloWorld篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

xfire开发实例--HelloWorld篇


时间: 2007-09-11 20:09   类别: Web Service    前一篇 | 后一篇    作者 juxtapose | 1 最新回复 | Trackback (0) | Permalink


本文从最基础的HelloWorld用例开始,介绍如何利用xfire开发web service应用。以后就可以开发复杂的web service应用了。 

开发环境:eclipse3.2+tomcat5.5.9+xfire1.2.6

一:在eclipse中新建项目XFireProject

1、建立源文件夹src.main;新建HelloService.java文件,该java文件只声明了一个简单的sayHello(String name)方法,。java文件内容如下:

/**
 * 
 
*/
package  com.liuxiang.xfire;

/**
 * 简单例子HelloWorld例子
 * HelloService.java
 * com.liuxiang.xfire
 * XFireProject
 * 
@author  liuxiang mailto:juxtapose@163.com
 * 2007-9-9 下午05:01:38
 *
 
*/
public   class  HelloService {
    
public  String sayHello(String name){
        
return  name + " ,你好! " ;
    }
}

2、在src.main目录下新建META-INF/xfire/services.xml文件,该文件用于声明一个service。service.xml文件的内容如下:

<!--  START SNIPPET: services  -->
< beans  xmlns ="http://xfire.codehaus.org/config/1.0" >
  
< service >
    
< name > HelloService </ name >
      
< namespace > http://com.liuxiang.xfireDemo/HelloService </ namespace >
      
< serviceClass > com.liuxiang.xfire.HelloService </ serviceClass >
  
</ service >
</ beans >
<!--  END SNIPPET: services  -->

3、将将编译后的HelloService.class文件和service.xml文件部署到tomcat中。文件的位置如下:

webappsxfireWEB-INFclassesMETA-INFxfireservices.xml;

webappsxfireWEB-INFclassescomliuxiangxfireHelloService.class;

4、启动tomcat;正确启动tomcat之后,在IE地址栏里输入:http://localhost:8080/xfire/services/ 将会出现如下的页面:该页面正常显示了刚才部署的HelloService。如下图:Available Services: HelloService [wsdl]

如果能正确显示上图,说明刚才的部署成功了。如果不能正确显示,请参照我上一篇文章:xfire1.2.6配置篇。

单击[wsdl],将会出现http://localhost:8080/xfire/services/HelloService?wsdl,即生成的一个wsdl文件。

5、生成web service客户端调用文件

      xfire提供了两种生成客户端测试的方式,一种提供了ant脚本,另一种是提供了xfire的eclipse插件;本文介绍了使用ant脚本的方式生成客户端的方式。

    首先在项目XFireProject中增加一个build.xml文件。xfire提供了一个ant任务:

< taskdef  name ="wsgen"  classname ="org.codehaus.xfire.gen.WsGenTask"  classpathref ="myclasspath"   />

build.xml文件的内容如下:

<? xml version="1.0" ?>
< project  name ="XFireProject"  default ="genfiles"  basedir ="." >
    
< property  name ="lib"  value ="lib"   />
    
< path  id ="myclasspath" >
        
< fileset  dir ="${lib}" >
            
< include  name ="*.jar"   />   
        
</ fileset >   
        
< pathelement  location ="${genfiles}"   />
    
</ path >
    
<!-- 通过XFire ant任务生成客户端代码的存放位置 -->
    
< property  name ="code_path"  value ="src.client"   />   
    
<!-- 需要生成客户端代码的wsdl文件 -->
    
< property  name ="wsdl_path"  value ="http://localhost:8080/xfire/services/HelloService?wsdl"   />  
    
<!-- 生成客户端代码的包名 -->  
    
< property  name ="code_package"  value ="com.liuxiang.xfire.client"   />
    
    
<!--  Remove classes directory for clean build  -->
    
< target  name ="clean"  description ="Prepare for clean build" >   
        
< delete  dir ="${code_path}" />
        
< mkdir  dir ="${code_path}" />
    
</ target >
    
    
<!-- <target name="genfiles" depends="clean" description="Generate the files">   -->
    
< target  name ="genfiles"  description ="Generate the files" >
        
< taskdef  name ="wsgen"  classname ="org.codehaus.xfire.gen.WsGenTask"  classpathref ="myclasspath"   />
        
<!-- outputDirectory属性定义创建的代码所在的文件夹
            wsdl是web服务的wsdl文件
            package代表创建的代码的package
        
-->
        
< wsgen  outputDirectory ="${code_path}"  wsdl ="${wsdl_path}"  package ="${code_package}"  binding ="xmlbeans"   />   
    
</ target >
</ project >

 

执行ant脚本,将会生成客户端代码,共三个文件。会放在包com.liuxiang.xfire.client下面,文件分别是:

HelloServiceClient.java、HelloServiceImpl.java、HelloServicePortType.java

6、编写测试代码,通过调用5中生成的代码,编写TestClient.java文件。文件内容如下:

/**
 * 
 
*/

package  com.liuxiang.xfire;

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.liuxiang.xfire.client.HelloServiceClient;
import  com.liuxiang.xfire.client.HelloServicePortType;

/**
 * 通过XFire生成的客户端进行调用
 * 
 * TestClient.java
 * com.liuxiang.xfire
 * XFireProject
 * 
@author liuxiang mailto:juxtapose@163.com
 * 2007-9-9 下午06:54:36
 *
 
*/

public   class  TestClient  {
    
/**
     * 客户端测试
     * 通过ant脚本生成的客户端进行调用
     * 
     * 
@param name    传入的参数,客户名字
     * 
@return    返回sayHello()的返回值
     
*/

    
public static String testClient(String name){
        HelloServiceClient helloSC 
= new HelloServiceClient();
        HelloServicePortType helloSP 
= helloSC.getHelloServiceHttpPort();
        String result 
= helloSP.sayHello(name);
        
return result;
    }


    
/**
     * 
@param args
     * 
@throws Exception 
     
*/

    
public static void main(String[] args) throws Exception {
        System.out.println(testClient(
"Liuxiang"));
    }


}

运行该代码,在控制台会输入如下信息:

Liuxiang,你好!

表明,第一个web service用例已经运行成功了。以后,就可以开发需要的web service了。

 

这篇关于xfire开发实例--HelloWorld篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/868974

相关文章

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处