首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在.WAR上部署JSF2.0.WAR

如何在.WAR上部署JSF2.0.WAR
EN

Stack Overflow用户
提问于 2012-08-24 10:11:53
回答 1查看 1K关注 0票数 1

我需要转换JSF2.0项目,以便将其部署到ServiceMix上。在部署之前,应该在MANIFEST.MF中导入什么,以及应该在ServiceMix上安装什么?

起初,我的webservice找不到javax.faces.webapp.FacesServlet类。在我将它添加到MANIFEST.MF中导入之后,ServiceMix无法运行已安装的包并出现错误:

代码语言:javascript
复制
org.osgi.framework.BundleException: Unresolved constraint in bundle avita [157]: Unable to resolve 157.0: missing requirement [157.0] package; (package=javax.faces.webapp.FacesServlet)

如何安装软件包:javax.faces.webapp.FacesServlet和JSF2.0所需的任何其他软件包?在我的web服务中,我还使用了EclipseLink (JPA2.0)、MySQL JDBC连接器和Hibernate。它在GlassFish v3上运行良好。

请告诉我该怎么做。我找了很多遍,却找不到解决办法。

更新:我已经将我的测试facelet部署到servicemix中,有了进一步的问题。在服务组合中,我发布了以下凸轮来加载所需的库:

代码语言:javascript
复制
install mvn:org.apache.myfaces.core/myfaces-api/1.2.9<br>
install mvn:org.apache.myfaces.core/myfaces-impl/1.2.9<br>
install mvn:commons-beanutils/commons-beanutils/1.8.3<br>
install mvn:commons-collections/commons-collections/3.2.1<br>
install mvn:commons-codec/commons-codec/1.4<br>
install mvn:org.apache.commons/com.springsource.org.apache.commons.digester/1.8.0<br>
install mvn:org.apache.commons/com.springsource.org.apache.commons.discovery/0.4.0<br>

现在我可以看到简单的小脸谱了。我无法通过实体加载任何具有持久性的页面。我有以下错误:

代码语言:javascript
复制
2012-08-27 11:39:11,180 | WARN  | mix-4.4.2/deploy | /avitaTest                       | ?                                   ? | 108 - org.eclipse.jetty.util - 7.4.5.v20110725 | unavailable
java.lang.IllegalStateException: No Factories configured for this Application. This happens if the faces-initialization does not work at all - make sure that you properly include all configuration settings necessary for a basic faces application and that all the necessary libs are included. Also check the logging output of your web application and your container for any exceptions!
If you did that and find nothing, the mistake might be due to the fact that you use some special web-containers which do not support registering context-listeners via TLD files and a context listener is not setup in your web.xml.
A typical config looks like this;
<listener>
  <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>

    at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:106)[157:org.apache.myfaces.core.api:1.2.9]
    at javax.faces.webapp.FacesServlet.init(FacesServlet.java:137)[157:org.apache.myfaces.core.api:1.2.9]
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:436)[97:org.eclipse.jetty.servlet:7.4.5.v20110725]
    at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:260)[97:org.eclipse.jetty.servlet:7.4.5.v20110725]
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58)[108:org.eclipse.jetty.util:7.4.5.v20110725]
    at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:765)[97:org.eclipse.jetty.servlet:7.4.5.v20110725]
    at org.eclipse.jetty.servlet.ServletHandler.updateMappings(ServletHandler.java:1215)[97:org.eclipse.jetty.servlet:7.4.5.v20110725]
    at org.eclipse.jetty.servlet.ServletHandler.setServletMappings(ServletHandler.java:1273)[97:org.eclipse.jetty.servlet:7.4.5.v20110725]
    at org.eclipse.jetty.servlet.ServletHandler.addServletMapping(ServletHandler.java:873)[97:org.eclipse.jetty.servlet:7.4.5.v20110725]
    at org.ops4j.pax.web.service.jetty.internal.JettyServerImpl$1.call(JettyServerImpl.java:158)[111:org.ops4j.pax.web.pax-web-jetty:1.0.7]
    at org.ops4j.pax.web.service.jetty.internal.JettyServerImpl$1.call(JettyServerImpl.java:154)[111:org.ops4j.pax.web.pax-web-jetty:1.0.7]
    at org.ops4j.pax.swissbox.core.ContextClassLoaderUtils.doWithClassLoader(ContextClassLoaderUtils.java:60)[111:org.ops4j.pax.web.pax-web-jetty:1.0.7]
    at org.ops4j.pax.web.service.jetty.internal.JettyServerImpl.addServlet(JettyServerImpl.java:153)[111:org.ops4j.pax.web.pax-web-jetty:1.0.7]
    at org.ops4j.pax.web.service.jetty.internal.ServerControllerImpl$Started.addServlet(ServerControllerImpl.java:266)[111:org.ops4j.pax.web.pax-web-jetty:1.0.7]
    at org.ops4j.pax.web.service.jetty.internal.ServerControllerImpl.addServlet(ServerControllerImpl.java:107)[111:org.ops4j.pax.web.pax-web-jetty:1.0.7]
    at org.ops4j.pax.web.service.internal.HttpServiceStarted.registerServlet(HttpServiceStarted.java:248)[113:org.ops4j.pax.web.pax-web-runtime:1.0.7]
    at org.ops4j.pax.web.service.internal.HttpServiceStarted.registerServlet(HttpServiceStarted.java:219)[113:org.ops4j.pax.web.pax-web-runtime:1.0.7]
    at org.ops4j.pax.web.service.internal.HttpServiceProxy.registerServlet(HttpServiceProxy.java:100)[113:org.ops4j.pax.web.pax-web-runtime:1.0.7]
    at org.ops4j.pax.web.extender.war.internal.RegisterWebAppVisitorWC.visit(RegisterWebAppVisitorWC.java:206)[122:org.ops4j.pax.web.pax-web-extender-war:1.0.7]
    at org.ops4j.pax.web.extender.war.internal.model.WebApp.accept(WebApp.java:583)[122:org.ops4j.pax.web.pax-web-extender-war:1.0.7]
    at org.ops4j.pax.web.extender.war.internal.WebAppPublisher$HttpServiceListener.register(WebAppPublisher.java:170)[122:org.ops4j.pax.web.pax-web-extender-war:1.0.7]
    at org.ops4j.pax.web.extender.war.internal.WebAppPublisher$HttpServiceListener.serviceChanged(WebAppPublisher.java:155)[122:org.ops4j.pax.web.pax-web-extender-war:1.0.7]
    at org.ops4j.pax.web.extender.war.internal.WebAppPublisher$HttpServiceListener.serviceChanged(WebAppPublisher.java:119)[122:org.ops4j.pax.web.pax-web-extender-war:1.0.7]
    at org.ops4j.pax.swissbox.tracker.ReplaceableService.setService(ReplaceableService.java:114)[122:org.ops4j.pax.web.pax-web-extender-war:1.0.7]
    at org.ops4j.pax.swissbox.tracker.ReplaceableService.access$100(ReplaceableService.java:28)[122:org.ops4j.pax.web.pax-web-extender-war:1.0.7]
    at org.ops4j.pax.swissbox.tracker.ReplaceableService$CollectionListener.serviceAdded(ReplaceableService.java:183)[122:org.ops4j.pax.web.pax-web-extender-war:1.0.7]
    at org.ops4j.pax.swissbox.tracker.ServiceCollection$Tracker.addingService(ServiceCollection.java:181)[122:org.ops4j.pax.web.pax-web-extender-war:1.0.7]
    at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:896)[karaf.jar:2.2.4]
    at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:261)[karaf.jar:2.2.4]
    at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184)[karaf.jar:2.2.4]
    at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:339)[karaf.jar:2.2.4]
    at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:273)[karaf.jar:2.2.4]
    at org.ops4j.pax.swissbox.tracker.ServiceCollection.onStart(ServiceCollection.java:139)[122:org.ops4j.pax.web.pax-web-extender-war:1.0.7]
    at org.ops4j.pax.swissbox.lifecycle.AbstractLifecycle$Stopped.start(AbstractLifecycle.java:121)[122:org.ops4j.pax.web.pax-web-extender-war:1.0.7]
    at org.ops4j.pax.swissbox.lifecycle.AbstractLifecycle.start(AbstractLifecycle.java:49)[122:org.ops4j.pax.web.pax-web-extender-war:1.0.7]
    at org.ops4j.pax.swissbox.tracker.ReplaceableService.onStart(ReplaceableService.java:146)[122:org.ops4j.pax.web.pax-web-extender-war:1.0.7]
    at org.ops4j.pax.swissbox.lifecycle.AbstractLifecycle$Stopped.start(AbstractLifecycle.java:121)[122:org.ops4j.pax.web.pax-web-extender-war:1.0.7]
    at org.ops4j.pax.swissbox.lifecycle.AbstractLifecycle.start(AbstractLifecycle.java:49)[122:org.ops4j.pax.web.pax-web-extender-war:1.0.7]
    at org.ops4j.pax.web.extender.war.internal.WebAppPublisher.publish(WebAppPublisher.java:81)[122:org.ops4j.pax.web.pax-web-extender-war:1.0.7]
    at org.ops4j.pax.web.extender.war.internal.WebXmlObserver.doPublish(WebXmlObserver.java:304)[122:org.ops4j.pax.web.pax-web-extender-war:1.0.7]
    at org.ops4j.pax.web.extender.war.internal.WebXmlObserver.addingEntries(WebXmlObserver.java:153)[122:org.ops4j.pax.web.pax-web-extender-war:1.0.7]
    at org.ops4j.pax.swissbox.extender.BundleWatcher.register(BundleWatcher.java:186)[122:org.ops4j.pax.web.pax-web-extender-war:1.0.7]
    at org.ops4j.pax.swissbox.extender.BundleWatcher.access$000(BundleWatcher.java:45)[122:org.ops4j.pax.web.pax-web-extender-war:1.0.7]
    at org.ops4j.pax.swissbox.extender.BundleWatcher$1.bundleChanged(BundleWatcher.java:127)[122:org.ops4j.pax.web.pax-web-extender-war:1.0.7]
    at org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:807)[org.apache.felix.framework-3.0.9.jar:]
    at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:729)[org.apache.felix.framework-3.0.9.jar:]
    at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:610)[org.apache.felix.framework-3.0.9.jar:]
    at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:3761)[org.apache.felix.framework-3.0.9.jar:]
    at org.apache.felix.framework.Felix.startBundle(Felix.java:1787)[org.apache.felix.framework-3.0.9.jar:]
    at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:918)[org.apache.felix.framework-3.0.9.jar:]
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:1175)[7:org.apache.felix.fileinstall:3.1.10]
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:1153)[7:org.apache.felix.fileinstall:3.1.10]
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.processAllBundles(DirectoryWatcher.java:1146)[7:org.apache.felix.fileinstall:3.1.10]
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:456)[7:org.apache.felix.fileinstall:3.1.10]
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:263)[7:org.apache.felix.fileinstall:3.1.10]

知道怎么解决这个问题吗?我补充说:

代码语言:javascript
复制
<listener>
  <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>

但是它并没有解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2012-10-19 08:41:34

底层Pax作为HttpService,确实很难使类加载器与所有那些JSF的东西.实际上,Pax上的JSF存在很多问题,简单的JSF应用程序确实可以工作,但在某些情况下JSF不起作用。Pax-Web团队正在努力解决这些问题。看看Pax提供的样本,可能会给您一个如何解决问题的提示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12107372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档