用Xfire框架可以用很简易的方法将POJO展现为WebService ,而且Xfire还提供和spring的集成,可以很方便的将spring的bean展现为WebService。Grails的service在运行时会被srping托管,成为一个bean,因此可以用Xfire将其展现为WebService。将grails的service展现为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中添加xfire的servlet处理器,由于grails的web.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. 为grails的service添加一个接口,因为Xfire展现WebService时需要用到接口。在grails的service中实现这个接口。接口以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中定义,jws对WebService的注解定义位于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中实现AsnService的service的定义如下:
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可以得到展现为WebService的GasnService的WSDL。有了WSDL就可用各种客户端生成工具来生成WebService的访问程序。appname为grails创建的项目名。
这里使用了jsr181注解来展现WebService,在要展现的
分享到:
- 2008-04-17 10:15
- 浏览 2033
- 评论(2)
- 论坛回复 / 浏览 (2 / 4000)
- 查看更多
相关推荐
grails+Xfire webservice
在本文中,我们将学习如何使用 XFire 框架在 Java 中调用 webService 接口。XFIRE 是一个基于 Java 的开源框架,用于简化 Web 服务的开发和集成。下面,我们将通过一个简单的例子,展示如何使用 XFire 调用 ...
这篇博客“Java使用XFire调用WebService接口”显然是讨论如何利用XFire这个开源框架来与Web服务交互。 XFire是Apache CXF项目的前身,它提供了一种简单的方式来创建和消费SOAP Web服务。XFire的强项在于其轻量级和...
Spring作为一个强大的框架,提供了全面的依赖注入和面向切面编程能力,而XFire是早先的Web服务实现,它允许开发者轻松地将Java接口转换为SOAP Web服务。在本教程中,我们将深入探讨如何使用Spring和XFire编写Web服务...
标题中的“xfire+spring+maven构建webservice服务器和客户端”揭示了本教程将围绕三个主要技术进行讨论:XFire、Spring和Maven。这三者都是Java开发中不可或缺的工具,尤其在构建Web服务方面。 XFire是早期的一个...
XFire通过简化编程模型和强大的注解支持,使得开发者能够快速地将Java接口转换为符合SOAP标准的Web服务。 二、Web服务基础 Web服务基于WS-I(Web Services Interoperability Organization)的标准,如SOAP(Simple ...
xfire可以与多种类型的WebService结合使用,如SOAP、REST、XML-RPC等。xfire还提供了一个基于annotation的编程模型,使得开发者可以使用简单的Java代码来开发WebService。 xfire的主要特点包括: 1. 简单易用:...
这篇博客文章“xfire发布webservice服务”可能详细介绍了如何使用XFire来构建并发布一个Web服务。 【描述】:“NULL” 虽然描述为空,但我们可以推测文章可能包含了从安装XFire到编写服务接口,再到部署和测试Web...
首先,我们将学习如何创建一个简单的服务接口和服务实现,然后通过XFire将其发布为SOAP Web服务。接着,我们将了解如何创建一个客户端,使用XFire提供的客户端API来调用这个Web服务。 **发布WebService服务器端** ...
xfire简单实例发布webservice,引用到2个jar包的简单例子
描述用eclipse部署JBPM服务,以及用xfire将JBPM服务发布成webservice。一、下载JBPM包并解压。。。。
标题"Xfire调用webservice无法接收到参数问题解决"指出的核心问题是:当使用Xfire作为客户端调用Web服务时,服务端无法正确接收到传递的参数。这可能是由于多种原因引起的,如: 1. **XML序列化与反序列化问题**:...
标题“Xfire调用WebService无法传递参数问题”暗示了开发者在尝试使用Xfire框架时遇到了参数无法正常传递到Web服务的情况。这可能涉及到多个方面,如编码问题、序列化错误、类型不匹配或者配置不正确等。以下是一些...
4. **服务发布**:使用XFire提供的API或者XML配置,将服务发布为SOAP或RESTful服务。 5. **客户端调用**:在客户端,通过创建服务代理,即可调用远程的WebService。 **五、代码示例** 在XFire中,创建一个简单的...
用java通过xfire框架实现ws,实现正向生成wsdl文件,并由wsdl逆向生成java ws客户端代码 测试输入:http://localhost:8080/webservice-xfire/services/CalculatorService?wsdl
本教程将围绕Eclipse集成开发环境,详细介绍如何使用XFire来开发Web服务。 **一、XFire简介** XFire是Apache CXF项目的前身,它提供了一个轻量级、高性能的框架,用于构建Web服务。XFire支持多种协议,包括SOAP 1.1...
在这个"employeeServiceForXfire"的示例中,你将看到如何使用Xfire创建一个员工管理服务。服务可能包括以下功能: - **添加员工(addEmployee)**:接收一个新的员工对象,将其存储在数据库或其他持久化存储中。 - ...
【标题】"用XFire开发WebService+Spring注解"涉及的主要知识点是利用XFire框架创建Web服务,并结合Spring框架的注解进行服务的管理和集成。XFire是一个强大的Java Web Service实现,它允许开发者轻松地创建和消费...
XFire Webservice是一个基于Java的开源工具,它简化了创建、部署和消费Web服务的过程。在深入探讨这个完整实例之前,我们首先需要了解Web服务的基本概念。Web服务是一种通过网络进行通信的应用程序接口(API)。它们...
XFire是codeHaus组织提供的一个开源框架,它构建了POJO和SOA之间的桥梁,主要特性就是支持将POJO通过非常简单的方式发布成Web服务,这种处理方式不仅充分发挥了POJO的作用,简化了Java应用转化为Web服务的步骤和过程...