ServiceMix にデプロイできるように、JSF 2.0 プロジェクトを変換する必要があります。MANIFEST.MF に何をインポートし、展開前に ServiceMix に何をインストールする必要がありますか?
最初、私の Web サービスは javax.faces.webapp.FacesServlet クラスを見つけることができませんでした。MANIFEST.MF のインポートに追加した後、ServiceMix はインストールされたバンドルを次のエラーで実行できません:
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
package:および JSF 2.0 が機能するために必要なその他のパッケージをインストールするにはどうすればよいですか? 私の Web サービスでは、EclipseLink (JPA 2.0)、MySQL JDBC コネクタ、および Hibernate も使用しています。GlassFish v3 で問題なく動作します。
どのように進めればよいかアドバイスをお願いします。私はたくさん検索しましたが、解決策を見つけることができませんでした。
更新: テスト フェイスレットを servicemix にデプロイしましたが、さらに問題が発生しました。サービス ミックスでは、必要なライブラリをロードするために次のコマンドを発行しました。
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>
これで、単純な facelets を表示できます。エンティティを介した永続性を備えたページを読み込めません。次のエラーがあります。
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]
これを修正する方法について何か考えはありますか? 私が追加しました:
<listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>
にしましたweb.xml
が、問題は解決しませんでした。