最近要在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程序独立跑任务。