4

您好,我正在尝试在 Felix 容器中部署 Web 应用程序。我已经使用我的 Web 应用程序完成了所有必需的配置,例如设置清单标头: Webapp-Context: Bundle-ClassPath: Bundle-Activator: Import-Package: Bundle-SymbolicName: 等等 我在相同的容器是:pax-web-service-0.6.0.jar pax-web-jsp-0.7.1.jar pax-web-extender-war-0.7.1.jar pax-logging-service-1.5.0.jar pax-logging-api-1.5.0.jar

尽管在 pax 网站上已经写到 pax-web-service 包含在 pax-war-extender 中,但似乎没有 pax-web-service 捆绑包,所有其他捆绑包都会受到影响。

我已经删除了其他 pax 捆绑包,例如 pax-web-extender-whiteboard-0.7.1.jar pax-web-jetty-0.7.1.jar,因为我没有看到它们的任何用处。

pax-web-jetty-0.7.1.jar 甚至无法启动。它具有无法从 PAX 提供的任何捆绑包中解析的依赖项。

我的浏览器显示:HTTP ERROR 403

访问 /adminmodule/ 时出现问题。原因:

禁止

由码头提供支持://


而控制台日志说:

[5884890@qtp-16567002-0 - /adminmodule/] 调试 org.mortbay.jetty - 在 org.mortbay.jetty.HttpConnection@1e94001 上请求 /adminmodule/ [5884890@qtp-16567002-0 - /adminmodule/] 调试组织。 ops4j.pax.web.service.internal.model.ServerModel - 匹配 [/adminmodule/] ... [5884890@qtp-16567002-0 - /adminmodule/] 调试 org.ops4j.pax.web.service.internal.model .ServerModel - 路径 [/adminmodule/] 匹配 {pattern=/adminmodule/.*,model=ResourceModel{id=org.ops4j.pax.web.service.internal.model.ResourceModel-2,name=,urlPatterns=[ /],alias=/,servlet=ResourceServlet{context=/adminmodule,alias=/,name=},initParams={},context=ContextModel{id=org.ops4j.pax.web.service.internal.model.ContextModel -1,name=adminmodule,httpContext=org.ops4j.pax.web.extender.war.internal.WebAppWebContainerContext@11710be,contextParams={webapp.context=adminmodule}}}} [5884890@qtp-16567002-0 - /adminmodule/] 调试 org.ops4j.pax.web.service.internal.HttpServiceContext - 使用 http 上下文 [org.ops4j 处理 [/adminmodule/] 的请求.pax.web.extender.war.internal.WebAppWebContainerContext@11710be] [5884890@qtp-16567002-0 - /adminmodule/] 调试 org.mortbay.jetty - sessionManager=org.mortbay.jetty.servlet.HashSessionManager@19c6163 [5884890 @qtp-16567002-0 - /adminmodule/] 调试 org.mortbay.jetty - session=null [5884890@qtp-16567002-0 - /adminmodule/] 调试 org.mortbay.jetty - servlet= [5884890@qtp-16567002- 0 - /adminmodule/] 调试 org.mortbay.jetty -chain=org.ops4j.pax.web.service.internal.model.FilterModel-3-> [5884890@qtp-16567002-0 - /adminmodule/] 调试组织。 mortbay.jetty - servlet holder= [5884890@qtp-16567002-0 - /adminmodule/] 调试 org.mortbay.jetty - 调用过滤器 org.ops4j.pax。web.service.internal.model.FilterModel-3 [5884890@qtp-16567002-0 - /adminmodule/] 调试 org.ops4j.pax.web.service.internal.WelcomeFilesFilter - 应用欢迎文件过滤器... [5884890@qtp -16567002-0 - /adminmodule/] 调试 org.ops4j.pax.web.service.internal.WelcomeFilesFilter - Servlet 路径:/ [5884890@qtp-16567002-0 - /adminmodule/] 调试 org.ops4j.pax.web。 service.internal.WelcomeFilesFilter - 路径信息:null [5884890@qtp-16567002-0 - /adminmodule/] INFO org.ops4j.pax.web.service.internal.HttpServiceContext - 获取资源:[/adminmodule.jsp] [5884890@ qtp-16567002-0 - /adminmodule/] 调试 org.ops4j.pax.web.extender.war.internal.WebAppWebContainerContext - 搜索捆绑包 [com.cisco.zaloni.gwt.admin [1]] 以获取资源 [/adminmodule.jsp ],标准化为 [adminmodule.jsp] [5884890@qtp-16567002-0 - /adminmodule/] DEBUG org.ops4j.pax.web.extender.war。internal.WebAppWebContainerContext - 找不到资源 [5884890@qtp-16567002-0 - /adminmodule/] 信息 org.ops4j.pax.web.service.internal.HttpServiceContext - 找到资源:空 [5884890@qtp-16567002-0 - /adminmodule /] 调试 org.mortbay.jetty - 调用 servlet [5884890@qtp-16567002-0 - /adminmodule/] 调试 org.ops4j.pax.web.extender.war.internal.WebAppWebContainerContext - 搜索包 [com.cisco.zaloni. gwt.admin [1]] 用于资源 [/],标准化为 [/] [5884890@qtp-16567002-0 - /adminmodule/] 调试 org.ops4j.pax.web.extender.war.internal.WebAppWebContainerContext - 找到资源作为 url [bundle://1.0:1/] [5884890@qtp-16567002-0 - /adminmodule/] 调试 org.mortbay.jetty - 响应 /adminmodule/ 403HttpServiceContext - 找到资源:空 [5884890@qtp-16567002-0 - /adminmodule/] 调试 org.mortbay.jetty - 调用 servlet [5884890@qtp-16567002-0 - /adminmodule/] 调试 org.ops4j.pax.web。 extender.war.internal.WebAppWebContainerContext - 为资源 [/] 搜索捆绑包 [com.cisco.zaloni.gwt.admin [1]],标准化为 [/] [5884890@qtp-16567002-0 - /adminmodule/] 调试组织.ops4j.pax.web.extender.war.internal.WebAppWebContainerContext - 资源作为 url [bundle://1.0:1/] [5884890@qtp-16567002-0 - /adminmodule/] 调试 org.mortbay.jetty - 响应/管理模块/ 403HttpServiceContext - 找到资源:空 [5884890@qtp-16567002-0 - /adminmodule/] 调试 org.mortbay.jetty - 调用 servlet [5884890@qtp-16567002-0 - /adminmodule/] 调试 org.ops4j.pax.web。 extender.war.internal.WebAppWebContainerContext - 为资源 [/] 搜索捆绑包 [com.cisco.zaloni.gwt.admin [1]],标准化为 [/] [5884890@qtp-16567002-0 - /adminmodule/] 调试组织.ops4j.pax.web.extender.war.internal.WebAppWebContainerContext - 资源作为 url [bundle://1.0:1/] [5884890@qtp-16567002-0 - /adminmodule/] 调试 org.mortbay.jetty - 响应/管理模块/ 403资源 [/] 的管理员 [1]],标准化为 [/] [5884890@qtp-16567002-0 - /adminmodule/] 调试 org.ops4j.pax.web.extender.war.internal.WebAppWebContainerContext - 资源作为 url [bundle://1.0:1/] [5884890@qtp-16567002-0 - /adminmodule/] 调试 org.mortbay.jetty - 响应 /adminmodule/ 403资源 [/] 的管理员 [1]],标准化为 [/] [5884890@qtp-16567002-0 - /adminmodule/] 调试 org.ops4j.pax.web.extender.war.internal.WebAppWebContainerContext - 资源作为 url [bundle://1.0:1/] [5884890@qtp-16567002-0 - /adminmodule/] 调试 org.mortbay.jetty - 响应 /adminmodule/ 403

这真的很令人沮丧。

请帮忙。因为我是 OSGI 的新手。

劳尔

4

1 回答 1

1

pax-web 的 pre-1.0 版本中存在各种错误,这些错误总是让我感到困惑。我建议首先更新以使用最新版本,pax-web 1.0.2 似乎是今天最新的。如果你不想那么高,我发现 0.8.1 是第一个真正开始正常工作的版本。

此外,用于部署 Web 应用程序包的 OSGi 标准需要使用您未列出的 Web-ContextPath 标头。这设置为您要从中提供内容的上下文根。

Apache Aries 项目有几个示例可能值得一看,以了解您的包与那些没有帮助的包有何不同。Apache Aries 博客示例记录在此处,可以从此处下载。

于 2011-04-27T12:16:05.650 回答