【问题标题】:Apache Karaf Deploying .War FileApache Karaf 部署 .War 文件
【发布时间】:2015-06-14 20:36:51
【问题描述】:

我的目的是在 OSGI 框架上运行一个 JSF 应用程序。因此,我正在尝试将 WAR 文件部署到 OSGi Web 应用程序的 servlet 容器,称为 PAX-WEB。我有一个在 WildFly 8.0 应用服务器上正常工作的 JSF 实现。我从这个应用程序成功地创建了 OSGi 化的 WAR 文件。当我尝试使用 Maven 将其部署到 PAX-WEB 时,会出现以下错误:

缺少要求:javax.servlet.annotation

我的应用程序的 /lib 文件夹中有这些 JAR:jsf-api-2.1.7jsf-impl-2.1.7jsp-api-2.1jstl-1.2。当我将javax.servlet-api-3.0.1.jar 添加到我的WAR 文件并重新部署它时,会出现以下错误:

javax.faces.webapp.FacesServlet 不能转换为 javax.servlet.Servlet

有了这个错误,我可以运行我的 JSF 页面,但它没有显示 JSF 标记。

【问题讨论】:

    标签: jsf osgi pax-web


    【解决方案1】:

    您在这里混合了两个问题。 一,您的框架设置缺少 servlet 类。所以在这种情况下,我建议使用 pax-web-jetty-bundle。它是一个超级捆绑包,还包含和导出 servlet 类。在这种情况下,请确保您的框架设置中没有可用的 servlet jar。顺便提一句。查看 Pax Web 本身的示例和集成测试有助于了解需要哪些库。

    您面临的第二个问题是将 servlet 类添加到战争中,这是根据 OSGi 和 servlet 规范禁止做的。

    因此,如果您对您的场景没有任何进一步的了解,您可能会更好地使用 Apache Karaf 服务器(它使用 Pax Web),因为那里已经包含所有基础架构捆绑包并且已知它们可以一起工作。

    还有一点,您可以在 ops4j 邮件列表中获得更多更好的反馈。

    【讨论】:

      猜你喜欢
      • 2019-03-15
      • 1970-01-01
      • 2014-04-19
      • 2011-09-02
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-29
      相关资源
      最近更新 更多