【问题标题】:Jruby 1.6.8 tomcat deployment issue (org.jruby.rack.rails.RailsServletContextListener)Jruby 1.6.8 tomcat 部署问题 (org.jruby.rack.rails.RailsS​​ervletContextListener)
【发布时间】:2016-11-12 03:47:17
【问题描述】:

我正在尝试将带有使用 warbler-0.9.14 构建的 war 文件的 JoR 应用程序部署到 Tomcat 7。但是,当我尝试启动该应用程序时,出现以下错误

2016 年 7 月 9 日下午 3:48:13 org.apache.catalina.core.StandardContext listenerStop 严重:向 org.jruby.rack.rails.RailsS​​ervletContextListener 类的侦听器实例发送上下文破坏事件的异常 java.lang.NullPointerException 在 org.jruby.rack.SharedRackApplicationFactory.destroy(SharedRackApplicationFactory.java:58) 在 org.jruby.rack.RackServletContextListener.contextDestroyed(RackServletContextListener.java:50) 在 org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:5146) 在 org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5810) 在 org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:224) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:159) 在 org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1312) 在 org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:690) 在 org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:216) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:650) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:136) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:614) 在 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.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1082) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:623) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 在 java.lang.Thread.run(Thread.java:745)

我对 Java/jruby 的了解还不够,无法知道我缺少什么。任何帮助或对任何文档的参考将不胜感激。代码库很旧,没有文档。我已经确定它使用的是 jruby-1.6.8 和 rails 2.3.5。

这是 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>

【问题讨论】:

    标签: java tomcat7 jruby jrubyonrails warbler


    【解决方案1】:

    看起来 jruby-rack 是问题所在。我使用的warbler版本真的很旧,所以我最终升级到1.4.9,将jruby-rack升级到jruby-rack-1.1.20.jar。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-18
      • 1970-01-01
      • 2012-03-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2011-05-23
      • 1970-01-01
      相关资源
      最近更新 更多