Apache Karaf 3.0.3中的Jsf应用程序

时间:2015-04-13 08:42:05

标签: jsf osgi war apache-karaf

我是OSGI的新手,并试图在OSGI框架上运行jsf应用程序。为此,我正在尝试部署" .war"文件到apache karaf 3.0.3。首先,我使用

为karaf安装了war功能
  

功能:安装-v war

命令。然后,我将我的.war文件移动到"部署"卡拉夫的文件夹。我有一些依赖错误,这可以避免我的war文件处于活动状态。所以,我将必要的.jar文件移动到部署文件夹并设法使我的.war文件"活动"。但是,当我尝试通过此链接" http://localhost:8181/JavaServerFaces/hello.xhtml"来到达.xhtml页面时,我得到了#34;未找到"错误。我检查了apache的日志文件,并且有异常:

  

"抛出java.lang.ClassNotFoundException:   找不到org.apache.myfaces.webapp.StartupServletContextListener   JavaServerFaces"

尽管删除了这些行

  

  <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
     

从web.xml和重新部署.war文件,我有同样的例外。我该怎么做才能摆脱这个错误?我错过了OSGI的基本内容还是别的什么?

感谢您的建议。

1 个答案:

答案 0 :(得分:1)

请查看Pax Web示例是如何进行的。 您需要一个支持OSGi的JSF实现版本。 Pax Web已经过myfaces测试。

可以在the pax web samples找到正在运行的JSF示例应用程序 从Karaf 4和Pax Web 4开始,有一项功能可以安装所有必需的软件包。当您正在使用Karaf 3时,请查看以下列表:

<bundle>mvn:org.apache.myfaces.core/myfaces-api/${jsf-myfaces.version}</bundle>
    <bundle>mvn:org.apache.myfaces.core/myfaces-impl/${jsf-myfaces.version}</bundle>
    <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jsr250-1.0/2.0.0</bundle>
    <bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jsr303-api-1.0.0/1.8.0</bundle>
    <bundle>mvn:org.apache.geronimo.bundles/commons-discovery/0.4_1</bundle>
    <bundle>mvn:commons-beanutils/commons-beanutils/1.8.3</bundle>
    <bundle>mvn:commons-collections/commons-collections/3.2.1</bundle>
    <bundle>mvn:commons-codec/commons-codec/1.8</bundle>
    <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-digester/1.8_4</bundle>

这些是在karaf中以JSF开头所需的捆绑包。