无法在Karaf 2.2.0 OSGi容器中从根上下文运行WAR

时间:2011-04-18 23:23:07

标签: java jetty osgi apache-karaf pax

我一直在努力让一个Web应用程序在Karaf 2.2.0的根应用程序上下文中运行(它在Karaf 2.1.4中运行良好)。我已经能够使用Tomcat示例WAR将问题隔离到容易复制的问题。

  1. 从Karaf运行以下命令:

    osgi:install -s webbundle:http://tomcat.apache.org/tomcat-5.5-doc/appdev/sample/sample.war?Bundle-SymbolicName = tomcat-sample& Webapp-Context = / anything

  2. 从网络浏览器访问应用程序(http:// localhost:8181 / anything / index.html)

  3. 卸载样本包
  4. 使用根上下文路径使用以下命令重新安装捆绑包:

    osgi:install -s webbundle:http://tomcat.apache.org/tomcat-5.5-doc/appdev/sample/sample.war?Bundle-SymbolicName = tomcat-sample& Webapp-Context = /

  5. 尝试从您的网络浏览器访问该应用程序(http:// localhost:8181 / index.html)

  6. 请注意404错误。
  7. 查看日志时,似乎当Web应用程序位于根应用程序上下文中时,它会为任何请求添加“/ default /”。例如,当尝试访问/index.html时,它会在/default/index.html中查找,无法找到该页面,并返回未找到的错误(有关详细信息,请参阅下面的日志输出)。

    有谁知道如何解决这个问题?


    LOG OUTPUT

    15:14:46,270 | DEBUG | 30 - /index.html | log                              | .eclipse.jetty.util.log.Slf4jLog   70 | 43 - org.eclipse.jetty.util - 7.2.2.v20101205 | REQUEST /index.html on org.eclipse.jetty.server.nio.SelectChannelConnector$3@693a1324
    15:14:46,270 | DEBUG | 30 - /index.html | ServerModel                      | eb.service.spi.model.ServerModel  268 | 52 - org.ops4j.pax.web.pax-web-spi - 1.0.1 | Matching [/index.html]...
    15:14:46,270 | DEBUG | 30 - /index.html | ServerModel                      | eb.service.spi.model.ServerModel  292 | 52 - org.ops4j.pax.web.pax-web-spi - 1.0.1 | Path [/index.html] matched to {pattern=/.*,model=ResourceModel{id=org.ops4j.pax.web.service.spi.model.ResourceModel-22,name=default,urlPatterns=[/],alias=/,servlet=ResourceServlet{context=/,alias=/,name=default},initParams={},context=ContextModel{id=org.ops4j.pax.web.service.spi.model.ContextModel-21,name=,httpContext=org.ops4j.pax.web.extender.war.internal.WebAppWebContainerContext@3942ef25,contextParams={webapp.context=}}}}
    15:14:46,270 | DEBUG | 30 - /index.html | log                              | .eclipse.jetty.util.log.Slf4jLog   70 | 43 - org.eclipse.jetty.util - 7.2.2.v20101205 | Got Session ID 17kb0ch4hv02w1ennfxju5owpw from cookie
    15:14:46,270 | DEBUG | 30 - /index.html | log                              | .eclipse.jetty.util.log.Slf4jLog   70 | 43 - org.eclipse.jetty.util - 7.2.2.v20101205 | sessionManager=org.eclipse.jetty.server.session.HashSessionManager@7d8aecf1
    15:14:46,271 | DEBUG | 30 - /index.html | log                              | .eclipse.jetty.util.log.Slf4jLog   70 | 43 - org.eclipse.jetty.util - 7.2.2.v20101205 | session=null
    15:14:46,271 | DEBUG | 30 - /index.html | log                              | .eclipse.jetty.util.log.Slf4jLog   70 | 43 - org.eclipse.jetty.util - 7.2.2.v20101205 | servlet=default
    15:14:46,271 | DEBUG | 30 - /index.html | log                              | .eclipse.jetty.util.log.Slf4jLog   70 | 43 - org.eclipse.jetty.util - 7.2.2.v20101205 | servlet holder=
    15:14:46,271 | DEBUG | 30 - /index.html | HttpServiceContext               | etty.internal.HttpServiceContext  115 | 54 - org.ops4j.pax.web.pax-web-jetty - 1.0.1 | Handling request for [/index.html] using http context [org.ops4j.pax.web.extender.war.internal.WebAppWebContainerContext@3942ef25]
    15:14:46,271 | DEBUG | 30 - /index.html | log                              | .eclipse.jetty.util.log.Slf4jLog   70 | 43 - org.eclipse.jetty.util - 7.2.2.v20101205 | chain=
    15:14:46,272 | DEBUG | 30 - /index.html | WebAppWebContainerContext        | r.war.internal.WebAppHttpContext  113 | 64 - org.ops4j.pax.web.pax-web-extender-war - 1.0.1 | Searching bundle [tomcat-sample [97]] for resource [default/index.html], normalized to [default/index.html]
    15:14:46,272 | DEBUG | 30 - /index.html | WebAppWebContainerContext        | r.war.internal.WebAppHttpContext  140 | 64 - org.ops4j.pax.web.pax-web-extender-war - 1.0.1 | Resource not found
    15:14:46,273 | DEBUG | 30 - /index.html | log     
    

1 个答案:

答案 0 :(得分:6)

此问题现已作为Karaf Bug提交。见https://issues.apache.org/jira/browse/KARAF-577