我是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的基本内容还是别的什么?
感谢您的建议。
答案 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开头所需的捆绑包。