简体   繁体   English

Jruby 1.6.8 tomcat部署问题(org.jruby.rack.rails.RailsS​​ervletContextListener)

[英]Jruby 1.6.8 tomcat deployment issue (org.jruby.rack.rails.RailsServletContextListener)

I'm trying to deploy a JoR application with a war file built using warbler-0.9.14 to Tomcat 7. However when I try and start the app, I get the following error 我正在尝试将具有使用warbler-0.9.14构建的war文件的JoR应用程序部署到Tomcat7。但是,当我尝试启动该应用程序时,出现以下错误

Jul 09, 2016 3:48:13 PM org.apache.catalina.core.StandardContext listenerStop SEVERE: Exception sending context destroyed event to listener instance of class org.jruby.rack.rails.RailsServletContextListener java.lang.NullPointerException at org.jruby.rack.SharedRackApplicationFactory.destroy(SharedRackApplicationFactory.java:58) at org.jruby.rack.RackServletContextListener.contextDestroyed(RackServletContextListener.java:50) at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:5146) at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5810) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:224) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:159) at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1312) at org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:690) at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:216) at javax.se 2016年7月9日3:48:13 PM org.apache.catalina.core.StandardContext listenerStop严重:异常向org.jruby的类org.jruby.rack.rails.RailsS​​ervletContextListener java.lang.NullPointerException的类的侦听器实例发送上下文破坏事件org.jruby.rack.RackServletContextListener.contextDestroyed(RackServletContextListener.java:50)位于org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:5146)位于.rack.SharedRackApplicationFactory.destroy(SharedRackApplicationFactory.java:58)位于org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:224)的org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5810)(位于org.apache.catalina.util.LifecycleBase.start(在org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1312)在org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:690)在org.apache.catalina的LifecycleBase.java:159) javax.se上的.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:216) rvlet.http.HttpServlet.service(HttpServlet.java:650) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:136) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108) at org.apache.catalina.core.App org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)上的javax.servlet.http.HttpServlet.service(HttpServlet.java:731)上的rvlet.http.HttpServlet.service(HttpServlet.java:650)在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)在org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:136)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (org.apache.catalina.core。(ApplicationFilterChain.java:241)在org.org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)的apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)在org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter。 java:108),网址为org.apache.catalina.core.App licationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:614) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1082) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(Abs 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)处的licationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:614)的.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve .java:169)位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)位于org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)位于org.apache.catalina。 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442)的core.StandardEngineValve.invoke(StandardEngineValve.java:116)在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1082)在org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(Abs tractProtocol.java:623) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:318)上的tractProtocol.java:623)java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)上的orgProcess。 org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)上的.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615)在java.lang.Thread.run(Thread.java :745)

:

I just don't know enough about Java/jruby to know what I'm missing. 我只是对Java / jruby不够了解,所以我不知道所缺少的东西。 Any help or reference to any docs would be very appreciated. 任何帮助或对任何文档的引用将不胜感激。 The codebase is very old and there is no documentation. 代码库很旧,没有文档。 I've determined that it's using jruby-1.6.8 and rails 2.3.5. 我确定它正在使用jruby-1.6.8和rails 2.3.5。

Here's the web.xml 这是web.xml

 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <context-param> <param-name>rails.env</param-name> <param-value>development</param-value> </context-param> <context-param> <param-name>public.root</param-name> <param-value>/</param-value> </context-param> <context-param> <param-name>jruby.min.runtimes</param-name> <param-value>2</param-value> </context-param> <context-param> <param-name>jruby.max.runtimes</param-name> <param-value>4</param-value> </context-param> <listener> <listener-class>org.jruby.rack.rails.RailsServletContextListener</listener-class> </listener> <servlet> <servlet-name>Rails</servlet-name> <servlet-class>org.jruby.rack.RackServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Rails</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <servlet> <servlet-name>ImageServlet</servlet-name> <servlet-class>net.sf.jasperreports.j2ee.servlets.ImageServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ImageServlet</servlet-name> <url-pattern>/servlets/image</url-pattern> </servlet-mapping> <security-constraint> <web-resource-collection> <web-resource-name>Forbidden</web-resource-name> <url-pattern>/*</url-pattern> <http-method>DELETE</http-method> <http-method>TRACE</http-method> <http-method>OPTIONS</http-method> </web-resource-collection> <auth-constraint /> </security-constraint> </web-app> 

Looks like jruby-rack was the problem. 看起来jruby-rack是问题所在。 The version of warbler I was using was really old, so I ended up upgrading to 1.4.9 which upgraded jruby-rack to jruby-rack-1.1.20.jar. 我使用的莺的版本真的很旧,因此最终升级到1.4.9,将jruby-rack升级到jruby-rack-1.1.20.jar。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM