我正在尝试创建战争托管 OSGi 包。完整的配置应该能够托管 WAB 包,现在我尝试为此进行集成pax-web-extender-war
。它需要一些依赖项,例如slf4j-api
andslf4j-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 桥示例):
.
└── 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