Я пытаюсь создать пакеты OSGi для военного хостинга. Полная конфигурация должна поддерживать пакеты WAB, и теперь я пытаюсь интегрировать pax-web-extender-war
для этого. Для этого требуются некоторые зависимости, такие как slf4j-api
и slf4j-log4j12
, и вот проблема: я всегда получаю это исключение:
org.osgi.framework.BundleException: Fragment bundles can not be started.
at org.apache.felix.framework.Felix.startBundle(Felix.java:1782)
потому что slf4j-log4j12
на самом деле является набором фрагментов. Я предполагал, что Феликс должен справиться с этим, но это не так. Итак, я попытался переместить эту банку в WEB-INF/lib
, но затем проводка не удалась, поскольку osgi не может разрешить ее как пакет.
So,
- Где размещать пакеты фрагментов?
- Это должно быть как-то настроено в
framework.properties
? - способен ли Apache Felix работать с пакетами фрагментов?
Ниже приведена текущая структура войны (обратите внимание, что она основана на образце http-моста Felix):
.
└── 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