Hello everyone,
I am trying to create a feature-subsystem, using the esa-maven-plugin, as
well as a application-subsystem. The features shall provide
Pax-Cdi-Capabilities to the application running on WebSphere-Liberty
(currently 8.5.5.5).
I at least managed to deploy the feature-subsystem and I see some logging
from my internal bundles.
Unfortunately I cannot get the application resolved because the integrated
WAB-bundle specifies a Require-Capability which is necessary to use the
pax-cdi-extender.
Unable to resolve IFileAdapter wrapping file with url
wsjar:file:/C:/Development/servers/liberty-8.5.5.5/usr/servers/defaultServer/dropins/liberty-pax-cdi-demo-app-0.0.1-SNAPSHOT.esa!/liberty-pax-cdi-demo-wab-0.0.1-SNAPSHOT.jar:
missing requirement org.apache.aries.subsystem.core.archive.
RequireCapabilityRequirement: namespace=osgi.extender, attributes={},
directives={filter=(osgi.extender=pax.cdi), effective=resolve,
resolution=mandatory}, resource=IFileAdapter wrapping file with url
wsjar:file:/C:/Development/servers/liberty-8.5.5.5/usr/servers/defaultServer/dropins/liberty-pax-cdi-demo-app-0.0.1-SNAPSHOT.esa!/liberty-pax-cdi-demo-wab-0.0.1-SNAPSHOT.jar
According to the R5-Subsystem-Specification, chapter 134.2.1.6, a Scoped
Subsystem (aka application) needs to specify its required-capabilities. I
am not sure why this cannot be resolved from the subsystem-contents.
This is what I have, the complete example can be found on GitHub (
https://github.com/lostiniceland/issues/tree/master/liberty-pax-cdi ):
a feature-subsystem providing the same capabilty as its contents
Subsystem-ManifestVersion: 1
Subsystem-SymbolicName: demo.liberty-pax-cdi-subsystem
Subsystem-Version: 0.0.1.SNAPSHOT
Subsystem-Name: liberty-pax-cdi-subsystem
Subsystem-Description: OSGi-Subsystem for PAX-CDI inside Liberty
Subsystem-Content:
org.apache.logging.log4j.api;version="[2.2.0,2.2.0]";start-order:="1",
org.ops4j.pax.logging.pax-logging-service;version="[1.8.2,1.8.2]";start-order:="2",
org.ops4j.pax.logging.pax-logging-api;version="[1.8.2,1.8.2]";start-order:="3",
com.google.guava;version="[18.0.0,18.0.0]";start-order:="4",
org.apache.geronimo.specs.geronimo-atinject_1.0_spec;version="[1.0,1.0]";start-order:="5",
javax.enterprise.cdi-api;version="[1.2.0,1.2.0]";start-order:="6",
javax.interceptor-api;version="[1.2,1.2]";start-order:="7",
org.apache.xbean.bundleutils;version="[4.1.0,4.1.0]";start-order:="8",
org.apache.xbean.finder;version="[4.1.0,4.1.0]";start-order:="9",
org.objectweb.asm.all;version="[5.0.3,5.0.3]";start-order:="10",
org.apache.felix.eventadmin;version="[1.4.2,1.4.2]";start-order:="11",
org.apache.felix.configadmin;version="[1.8.2,1.8.2]";start-order:="12",
org.apache.felix.http.api;version="[2.3.2,2.3.2]";start-order:="13",
org.ops4j.base.lang;version="[1.5.0,1.5.0]";start-order:="14",
org.ops4j.pax.cdi.weld;version="[0.11.0,0.11.0]";start-order:="15",
org.jboss.weld.osgi-bundle;version="[2.2.9.Final,2.2.9.Final]";start-order:="16",
org.jboss.logging.jboss-logging;version="[3.2.1.Final,3.2.1.Final]";start-order:="17",
org.ops4j.pax.cdi.api;version="[0.11.0,0.11.0]";start-order:="18",
org.ops4j.pax.cdi.spi;version="[0.11.0,0.11.0]";start-order:="19",
org.ops4j.pax.cdi.extender;version="[0.11.0,0.11.0]";start-order:="20",
org.ops4j.pax.cdi.extension;version="[0.11.0,0.11.0]";start-order:="21",
org.ops4j.pax.swissbox.lifecycle;version="[1.8.0,1.8.0]";start-order:="22",
org.ops4j.pax.swissbox.tracker;version="[1.8.0,1.8.0]";start-order:="23",
org.ops4j.pax.swissbox.core;version="[1.8.0,1.8.0]";start-order:="24"
Provide-Capability: osgi.extender; osgi.extender=pax.cdi,
org.ops4j.pax.cdi.extension;
extension=pax-cdi-extension
Subsystem-Type: osgi.subsystem.feature
a application-subsystem requiring those capabilities
Subsystem-ManifestVersion: 1
Subsystem-SymbolicName: demo.liberty-pax-cdi-demo-app
Subsystem-Version: 0.0.1.SNAPSHOT
Subsystem-Name: liberty-pax-cdi-demo-app
Subsystem-Description: Demo-Application for Pax-CDI on Liberty
Subsystem-Content:
demo.liberty-pax-cdi-demo-wab;version="[0.0.1.SNAPSHOT,0.0.1.SNAPSHOT]"
Import-Package: javax.inject;version="1.0"
Preferred-Provider: liberty-pax-cdi-subsystem
Subsystem-Type: osgi.subsystem.application
Require-Capability: osgi.extender; filter:="(osgi.extender=pax.cdi)",
org.ops4j.pax.cdi.extension;
filter:="(extension=pax-cdi-extension)"
and a bundle inside the application requiring the same capability
Manifest-Version: 1.0
Bnd-LastModified: 1427292914886
Build-Jdk: 1.8.0_25
Built-By: u000501
Bundle-ClassPath: WEB-INF/classes
Bundle-ManifestVersion: 2
Bundle-Name: liberty-pax-cdi-demo-wab
Bundle-SymbolicName: demo.liberty-pax-cdi-demo-wab
Bundle-Version: 0.0.1.SNAPSHOT
Created-By: Apache Maven Bundle Plugin
DynamicImport-Package: *
Export-Package: test;version="0.0.1.SNAPSHOT";uses:="javax.servlet,javax
.servlet.http"
Import-Package: javax.inject,javax.servlet,javax.servlet.http
Require-Capability: osgi.extender;filter:="(osgi.extender=pax.cdi)",org.
ops4j.pax.cdi.extension;filter:="(extension=pax-cdi-extension)",osgi.ee
;filter:="(&(osgi.ee=JavaSE)(version=1.6))"
Tool: Bnd-2.3.0.201405100607
Web-ContextPath: demo
Is there anything missing? I tried many different alternatives, checked my
spelling and so on: according to the spec my application should be
correct.
Any help is appreciated.
regards
Marc