rjb调用java方法

最近要在ror项目中引进一个java接口方法。一似乎接触了rjb。

事前准备
一:下载rjb相关版本gem包。

gem install rjb

确认安装成功
为了确认 RJB 安装成功,首先调用 Ruby 的交互式控制台 irb:
[root@san]# irb

然后输入 require 'rjb':
irb(main):001:0> require 'rjb'

=> true

irb(main):002:0>exit

二:安装jdk,配置jdk环境变量。

JAVA方法打包
一:把需要调用的类方法打成jar包,类方法中本身有调用jar包的,要把相关jar解压出来放到根目录下一起打包包含进来。

二:将打好的jar包放到ror项目的lib目录下待调用。

ror相关调用:

一:在ror的envieroment.rb文件中配置以下变量

ENV['JAVA_HOME'] = "d:/jdk1.6.0_10"

ENV['LD_LIBRARY_PATH'] = "d:/jdk1.6.0_10/jre/lib/i386:d:/jdk1.6.0_10/jre/lib/i386/client"


二:ruby引用调用jar包中的java类方法

module Rjbtest
require 'rubygems'
require 'rjb'
 def nmsrjb( host, port, ip, arg0, arg1, arg2, arg3)  
  Rjb::load(classpath = "#{RAILS_ROOT}/lib/testjrb.jar", jvmargs=[])
    test = Rjb::import("EventClientDemo")
    nmstest=test.new
    nmstest.sendevents( host, port, ip, arg0, arg1, arg2, arg3)
 end
end


需要注意的是,当使用的是安腾服务器的时候包一个rjbcore.rb文件中报错。多次验证是里边的一个.so文件不兼容,不知道有没有相关的gem包支持。最后针对安腾服务器单独写了java程序独立跑任务。

你可能感兴趣的:(RJB)