`
pancras
  • 浏览: 2330 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

XFire开发一个WebService

阅读更多

使用XFire实现一个简单的WebService

1 功能要求

       返回小于给定数的所有素数!

2 依赖文件

<!----><!---->activaton-1.1.jar

jaxen-1.1-beta-9.jar
jdom.jar
spring-beans.jar
spring-context.jar
spring-core.jar
spring-web.jar
stax-api-1.0.1.jar
wsdl4j-1.6.1.jar
wstx-asl-3.2.0.jar
xbean-2.2.0.jar
xbean-spring-2.8.jar

 

下载地址:

http://www.fs2you.com/files/773351f0-caf4-11dc-938c-0014221b798a/

3 工程结构

<!----><!---->工程根目录
|
|-src
|      |
|      -cn.com.xinli.lmss.ws.impl
|      |     |
|      |     -MathService.java
|      |
|      -cn.com.xinli.lmss.ws.interfaces
|      |     |
|      |     -MathServiceIF.java
|      |
|      -META-INF
|        |
|        -xfire
|            |
|            -services.xml
|
|-webroot
|      |
|      -WEB-INF
|           |
|           -web.xml
<!---->

4 代码

MathServiceIF

 

package cn.com.xinli.lmss.ws.interfaces;

 

import java.util.List;

 

 

 

public interface MathServiceIF {

    /**

     * @param num

     * @return 返回小于给定数的所有素数的集合

     */

    public int[] getPrimeNumberArray(int num);      

    /**

     * @param num

     * @return 返回小于给定数的所有素数的集合,以List形式返回

     */

    public List getPrimeNumberList(Integer num);

}

       实际上完成这个需求只需要方法getPrimeNumberArray就可以了,但是为了说明XFireaegis绑定,所以提供了getPrimeNumberList方法。

 

MathService

 

package cn.com.xinli.lmss.ws.impl;

 

import java.util.ArrayList;

import java.util.List;

 

import cn.com.xinli.lmss.ws.interfaces.MathServiceIF;

 

public class MathService implements MathServiceIF {

 

    public int[] getPrimeNumberArray(int num) {

       System.out.println("调用了");

       List<Integer> list = getPrimeNumberList(new Integer(num));

      

       int a[] = new int[list.size()];

       for (int i=0;i<list.size();i++) {

           Integer temp = list.get(i);

           a[i] = temp.intValue();

       }

       return a;    

    }

 

    public List<Integer> getPrimeNumberList(Integer num) {

       List<Integer> list = new ArrayList<Integer>();

       for(int i=1;i<=num;i++)

       {

           if(isPrimeNumber(i))

           {

              list.add(new Integer(i));

           }     

       }

      

       return list;

    }

 

    /**

     * @param num

     * @return 如果这个数是素数,返回true,否则返回false

     */

    public boolean isPrimeNumber(int number){

         if(number<2)

             return false;

         for(int i=2;i<=Math.sqrt(number);i++){

             if(number%i==0&&number!=2)

                 return false;

         }

         return true;

     }

 

}

方法实现了,现在来把它发布成一个web服务。

src下边创建一个文件夹META-INF,在META-INF下边在创建一个目录xfire,在xfire目录里边创建一个xml文件,services.xml,内容如下:

<beans>

  <service xmlns="http://xfire.codehaus.org/config/1.0">

   <name>MathService</name>

    <namespace>http://lmss.xinli.com.cn</namespace>

    <serviceClass>cn.com.xinli.lmss.ws.interfaces.MathServiceIF</serviceClass>

    <implementationClass>cn.com.xinli.lmss.ws.impl.MathService</implementationClass>

  </service>

</beans>

然后把webroot目录发布到tomcat上边去,我发布名称是xfire

先看看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>素数计算</display-name>

 

    <servlet> 

        <servlet-name>XFireServlet</servlet-name>     

        <servlet-class>

            org.codehaus.xfire.transport.http.XFireConfigurableServlet

        </servlet-class>

    </servlet>

 

    <servlet-mapping>

        <servlet-name>XFireServlet</servlet-name>

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

    </servlet-mapping>

</web-app>

 

       启动tomcat,我的访问地址是,http://localhost:8080/xfire/services访问后,结果令人沮丧,挂了。有一个错误如下:<!----><!---->
<!---->

大致意思是在MathServiceIF类中没有指明getPrimeNumberList返回值的List中的类型。

二.说说XFireaegis绑定

首先说明,AegisXFire默认的绑定方式,何时需要绑定?

1 Aegis支持的类型

       1.基本类型:int,double,float,long,byte[],short,String,decimal

       2.数组(Array)

       3.集合类型(Collection)

       4.日期类型:java.util.Date, java.util.Calendar, java.sql.Timestamp, java.sql.Date, java.sql.Time

       5.XML:org.w3c.dom.Docmument, org.jdom.Element, XMLStreamReader,XML文本

       6.包含以上类型的自定义类型

2 Aegis需要绑定的类型

       1.集合类型(Collection)

       2.包含集合类型的自定义类型

 

       当使用JDK1.4时,或者是使用了JDK1.5及以上版本但是没有使用泛型的时候、当遇到需要映射POJO或配置WebService接口方法返回类型(如集合类型)时,需要进行绑定,此时aegis的绑定为建立.aegis.xml的文件。

3封装接口

       例如,需要将以下接口封装

public interface UserService {

   

    public User findUserById(String id);

 

    public String test();

 

    public Collection findRolesByUserId(String id);

}

观察此接口,首先我们看findRolesByUserId方法,此方法传入String,返回类型为Collection,此时,我们即需要配置findRolesByUserId方法。

配置步骤,在接口类的同一包下建立和接口名相同的aegis.xml文件,即UserService.aegis.xml文件。

UserService.aegis.xml


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

<mappings>

       <mapping>

              <method name="findRolesByUserId">

                     <return-type

                            componentType="cn.com.xinli.lmss.entity.Role" />

              </method>

       </mapping>

</mappings>

       其中,method代表需要配置的方法名,由于XFire可以支持基本类型,针对集合类型时,需要配置,返回类型或参数类型为基本类型时不需要特殊配置。<return-type/>节点是用来配置返回的Collection中的对象类型,componentType属性代表返回的集合中所包含的类,此类可以是自定义的对象,也可以是基本类型,当然,如果这个类也是包含需要绑定的类型时,需要对这个类也进行aegis说明,详细见下边的例子。

       到此,findRolesByUserId方法配置完毕

       这里需要注意,参数如果也是需要绑定的类型时,也需要aegis说明,使用的是<parameter index="0" componentType="java.lang.String"/>。另外如果方法有两个参数,一个比如为String,一个为集合,那么只需要配置集合参数即可。注意index的值要是集合参数的位置。

4 封装POJO

晕,字太多了,看附件好了,另外附上工程源码的下载地址

http://www.fs2you.com/files/82779ceb-cb28-11dc-81e5-0014221f3995/

 

 

 

分享到:
评论

相关推荐

    spring+xfire( 编写webservice完整配置+案例)

    Spring 和 XFire 是一个经典的组合,用于在Java应用程序中创建和消费Web服务。Spring作为一个强大的框架,提供了全面的依赖注入和面向切面编程能力,而XFire是早先的Web服务实现,它允许开发者轻松地将Java接口转换...

    xfire实现webservice实例

    XFire是Java平台上一个曾经流行的开源框架,专门用于构建和消费Web服务。本实例将深入探讨如何利用XFire来实现Web服务。 一、XFire简介 XFire是Apache CXF项目的前身,它提供了一个轻量级、高性能的框架,用于创建...

    WebService之XFire开发文档和代码

    **四、使用XFire开发WebService** 1. **环境准备**:首先需要安装Java环境,并下载并引入XFire的JAR包到项目中。 2. **创建服务接口**:定义一个Java接口,该接口将作为WebService的公开接口。 3. **实现服务接口**...

    用XFire开发WebService+Spring注解

    【标题】"用XFire开发WebService+Spring注解"涉及的主要知识点是利用XFire框架创建Web服务,并结合Spring框架的注解进行服务的管理和集成。XFire是一个强大的Java Web Service实现,它允许开发者轻松地创建和消费...

    java使用XFire调用webService接口

    XFIRE 是一个基于 Java 的开源框架,用于简化 Web 服务的开发和集成。下面,我们将通过一个简单的例子,展示如何使用 XFire 调用 webService 接口。 服务端(为客户端提供 webservice 接口) 在服务端,我们需要...

    xfire调用webservice

    xfire还提供了一个基于annotation的编程模型,使得开发者可以使用简单的Java代码来开发WebService。 xfire的主要特点包括: 1. 简单易用:xfire提供了一个简单、易于使用的API,开发者可以快速地开发和部署...

    xfire+spring开发webservice

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

    eclipse开发webservice的xfire插件

    总之,Eclipse的xfire插件为Java开发者提供了一个强大且便捷的工具,帮助他们轻松地开发和管理Web服务。无论是新手还是经验丰富的开发者,都能从中受益,提升开发效率,专注于业务逻辑,而不是底层的通信细节。通过...

    用XFire开发Webservice简单实例

    **标题:“用XFire开发Webservice简单实例”** 在IT行业中,Web服务是不同系统间进行数据交换和功能调用的重要方式。XFire是Apache软件基金会的一个开源项目,它提供了一个轻量级、高效的框架来创建和消费Web服务。...

    使用xfire+spring构建webservice

    标题“使用xfire+spring构建webservice”指出的是一个关于如何利用XFire和Spring框架创建Web服务的教程。XFire是早先的一个用于构建Web服务的开源Java库,它简化了SOAP(简单对象访问协议)服务的开发。而Spring框架...

    Xfire调用webservice无法传递参数问题

    Xfire是Java中的一个轻量级Web服务框架,它简化了Web服务的开发和部署,支持WSDL(Web Services Description Language)自动生成,使得服务消费者可以方便地找到并调用服务。 标题“Xfire调用WebService无法传递...

    xfire开发webservice接口开发(带有软件包)

    压缩包中的"xfire开发webservice及jar包"很可能包含了所有必要的库文件,如xfire-core、xfire-aegis等。 2. **创建Web Service**: 使用Xfire,你可以通过编写简单的Java类来定义服务接口和实现。Xfire会自动处理...

    一个xfire开发的webservice项目

    【标题】:“一个xfire开发的webservice项目” 在IT领域,Web服务是一种允许不同应用程序之间进行通信的技术。本项目是基于Xfire框架开发的Web服务,它利用了Spring框架来增强服务的功能和管理。Xfire是一个已不再...

    xfire+spring开发webservice的例子

    总结来说,这个"xfire+spring开发webservice的例子"是一个完整的Java Web服务开发示例,它演示了如何利用Maven管理依赖,借助XFire创建和部署Web服务,以及如何利用Spring进行服务的管理和测试。这对于学习和理解Web...

    webservice接口xfire开发demo

    demo是一个小的webservice开发,下载下来部署到tomcat下直接运行。 运行地址:http://127.0.0.1:8080/XFireTest/services XFireTest——项目名称

    xfire+spring+webservice+client

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

    Java使用XFire调用WebService接口

    这篇博客“Java使用XFire调用WebService接口”显然是讨论如何利用XFire这个开源框架来与Web服务交互。 XFire是Apache CXF项目的前身,它提供了一种简单的方式来创建和消费SOAP Web服务。XFire的强项在于其轻量级和...

    xfire构建WebService例子

    本教程将详细讲解如何使用XFire来创建和消费一个简单的WebService。 首先,我们需要理解什么是XFire。XFire(现已被Apache CXF项目吸收)是一个基于Java的Web服务栈,它简化了SOAP(简单对象访问协议)和WS-*(Web...

    webservice xfire整合spring(webservice配置采用注解)例子

    【标题】中的“webservice xfire整合spring(webservice配置采用注解)”是指将Xfire,一个早期的Web服务框架,与Spring框架结合使用,其中Web服务的配置通过Spring的注解方式进行。这种方式简化了配置,提高了开发...

Global site tag (gtag.js) - Google Analytics