2

war ホスティング OSGi バンドルを作成しようとしています。完全な構成で WAB バンドルをホストできるはずなのでpax-web-extender-war、そのために統合を試みます。slf4j-apiandのようないくつかの依存関係が必要slf4j-log4j12です。ここに問題があります:私は常にこの例外を受け取ります:

org.osgi.framework.BundleException: Fragment bundles can not be started.
    at org.apache.felix.framework.Felix.startBundle(Felix.java:1782)

slf4j-log4j12は実際にはフラグメント バンドルであるためです。私はフェリックスがこれに対処するべきだと思っていましたが、そうではありません。そのため、このjarをに移動しようとしましWEB-INF/libたが、osgiがバンドルとして解決できないため、配線が失敗します。

そう、

  • フラグメントバンドルはどこに置くべきですか?
  • 何らかの形で設定する必要がありますframework.propertiesか?
  • Apache Felix はフラグメント バンドルを扱うことさえできますか?

以下は、戦争の現在のレイアウトです(これは、felix http bridge サンプルに基づいていることに注意してください)

.
└── WEB-INF
    ├── bundles
    │   ├── commons-fileupload-1.2.2.jar
    │   ├── commons-io-2.4.jar
    │   ├── hello-wab-1-SNAPSHOT.war
    │   ├── org.apache.felix.http.bridge-2.2.0.jar
    │   ├── org.apache.felix.http.samples.filter-2.2.0.jar
    │   ├── org.apache.felix.webconsole-4.0.0.jar
    │   ├── pax-web-api-2.1.0.jar
    │   ├── pax-web-extender-war-2.1.0.jar
    │   ├── pax-web-spi-2.1.0.jar
    │   ├── slf4j-api-1.6.6.jar
    │   ├── slf4j-log4j12-1.6.6.jar
    │   └── wrapper-json-1-SNAPSHOT.jar
    ├── classes
    │   └── org
    │       └── apache
    │           └── felix
    │               └── http
    │                   └── samples
    │                       └── bridge
    │                           ├── FrameworkService.class
    │                           ├── ProvisionActivator.class
    │                           └── StartupListener.class
    ├── framework.properties
    ├── lib
    │   ├── org.apache.felix.framework-4.0.3.jar
    │   ├── org.apache.felix.http.proxy-2.2.0.jar
    │   ├── org.apache.felix.webconsole-4.0.0.jar
    │   ├── org.osgi.compendium-4.3.0.jar
    │   └── wrapper-json-1-SNAPSHOT.jar
    └── web.xml
4

1 に答える 1

1

バンドルに pax-logging を追加することをお勧めします。これにより、OSGi の世界でログを記録する手間が省けます。Pax ロギング

フラグメント バンドルについては、それらを通常のバンドルに追加するだけです。あなたのセットアップでは、おそらく bundles フォルダーにあると思います。これはフラグメント バンドルであるため、得られる例外は正しく、「開始可能な」バンドルではありません。それは解決され、できればホスティング バンドルに添付されるだけです。

ちなみに、Felix はフラグメントバンドルを扱うことができます :)

于 2012-11-10T08:36:29.793 に答える