`
indexchen
  • 浏览: 6493 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

用Xfire将grails的服务展现为WebService

阅读更多

Xfire框架可以用很简易的方法将POJO展现为WebService ,而且Xfire还提供和spring的集成,可以很方便的将springbean展现为WebServiceGrailsservice在运行时会被srping托管,成为一个bean,因此可以用Xfire将其展现为WebService。将grailsservice展现为WebService的步骤如下:

 

1.         下载Xfire,将xfire和其依赖的jar复制到grails项目的lib目录中,展现WebService至少需要如下jar文件:

activation-1.1.jar

jaxen-1.1-beta-9.jar

jdom-1.0.jar

stax-api-1.0.1.jar

stax-utils-20040917.jar

wsdl4j-1.6.1.jar

wss4j-1.5.1.jar

wstx-asl-3.2.0.jar

xfire-all-1.2.6.jar

xfire-jsr181-api-1.0-M1.jar

 

2.         为了让web容器将url请求转为web service,需要在web.xml中添加xfireservlet处理器,由于grailsweb.xml是根据模板动态生成的,因此需要修改grails安装目录下src\war\WEB-INF\web2.4.template.xml文件,在其中添加如下信息:

<servlet>

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

           <display-name>XFire Servlet</display-name>

           <servlet-class>

               org.codehaus.xfire.spring.XFireSpringServlet

           </servlet-class>

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

 

 

contextConfigLocation<param-value>中添加classpath:org/codehaus/xfire/spring/xfire.xml,修改后内容如下:

<context-param>

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

        <param-value>/WEB-INF/applicationContext.xml,classpath:org/codehaus/xfire/spring/xfire.xml</param-value>

    </context-param>

 

Xfire.xml位于xfire-all-1.2.6.jar中,其中定义了集成spring时要用到的bean

另外还要修改urlMappings.groovy,增加对WebService的处理,修改后内容如下:

"/$controller/$action?/$id?"{

             constraints {

               controller(matches:/.*[^(services)].*/)

                }

         }

黑体部分为修改内容。

 

3.         grailsservice添加一个接口,因为Xfire展现WebService时需要用到接口。在grailsservice中实现这个接口。接口以java方式定义,源文件位于src/java目录下。代码如下:

接口定义:

AsnService.java

package com.easipass.wms;

 

import javax.jws.WebService;

import javax.jws.WebMethod;

@WebService(serviceName="GasnService")

public interface AsnService {

       @WebMethod(operationName = "getName", action = "urn:GetName")

       String getName(String no) ;

       @WebMethod()

       Asn[] show();

}

 

接口定义了两个方法,并用jws注解方式标注接口展现为WebService的名字在@WebService serviceName中定义,jwsWebService的注解定义位于xfire-jsr181-api-1.0-M1.jar中。

show()方法返回一个Asn数组,Asn的定义如下:

Asn.java

package  com.easipass.wms;

import java.io.Serializable;

import java.util.Date;

public class  Asn implements Serializable {

    String asnNo;

    String sender;

    Date    sendDate ;

    public Asn() {

        super();

    }

    public Asn(String asnNo, String sender, Date sendDate) {

        super();

        this.asnNo = asnNo;

        this.sender = sender;

        this.sendDate = sendDate;

    }

    public String getAsnNo() {

        return asnNo;

    }

    public void setAsnNo(String asnNo) {

        this.asnNo = asnNo;

    }

    public Date getSendDate() {

        return sendDate;

    }

    public void setSendDate(Date sendDate) {

        this.sendDate = sendDate;

    }

    public String getSender() {

        return sender;

    }

    public void setSender(String sender) {

        this.sender = sender;

    }  

   

}

 

 

Grails中实现AsnServiceservice的定义如下:

GasnService.groovy

import com.easipass.wms.AsnService

import com.easipass.wms.Asn

import javax.jws.WebService

import java.util.Date

 

@WebService(endpointInterface="com.easipass.wms.AsnService")

class GasnService implements AsnService{

 

    boolean transactional = false

 

      

    String getName(String no) {

           return "Asn_${no}"

    }

   

    Asn[] show() {

           Asn[] aa = new Asn[2];

           aa[0] = new Asn("12345","Int",new Date())

           aa[1] = new Asn("abcd","df",new Date())

           println "size=${aa.size()}  ${aa[0].asnNo}"

           return aa

    }

}

 

4.         grails-app\conf\spring 下的resources.xml中添加对xfire注解的支持bean,内容如下:

 

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

<beans xmlns="http://www.springframework.org/schema/beans"   

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  

       xsi:schemaLocation="  

       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">  

      

<bean id="webAnnotations" class="org.codehaus.xfire.annotations.jsr181.Jsr181WebAnnotations"></bean>

      

       <bean id="jsr181HandlerMapping" class="org.codehaus.xfire.spring.remoting.Jsr181HandlerMapping">

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

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

             

       </bean>

 

</beans>

 

5.         启动系统:grails run-app,在浏览器中输入http://localhost:8080/${appname}/services/ GasnService?wsdl可以得到展现为WebServiceGasnServiceWSDL。有了WSDL就可用各种客户端生成工具来生成WebService的访问程序。appname为grails创建的项目名。

 

这里使用了jsr181注解来展现WebService,在要展现的

分享到:
评论
2 楼 indexchen 2008-04-23  
简单方法也有,下载一个xfire plugin,只不过对生成的web service控制能力差一些
1 楼 mickeyccq 2008-04-21  
需要这么麻烦么?

相关推荐

    grails+Xfire webservice

    grails+Xfire webservice

    java使用XFire调用webService接口

    在本文中,我们将学习如何使用 XFire 框架在 Java 中调用 webService 接口。XFIRE 是一个基于 Java 的开源框架,用于简化 Web 服务的开发和集成。下面,我们将通过一个简单的例子,展示如何使用 XFire 调用 ...

    Java使用XFire调用WebService接口

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

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

    Spring作为一个强大的框架,提供了全面的依赖注入和面向切面编程能力,而XFire是早先的Web服务实现,它允许开发者轻松地将Java接口转换为SOAP Web服务。在本教程中,我们将深入探讨如何使用Spring和XFire编写Web服务...

    xfire+spring+maven构建webservice服务器和客户端

    标题中的“xfire+spring+maven构建webservice服务器和客户端”揭示了本教程将围绕三个主要技术进行讨论:XFire、Spring和Maven。这三者都是Java开发中不可或缺的工具,尤其在构建Web服务方面。 XFire是早期的一个...

    xfire实现webservice实例

    XFire通过简化编程模型和强大的注解支持,使得开发者能够快速地将Java接口转换为符合SOAP标准的Web服务。 二、Web服务基础 Web服务基于WS-I(Web Services Interoperability Organization)的标准,如SOAP(Simple ...

    xfire调用webservice

    xfire可以与多种类型的WebService结合使用,如SOAP、REST、XML-RPC等。xfire还提供了一个基于annotation的编程模型,使得开发者可以使用简单的Java代码来开发WebService。 xfire的主要特点包括: 1. 简单易用:...

    xfire发布webservice服务

    这篇博客文章“xfire发布webservice服务”可能详细介绍了如何使用XFire来构建并发布一个Web服务。 【描述】:“NULL” 虽然描述为空,但我们可以推测文章可能包含了从安装XFire到编写服务接口,再到部署和测试Web...

    使用XFire发布WebService

    首先,我们将学习如何创建一个简单的服务接口和服务实现,然后通过XFire将其发布为SOAP Web服务。接着,我们将了解如何创建一个客户端,使用XFire提供的客户端API来调用这个Web服务。 **发布WebService服务器端** ...

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

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

    JBPM服务部署与xfire发布webservice服务

    描述用eclipse部署JBPM服务,以及用xfire将JBPM服务发布成webservice。一、下载JBPM包并解压。。。。

    Xfire调用webservice无法接收到参数问题解决

    标题"Xfire调用webservice无法接收到参数问题解决"指出的核心问题是:当使用Xfire作为客户端调用Web服务时,服务端无法正确接收到传递的参数。这可能是由于多种原因引起的,如: 1. **XML序列化与反序列化问题**:...

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

    标题“Xfire调用WebService无法传递参数问题”暗示了开发者在尝试使用Xfire框架时遇到了参数无法正常传递到Web服务的情况。这可能涉及到多个方面,如编码问题、序列化错误、类型不匹配或者配置不正确等。以下是一些...

    WebService之XFire开发文档和代码

    4. **服务发布**:使用XFire提供的API或者XML配置,将服务发布为SOAP或RESTful服务。 5. **客户端调用**:在客户端,通过创建服务代理,即可调用远程的WebService。 **五、代码示例** 在XFire中,创建一个简单的...

    xfire发布webservice实例

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

    XFire初识-使用Eclipse开发WebService

    本教程将围绕Eclipse集成开发环境,详细介绍如何使用XFire来开发Web服务。 **一、XFire简介** XFire是Apache CXF项目的前身,它提供了一个轻量级、高性能的框架,用于构建Web服务。XFire支持多种协议,包括SOAP 1.1...

    使用xfire发布的webservice完整实例

    在这个"employeeServiceForXfire"的示例中,你将看到如何使用Xfire创建一个员工管理服务。服务可能包括以下功能: - **添加员工(addEmployee)**:接收一个新的员工对象,将其存储在数据库或其他持久化存储中。 - ...

    用XFire开发WebService+Spring注解

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

    xfire webservice 完整实例下载

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

    xfire教程+axis+webservice

    XFire是codeHaus组织提供的一个开源框架,它构建了POJO和SOA之间的桥梁,主要特性就是支持将POJO通过非常简单的方式发布成Web服务,这种处理方式不仅充分发挥了POJO的作用,简化了Java应用转化为Web服务的步骤和过程...

Global site tag (gtag.js) - Google Analytics