Tomcat не может найти адаптер jdbcmysql с помощью JRuby war - PullRequest
1 голос
/ 20 ноября 2010

Я пытаюсь развернуть войну JRuby on Rails в Tomcat6. По некоторым причинам он не может найти activerecord-jdbcmysql-adapter. Я использую Rails 2.3.8, JRuby 1.5.5, JRuby-Rack 1.0.3. Gem поставляется в комплекте с Bundler, и я вижу его в каталоге WEB-INF / gems / gems:

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

Мне не хватает какой-то переменной окружения или чего-то, что заставляет Tomcat не найти драгоценный камень? Он отображается в списке драгоценных камней, он также находится в соответствующем каталоге.

Мой database.yml выглядит следующим образом:

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

След:

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)

Ответы [ 2 ]

0 голосов
/ 11 декабря 2010

Я смог использовать MS SQL Server JDBC с Tomcat. Это не должно быть иначе для MySQL. Я не использую адаптеры, специфичные для БД, но общий адаптер JDBC, а затем предоставляю фактический драйвер JDBC в моей папке / lib / java.

Просто убедитесь, что певчая птица упаковывает драйвер JDBC. Вы должны быть в состоянии проверить ваш файл .war, чтобы убедиться, что все там. С Bundler вам не нужно указывать config.gems + = - Warbler будет захватывать все драгоценные камни в Gemfile.lock.

0 голосов
/ 05 декабря 2010

Некоторое время назад я тестировал небольшое приложение JRuby и Rails, и у меня никогда не было соединений с базой данных, работающих с использованием последних версий JRuby, Rails и Warbler.

После многих, многих итераций эта комбинация создала файл WAR, который работал на Tomcat 5.5 +:

  • JRuby 1.3.1
  • Рельсы 2.3.2
  • камышевка 0.9.13

Кроме того, не забудьте раскомментировать следующую строку в yourApp / config / warbler.conf file:

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