1

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.FacesServletpackage:および 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が、問題は解決しませんでした。

4

1 に答える 1

0

HttpService として使用される基礎となる Pax-Web は、これらすべての JSF を使用してクラスローダーを調整するのに苦労しています...実際には、Pax-Web での JSF に関する問題はかなりあります。単純な JSF アプリケーションは機能しますが、場合によっては、JSF が機能しません。Pax-Web チームは、これらの問題を解決するために懸命に努力しています。提供されている Pax-Web のサンプルを見ると、問題を解決する方法のヒントが得られる場合があります。

于 2012-10-19T08:41:34.040 に答える