Grails?加上Xfire plugin?搭建web Service?环境.总体上来说还是比较方便的.没有直接使用j2ee+xfire那么多的繁琐xml配置.Grails再一次体现了敏捷开发的便捷性. ????首先要给自己的Grails Application?应用工程装上Xfire?的插件.可以选择先下载zip包再安装也可以直接由网络安装. Type this command in your Grail application directory //在你的应用程序目录下执行 $> grails install-plugin xfire or if you have a plugin archive locally. //如果插件已经下载到了本地,就用这个方法 $> grails install-plugin /path/to/grails-xfire-0.7.3.zip ? ? ? OK只要正确执行完上面的方法,那么在你的Grails Applications目录下面就会多出一个Plugins?目录. 如图: ?
? 然后到?%GRAILS_APPLICATION%/conf目录下面去修改一下UrlMappings.groovy文件,记得一定要改. static mappings = { ??????????"/$controller/$action?/$id?"{ ??????????????constraints { ????????????????????????controller(matches:/.*[^(services)].*/) ??????????????????} ??????????} } //红色字体为新添加的部分 ? ????接下来就是直接写属于你自己需要的业务服务类了,这里我假设我的服务类名为Test,在CMD模式下输入: %GRAILS_HOME%$>?grails create-service Test ? ????那么在%GRAILS_APPLICATION%/grails-app\services?目录下就会生成一个TestService.groovy?文件,这就是我们要的服务文件.?我们要做的就是修改这个文件变成我们的业务逻辑服务即可.加上Groovy语法特有的闭类性质.和Spring的注入(POGO)特性,这个服务类将会显得很强大…嘿嘿 这里我先做个测试:?文件内容如下 import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; ? @WebService(name="Test",serviceName="Test", ??targetNamespace="http://www.oksonic.cn/xfire") class TestService { ? static expose=['xfire'] ? String otherMethod2(@WebParam String name) { ????return "Hello! ${name}"; } ? ? @WebMethod @WebResult int add(@WebParam int intOne,@WebParam int intTwo) { ????return intOne+intTwo; } ? ? } ? 这里定义了2个方法otherMethod2?根据用户传入的姓名对用户说hello,以及一个 简单的加法?add ? 好了!当你写完这个方法的时候,那么这个服务也就写完了.接着就是直接启动服务来验证了.在CMD中输入 %GRAILS_HOME%$>?grails run-app 等待?1?分钟…没办法,这是我目前觉得Grails?与?Ruby?相比唯一不足的地方,就是启动太慢,但是想想,Grails在启动的时候把文件直接编译成java class ,而Ruby却没有. 或许编译时的等待正式为了换取运行时的效率吧. ? ? OK!打开浏览器查看Test服务的wsdl吧,如过你能看到,就证明你已经成功一半了.用IE看吧,我试过用K-Meleon查看居然什么都看不到~汗. http://localhost:8080/%Grails_Application%/services/Test?wsdl 如图: ? ? ? ? 恩,这样环境就搭建好了,是不是很简单?如果你还觉得繁琐,你可以去查查一半xfire+java web程序的搭建方案.保管光xml配置你就看的不爽了. ? ? 环境达好了,那服务怎么访问呢? MS?为他们的程序员准备的VS可以很方便的根据wsdl自动生成访问类.那java fans欧斯搞列(怎么办呢). 我想到了Apache,翻倒一番终于看到了Axis这个webService?服务器,这是一个服务器我晕,居然还可以在运行的时候动态替换服务类文件.呵呵~可惜的是这只是一个单独的服务器,而不同与Grails是一个框架解决方案. Axis?可以根据?wsdl?自动生成调用webService的java类文件. 我们可以先到Axis/lib目录下面,用CMD执行 java -classpath ".;commons-logging-1.0.4.jar;axis.jar;commons-discovery-0.2.jar;jaxrpc.jar;wsdl4j-1.5.1.jar; " org.apache.axis.wsdl.WSDL2Java -o "abcdefg"?http://localhost:8080/DerbyDemo/services/Test?wsdl ? 这些都是在一行里面 千万不要分行要不会报错的 -o?指定输出目录 后面跟上服务地址的?wsdl地址即可 ? 这个在Axis/lib目录下就会多出abcdefg?目录?,下面变是为这个Test服务生成的调用java类文件.我们只要把这个类文件直接复制到java IDE中, 然后写一个简单的测试类: ??public static void main(String[] args) { ????????try { ????????????Test_Service adcInterface = new Test_ServiceLocator(); ????????????Test_PortType test = adcInterface.getTestHttpPort(); ? ????????????//以下就要调用的方法 ????????????System.out.println(test.otherMethod2("asd")); ????????????System.out.println(test.add(33,11)); ? ????????} catch (Exception e) { ????????????e.printStackTrace(); ????????} ? OK就会看到结果了.当然把这些类直接放到Grails中的?%Grails_Application%\src\java目录下,那么在Groovy脚本中也就能这么调用了.
详细解决方案
Grails+Xfire 筹建Web Service环境
热度:863 发布时间:2012-11-09 10:18:48.0
相关解决方案
- 小弟我想做一个多功能web service client
- Servlet.service() for servlet [jsp] in context with path解决方案
- web service 第一天接触不懂 仍是那个访问天气预报的例子 代码很简单
- Web Service 错误:服务器未能识别 HTTP 头 SOAPAction 的值: http://tempuri.org/
- web service No services have been found.解决方法
- 学习Web Service,用哪种框架好?AXIS,XFire,CXF?该如何处理
- java service 项目有关问题
- 对象集,数组,web service,该怎么解决
- org.apache.catalina.core.ApplicationDispatcher invoke Servlet.service() for se解决思路
- Grails 连接数据库。解决办法
- JMS:Java讯息服务(Java Message Service)初学笔记
- 新手学习j2me,请教调用.net service 时用ksoap,还是用JSR172好
- Xfire 开发webservices 异常,
- 前辈啊指点指点Java,(Grails/Groovy)解决方案
- WCF service 下传订单文件到ftp
- 请教:有人开发过OPOS驱动吗,撰写 service object?
- vc写的 windows service 控制台程序有关问题
- 请教一上有没有C++调用WEB SERVICE 做成DLL的例子
- vs2008中怎么使用vc++构建web service
- 客户端用vc2005的c++来编写,web service 只是连接就报错解决方法
- Reporting service 中使用储存过程有关问题
- Reporting Service 报表订阅 到win2003 系统的有关问题
- Reporting Service 分组排列有关问题
- Silverlight学习数据跟RIA服务时,找不到domain service class模板
- 生手学习web service
- asp reporting service 只显示一起,大神进
- ajax怎么调用带有SoapHeader的 web service
- ASP.NET web service 中 怎么保持状态
- !AJAX的autocompleteextender控件实现自动输入一定需要Web Service
- 无法打开登录所请求的数据库 "xxx"登录失败用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败解决方案