Apache Karaf部署.War文件

时间:2015-04-09 12:58:45

标签: jsf osgi pax-web

我的目的是在OSGI Framework上运行JSF应用程序。所以,我正在尝试将WAR文件部署到OSGi Web应用程序的servlet容器,称为PAX-WEB。我在WildFly 8.0应用服务器上有一个正常工作的JSF实现。我成功地从这个应用程序创建了OSGi-ified 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标记。

1 个答案:

答案 0 :(得分:1)

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

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

因此,如果不了解您的场景,您可能会更好地使用Apache Karaf服务器(它使用Pax Web),因为所有基础架构捆绑包已经包含在内并且已知可以协同工作。

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