2010-11-20 3 views
1

Ich versuche, einen JRuby on Rails-Krieg in Tomcat6 zu implementieren. Aus irgendeinem Grund kann activerecord-jdbcmysql-adapter nicht gefunden werden. Ich betreibe Rails 2.3.8, JRuby 1.5.5, JRuby-Rack 1.0.3. Der Edelstein ist mit Bündler verpackt und ich sehe es in der WEB-INF/Edelsteine ​​/ Edelsteine ​​Verzeichnis:Tomcat kann jdbcmysql-Adapter nicht mit JRuby-Krieg finden

drwxr-xr-x 3 root root 4096 2010-11-19 20:07 WEB-INF/gems/gems/activerecord-jdbcmysql-adapter-0.9.2 

Bin ich eine Umgebungsvariable oder etwas fehlt, das Tomcat verursacht nicht den Edelstein finden? Es erscheint in der Gem Liste, es ist auch im entsprechenden Verzeichnis.

Mein database.yml sieht wie folgt aus:

production: 
    adapter: jdbcmysql 
    encoding: utf8 
    database: mydb 
    host: localhost 
    port: 3306 
    username: foo 
    password: somepassword 

Die Zurückverfolgungs:

Nov 19, 2010 10:02:03 PM org.apache.catalina.core.ApplicationContext log 
SEVERE: unable to create shared application instance 
org.jruby.rack.RackInitializationException: Please install the jdbcmysql adapter: `gem install activerecord-jdbcmysql-adapter` (load error: jdbc_adapter/jdbc_adapter_internal -- java.lang.NoClassDefFoundError: org/jruby/internal/runtime/methods/InvocationMethodFactory$DescriptorInfo) 
from /var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:60:in `establish_connection' 
from /var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:55:in `establish_connection' 
from /var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/rails-2.3.8/lib/initializer.rb:438:in `initialize_database' 
from /var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/rails-2.3.8/lib/initializer.rb:141:in `process' 
from /var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/rails-2.3.8/lib/initializer.rb:113:in `run' 
from /var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/spree-0.11.1/lib/spree/initializer.rb:90:in `run' 
from /var/lib/tomcat6/webapps/fooproj/WEB-INF/config/environment.rb:13 
from /var/lib/tomcat6/webapps/fooproj/WEB-INF/config/environment.rb:44:in `load' 
from file:/var/lib/tomcat6/webapps/fooproj/WEB-INF/lib/jruby-rack-1.0.3.jar!/jruby/rack/rails.rb:44:in `load_environment' 
from file:/var/lib/tomcat6/webapps/fooproj/WEB-INF/lib/jruby-rack-1.0.3.jar!/jruby/rack/rails.rb:38:in `to_app' 
from file:/var/lib/tomcat6/webapps/fooproj/WEB-INF/lib/jruby-rack-1.0.3.jar!/jruby/rack/rails.rb:186:in `new' 
from <script>:2 
from file:/var/lib/tomcat6/webapps/fooproj/WEB-INF/lib/jruby-rack-1.0.3.jar!/vendor/rack-1.2.1/rack/builder.rb:46:in `instance_eval' 
from file:/var/lib/tomcat6/webapps/fooproj/WEB-INF/lib/jruby-rack-1.0.3.jar!/vendor/rack-1.2.1/rack/builder.rb:46:in `initialize' 
from <script>:2:in `new' 
from <script>:2 

at org.jruby.rack.DefaultRackApplicationFactory$4.init(DefaultRackApplicationFactory.java:184) 
at org.jruby.rack.DefaultRackApplicationFactory.getApplication(DefaultRackApplicationFactory.java:59) 
at org.jruby.rack.SharedRackApplicationFactory.init(SharedRackApplicationFactory.java:27) 
at org.jruby.rack.RackServletContextListener.contextInitialized(RackServletContextListener.java:40) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934) 
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429) 
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) 
at org.apache.catalina.core.ContainerBase.access$000(ContainerBase.java:123) 
at org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerBase.java:145) 
at java.security.AccessController.doPrivileged(Native Method) 
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:769) 
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526) 
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:902) 
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740) 
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500) 
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1258) 
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321) 
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) 
at org.apache.catalina.core.StandardHost.start(StandardHost.java:722) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) 
at org.apache.catalina.core.StandardService.start(StandardService.java:516) 
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
at org.apache.catalina.startup.Catalina.start(Catalina.java:583) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:616) 
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:616) 
at org.apache.commons.daemon.support.DaemonLoader.start(DaemonLoader.java:177) 
Caused by: org.jruby.exceptions.RaiseException: Please install the jdbcmysql adapter: `gem install activerecord-jdbcmysql-adapter` (load error: jdbc_adapter/jdbc_adapter_internal -- java.lang.NoClassDefFoundError: org/jruby/internal/runtime/methods/InvocationMethodFactory$DescriptorInfo) 
at Kernel.raise(/var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:76) 
at #<Class:01x3b96c67a>.establish_connection(/var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:60) 
at #<Class:01x3b96c67a>.establish_connection(/var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:55) 
at #<Class:01x3b96c67a>.establish_connection(/var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/rails-2.3.8/lib/initializer.rb:438) 
at Rails::Initializer.initialize_database(/var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/rails-2.3.8/lib/initializer.rb:141) 
at Rails::Initializer.process(/var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/rails-2.3.8/lib/initializer.rb:113) 
at #<Class:01x77277ffa>.run(/var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/spree-0.11.1/lib/spree/initializer.rb:90) 
at #<Class:01x251970e2>.run(/var/lib/tomcat6/webapps/fooproj/WEB-INF/config/environment.rb:13) 
at (unknown).(unknown)(/var/lib/tomcat6/webapps/fooproj/WEB-INF/config/environment.rb:44) 
at Kernel.load(file:/var/lib/tomcat6/webapps/fooproj/WEB-INF/lib/jruby-rack-1.0.3.jar!/jruby/rack/rails.rb:44) 
at JRuby::Rack::RailsBooter::Rails2Environment.load_environment(file:/var/lib/tomcat6/webapps/fooproj/WEB-INF/lib/jruby-rack-1.0.3.jar!/jruby/rack/rails.rb:38) 
at JRuby::Rack::RailsBooter::Rails2Environment.to_app(file:/var/lib/tomcat6/webapps/fooproj/WEB-INF/lib/jruby-rack-1.0.3.jar!/jruby/rack/rails.rb:186) 
at #<Class:01x53371566>.new(<script>:2) 
at (unknown).(unknown)(file:/var/lib/tomcat6/webapps/fooproj/WEB-INF/lib/jruby-rack-1.0.3.jar!/vendor/rack-1.2.1/rack/builder.rb:46) 
at Kernel.instance_eval(file:/var/lib/tomcat6/webapps/fooproj/WEB-INF/lib/jruby-rack-1.0.3.jar!/vendor/rack-1.2.1/rack/builder.rb:46) 
at Kernel.instance_eval(file:/var/lib/tomcat6/webapps/fooproj/WEB-INF/lib/jruby-rack-1.0.3.jar!/vendor/rack-1.2.1/rack/builder.rb:46) 
at Rack::Builder.initialize(<script>:2) 
at (unknown).new(<script>:2) 
at (unknown).(unknown)(:1) 
Nov 19, 2010 10:02:03 PM org.apache.catalina.core.ApplicationContext log 
SEVERE: Error: application initialization failed 
org.jruby.rack.RackInitializationException: unable to create shared application instance 
at org.jruby.rack.SharedRackApplicationFactory.init(SharedRackApplicationFactory.java:39) 
at org.jruby.rack.RackServletContextListener.contextInitialized(RackServletContextListener.java:40) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934) 
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429) 
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) 
at org.apache.catalina.core.ContainerBase.access$000(ContainerBase.java:123) 
at org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerBase.java:145) 
at java.security.AccessController.doPrivileged(Native Method) 
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:769) 
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526) 
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:902) 
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740) 
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500) 
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1258) 
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321) 
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) 
at org.apache.catalina.core.StandardHost.start(StandardHost.java:722) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) 
at org.apache.catalina.core.StandardService.start(StandardService.java:516) 
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
at org.apache.catalina.startup.Catalina.start(Catalina.java:583) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:616) 
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:616) 
at org.apache.commons.daemon.support.DaemonLoader.start(DaemonLoader.java:177) 
Caused by: org.jruby.rack.RackInitializationException: Please install the jdbcmysql adapter: `gem install activerecord-jdbcmysql-adapter` (load error: jdbc_adapter/jdbc_adapter_internal -- java.lang.NoClassDefFoundError: org/jruby/internal/runtime/methods/InvocationMethodFactory$DescriptorInfo) 
from /var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:60:in `establish_connection' 
from /var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:55:in `establish_connection' 
from /var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/rails-2.3.8/lib/initializer.rb:438:in `initialize_database' 
from /var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/rails-2.3.8/lib/initializer.rb:141:in `process' 
from /var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/rails-2.3.8/lib/initializer.rb:113:in `run' 
from /var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/spree-0.11.1/lib/spree/initializer.rb:90:in `run' 
from /var/lib/tomcat6/webapps/fooproj/WEB-INF/config/environment.rb:13 
from /var/lib/tomcat6/webapps/fooproj/WEB-INF/config/environment.rb:44:in `load' 
from file:/var/lib/tomcat6/webapps/fooproj/WEB-INF/lib/jruby-rack-1.0.3.jar!/jruby/rack/rails.rb:44:in `load_environment' 
from file:/var/lib/tomcat6/webapps/fooproj/WEB-INF/lib/jruby-rack-1.0.3.jar!/jruby/rack/rails.rb:38:in `to_app' 
from file:/var/lib/tomcat6/webapps/fooproj/WEB-INF/lib/jruby-rack-1.0.3.jar!/jruby/rack/rails.rb:186:in `new' 
from <script>:2 
from file:/var/lib/tomcat6/webapps/fooproj/WEB-INF/lib/jruby-rack-1.0.3.jar!/vendor/rack-1.2.1/rack/builder.rb:46:in `instance_eval' 
from file:/var/lib/tomcat6/webapps/fooproj/WEB-INF/lib/jruby-rack-1.0.3.jar!/vendor/rack-1.2.1/rack/builder.rb:46:in `initialize' 
from <script>:2:in `new' 
from <script>:2 

at org.jruby.rack.DefaultRackApplicationFactory$4.init(DefaultRackApplicationFactory.java:184) 
at org.jruby.rack.DefaultRackApplicationFactory.getApplication(DefaultRackApplicationFactory.java:59) 
at org.jruby.rack.SharedRackApplicationFactory.init(SharedRackApplicationFactory.java:27) 
... 32 more 
Caused by: org.jruby.exceptions.RaiseException: Please install the jdbcmysql adapter: `gem install activerecord-jdbcmysql-adapter` (load error: jdbc_adapter/jdbc_adapter_internal -- java.lang.NoClassDefFoundError: org/jruby/internal/runtime/methods/InvocationMethodFactory$DescriptorInfo) 
at Kernel.raise(/var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:76) 
at #<Class:01x3b96c67a>.establish_connection(/var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:60) 
at #<Class:01x3b96c67a>.establish_connection(/var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:55) 
at #<Class:01x3b96c67a>.establish_connection(/var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/rails-2.3.8/lib/initializer.rb:438) 
at Rails::Initializer.initialize_database(/var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/rails-2.3.8/lib/initializer.rb:141) 
at Rails::Initializer.process(/var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/rails-2.3.8/lib/initializer.rb:113) 
at #<Class:01x77277ffa>.run(/var/lib/tomcat6/webapps/fooproj/WEB-INF/gems/gems/spree-0.11.1/lib/spree/initializer.rb:90) 
at #<Class:01x251970e2>.run(/var/lib/tomcat6/webapps/fooproj/WEB-INF/config/environment.rb:13) 
at (unknown).(unknown)(/var/lib/tomcat6/webapps/fooproj/WEB-INF/config/environment.rb:44) 
at Kernel.load(file:/var/lib/tomcat6/webapps/fooproj/WEB-INF/lib/jruby-rack-1.0.3.jar!/jruby/rack/rails.rb:44) 
at JRuby::Rack::RailsBooter::Rails2Environment.load_environment(file:/var/lib/tomcat6/webapps/fooproj/WEB-INF/lib/jruby-rack-1.0.3.jar!/jruby/rack/rails.rb:38) 
at JRuby::Rack::RailsBooter::Rails2Environment.to_app(file:/var/lib/tomcat6/webapps/fooproj/WEB-INF/lib/jruby-rack-1.0.3.jar!/jruby/rack/rails.rb:186) 
at #<Class:01x53371566>.new(<script>:2) 
at (unknown).(unknown)(file:/var/lib/tomcat6/webapps/fooproj/WEB-INF/lib/jruby-rack-1.0.3.jar!/vendor/rack-1.2.1/rack/builder.rb:46) 
at Kernel.instance_eval(file:/var/lib/tomcat6/webapps/fooproj/WEB-INF/lib/jruby-rack-1.0.3.jar!/vendor/rack-1.2.1/rack/builder.rb:46) 
at Kernel.instance_eval(file:/var/lib/tomcat6/webapps/fooproj/WEB-INF/lib/jruby-rack-1.0.3.jar!/vendor/rack-1.2.1/rack/builder.rb:46) 
at Rack::Builder.initialize(<script>:2) 
at (unknown).new(<script>:2) 
at (unknown).(unknown)(:1) 

Antwort

0

Vor einiger Zeit wurde ich eine kleine JRuby und Rails-Anwendung zu testen und ich habe nie Datenbank-Verbindungen arbeiten mit die neuesten Versionen von JRuby, Rails und Warbler.

Nach vielen, vielen Iterationen erzeugt diese Kombination eine WAR-Datei, die auf Tomcat arbeitete 5.5+:

  • JRuby 1.3.1
  • Rails 2.3.2
  • wobbelton 0.9.13

Denken Sie auch daran die folgende Zeile auf yourApp/config/warbler.conf-Datei Kommentar-:

config.gems += ["activerecord-jdbcmysql-adapter", "jruby-openssl"] 
0

Ich konnte use MS SQL Server JDBC mit Tomcat. Für MySQL sollte das nicht anders sein. Ich verwende jedoch nicht die DB-spezifischen Adapter, sondern den generischen JDBC-Adapter und dann den eigentlichen JDBC-Treiber in meinem/lib/java-Ordner.

Stellen Sie sicher, dass der Warbler den JDBC-Treiber zusammenpackt. Sie sollten in der Lage sein, Ihre WAR-Datei zu überprüfen, um sicherzustellen, dass alles vorhanden ist. Mit Bundler sollten Sie nicht unbedingt config.gems + = - Warbler eingeben müssen, um alle Edelsteine ​​in Gemfile.lock zu packen.