Spiga

用JRuby轻松搞定SOAP RPC调用

最初发表在JavaEye上,搬家了就搬过来了。

1、安装JRuby。今天发现JRuby已经发布了1.0.0RC1版本,可以到http://dist.codehaus.org/jruby/去下 载。正确设置一个系统环境变量JRUBY_HOME指向解压后的目录,并把%JRUBY_HOME%\bin添加到系统环境变量PATH中。新建一个 hello.rb文件:

ruby 代码
  1. puts 'Hello World.'
打开一个CMD窗口,切换到hello.rb所在目录,运行jruby hello.rb,在窗口中看到“Hello World.”了吧?--JRuby就安装好了。

2、安装AXIS。我在http://ws.apache.org/axis/index.html下载了AXIS1.4,解压后吧webapp下的axis目录复制到tomcat的webapp目录下,启动tomcat,
然 后打开浏览器输入网址http://localhost:8080/axis,会看到AXIS的主页面,点击Validation,如果没出现大的错误就 算安装成功了。接下来我们来部署一个web服务。在tomcat的webapp/axis目录下新建一个文件Hello.jws:
java 代码
  1. public class Hello {
  2. public String hello(String name){
  3. return "hello,"+name;
  4. }
  5. }
在浏览器中输入http://localhost:8080/axis/Hello.jws?wsdl,就会看到一个新发布的web服务的wsdl描述。

3、JRuby处理SOAP消息。在hello.rb中写入下面的代码:
ruby 代码
  1. require 'soap/rpc/driver'
  2. server = 'http://localhost:8080/axis/Hello.jws'
  3. InterfaceNS = 'impl'
  4. drv = SOAP::RPC::Driver.new(server, InterfaceNS)
  5. drv.add_method_with_soapaction('hello', InterfaceNS+'#hello', 'translationmode')
  6. puts drv.hello('YanHua')
代码很简洁,其中server、ns和action等信息可以在上面的那个wsdl文件中找到。在命令行运行jruby hello.rb屏幕上会打出“hello,YanHua”的字样,这样,我们就用JRuby轻松的实现了一个web服务的调用。

0 评论: