[Ruby][S2]Rubyからrjbを使ってS2DAO経由でPostgreSQLにアクセス
なんてことを実験してみた。
一応出来ました。
rubylib/Java.rb
require 'rjb' class Java extend Rjb classpaths = Array.new # diconファイルもclasspathから検索されます。 # for S2 classpaths.push('classes') classpaths.push('javalib/s2-framework-2.2.8.jar') classpaths.push('javalib/ognl-2.6.5.jar') classpaths.push('javalib/servlet-api.jar') classpaths.push('javalib/aopalliance.jar') classpaths.push('javalib/commons-logging.jar') classpaths.push('javalib/javassist.jar') # for S2DAO classpaths.push('javalib/jta.jar') classpaths.push('javalib/s2-extension-2.2.8.jar') classpaths.push('javalib/s2-dao-1.0.26.jar') #for JDBC classpaths.push('javalib/postgresql-8.0-310.jdbc3.jar') load(classpaths.join(';')) System = import('java.lang.System') Class = import('java.lang.Class') ClassLoader = import('java.lang.ClassLoader') S2ContainerFactory = import('org.seasar.framework.container.factory.S2ContainerFactory') end
classes/test/testDao.dicon
dao.interceptor
Main.rb
require 'rjb' require 'rubylib/Java' p Dir::pwd puts Java::System.getProperty('java.class.path') puts "----------------------------------" container = Java::S2ContainerFactory.create('test/testDao.dicon') p container puts "----------------------------------" kls = Java::Class.forName('test.EmployeeDao', true, Java::ClassLoader.getSystemClassLoader) c1 = container.getComponent(kls) p c1 p c1.getEmployee(7799).toString
実行結果
"/cygdrive/d/home/EclipseProjects/TestS2" classes;javalib/s2-framework-2.2.8.jar;javalib/ognl-2.6.5.jar;javalib/servlet-api.jar;javalib/aopalliance.jar;javalib/commons-logging.jar;javalib/javassist.jar;javalib/jta.jar;javalib/s2-extension-2.2.8.jar;javalib/s2-dao-1.0.26.jar;javalib/postgresql-8.0-310.jdbc3.jar
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-