WEB开发网
开发学院软件开发Java 在 Ruby on Rails 应用程序中重用 Java 代码 阅读

在 Ruby on Rails 应用程序中重用 Java 代码

 2009-11-20 00:00:00 来源:WEB开发网   
核心提示: [root@san]#exportJAVA_HOME=/usr/local/jdk60[root@san]#exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JAVA_HOME/jre/lib/i386[root@san]#exportLD_LIBRARY_PATH

[root@san]# export JAVA_HOME=/usr/local/jdk60 
 
[root@san]# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JAVA_HOME/jre/lib/i386 
 
[root@san]# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JAVA_HOME/jre/lib/i386/client

如果打算在独立的 Ruby 脚本中使用 RJB,那么只需在正在处理的 shell 中设置这些环境变量。对于您的 Ruby on Rails 应用程序,还必须在 Rails 应用程序的 environment.rb 文件中设置这些变量。

将 RJB 装载到 Rails 应用程序

要将 RJB 装载到 Rails 应用程序并将它设置为可以调用 Java 类,需要执行两个步骤:

告诉 Ruby 将 rjb 库包含到代码中。

装载 JVM,设置类路径和其他可选的 JVM 参数。

首先,使用下面的命令初始化 RJB:

require 'rjb' 

接着,将 Rails 应用程序中将要使用的所有 legacy .jar 文件 — 本例中为 tar.jar — 添加到 classpath 变量:

Rjb::load(classpath = '.:/path/to/tar.jar', jvmargs=[]) 

可以将 jvmargs 留空,除非希望为 JVM 指定额外的参数。

现在,可以将准备使用的 Java 类导入到 Ruby 中,实例化这些类,并调用所需的方法。

将 Java 类导入到 Ruby 并实例化

清单 1 中的 Ruby 代码从 tar.jar 包中导入了需要的 Java 类,并从导入的类中创建了 Ruby 对象:


清单 1. 将 Java 类导入到 Ruby 并实例化
 
tararchive = Rjb::import('com.ice.tar.TarArchive') 
 
fileinputstream = Rjb::import('java.io.FileInputStream') 
 
file = Rjb::import('java.io.File') 
 
file_instance = file.new_with_sig('Ljava.lang.String;','.') 
 
fileinputstream_instance = 
fileinputstream.new_with_sig('Ljava.lang.String;','test.tar') 
 
tararchive_instance = 
tararchive.new_with_sig('Ljava.io.InputStream;',fileinputstream_instance) 
 
p "Let's verify that the objects created are indeed of the classes we 
wanted..." 
p "------------------------------" 
 
p "For the File instance...." 
p "Expecting: java.io.File , it is: " + file_instance._classname 
p "------------------------------" 
 
p "For the FileInputStream instance...." 
p "Expecting: java.io.FileInputStream , it is: " + 
fileinputstream_instance._classname 
p "------------------------------" 
 
p "For the TarArchive instance...." 
p "Expecting: com.ice.tar.TarArchive , it is: " + 
tararchive_instance._classname 

上一页  1 2 3 4 5 6 7  下一页

Tags:Ruby on Rails

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接