Jsf ApacheKaraf部署.War文件

Jsf ApacheKaraf部署.War文件,jsf,osgi,pax-web,Jsf,Osgi,Pax Web,我的目的是在OSGI框架上运行JSF应用程序。因此,我尝试将WAR文件部署到OSGi web应用程序的servlet容器中,称为PAX-web。我有一个在WildFly 8.0应用服务器上正常工作的JSF实现。我成功地从这个应用程序创建了OSGi文件。当我尝试使用Maven将其部署到PAX-WEB时,出现以下错误: 缺少需求:javax.servlet.annotation 我在应用程序的/lib文件夹中有这些JAR:jsf-api-2.1.7,jsf-impl-2.1.7,jsp-api-2.

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

缺少需求:javax.servlet.annotation

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

无法将javax.faces.webapp.FacesServlet强制转换为javax.servlet.servlet


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

这里混合了两个问题。 第一,您的框架设置缺少servlet类。因此,在这种情况下,我建议使用pax web jetty捆绑包。它是一个uber包,还包含并导出servlet类。在这种情况下,请确保框架设置中没有可用的servlet jar。顺便说一句,看看PaxWeb本身的示例和集成测试已经有助于了解需要哪些库

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

因此,在不进一步了解您的场景的情况下,您最好使用ApacheKaraf服务器(它使用PaxWeb),因为这里已经包含了所有基础架构包,并且已知它们可以协同工作

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