Servicemix 5.4 waiting for unsatisfied dependencies [[&transactionManager, &userTransaction] - java

I want to upgrade servicemix 4.5.2 to servicemix 5.4 I already resolve dependency issues but I come across with problem in reference to service. When my hibernate bundle is started it can't get access to services transactionManager and userTransaction.
I tested both configuration(spring and blueprint) form https://access.redhat.com/documentation/en-US/Fuse_ESB_Enterprise/7.0/html/EIP_Transactions_Guide/XaTM-Access.html but I cant get these services.
In osgi:list I see:
[102] [Active ] [ ] [ ] [ 50] Apache Aries Transaction Manager (1.0.0)
In my feature.xml in my hibernate bundle configuration I have <feature>transaction</feature>
In log file I see :
2015-06-16 15:03:58,868 | INFO | ExtenderThread-2 | OsgiBundleXmlApplicationContext | ? ? | 80 - org.apache.servicemix.bundles.spring-context - 3.2.11.RELEASE_1 | Application Context service already unpublished
2015-06-16 15:03:58,871 | INFO | ExtenderThread-2 | XmlBeanDefinitionReader | ? ? | 78 - org.apache.servicemix.bundles.spring-beans - 3.2.11.RELEASE_1 | Loading XML bean definitions from URL [bundle://230.0:0/META-INF/spring/beans.xml]
2015-06-16 15:03:58,905 | INFO | ExtenderThread-2 | DependencyServiceManager | ? ? | 123 - org.springframework.osgi.extender - 1.2.1 | Adding OSGi service dependency for importer [&transactionManager] matching OSGi filter [(objectClass=javax.transaction.TransactionManager)]
2015-06-16 15:03:58,905 | INFO | ExtenderThread-2 | DependencyServiceManager | ? ? | 123 - org.springframework.osgi.extender - 1.2.1 | Adding OSGi service dependency for importer [&userTransaction] matching OSGi filter [(objectClass=javax.transaction.UserTransaction)]
2015-06-16 15:03:58,905 | INFO | ExtenderThread-2 | DependencyServiceManager | ? ? | 123 - org.springframework.osgi.extender - 1.2.1 | OsgiBundleXmlApplicationContext(bundle=*****, config=osgibundle:/META-INF/spring/*.xml) is waiting for unsatisfied dependencies [[&transactionManager, &userTransaction]]
After timeout i get:
2015-06-16 15:08:58,911 | ERROR | Timer-1 | WaiterApplicationContextExecutor | ? ? | 123 - org.springframework.osgi.extender - 1.2.1 | Unable to create application context for [******], unsatisfied dependencies: Dependency on [(objectClass=javax.transaction.TransactionManager)] (from bean [&transactionManager]), Dependency on F[(objectClass=javax.transaction.UserTransaction)] (from bean [&userTransaction])
org.springframework.context.ApplicationContextException: Application context initialization for '*******' has timed out
at org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.timeout(DependencyWaiterApplicationContextExecutor.java:454)[123:org.springframework.osgi.extender:1.2.1]
at org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.access$000(DependencyWaiterApplicationContextExecutor.java:50)[123:org.springframework.osgi.extender:1.2.1]
at org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$WatchDogTask.run(DependencyWaiterApplicationContextExecutor.java:105)[123:org.springframework.osgi.extender:1.2.1]
at java.util.TimerThread.mainLoop(Timer.java:555)[:1.7.0_21]
at java.util.TimerThread.run(Timer.java:505)[:1.7.0_21]
2015-06-16 15:08:58,914 | ERROR | Timer-1 | ContextLoaderListener | ? ? | 123 - org.springframework.osgi.extender - 1.2.1 | Application context refresh failed (OsgiBundleXmlApplicationContext(bundle=******, config=osgibundle:/META-INF/spring/*.xml))
org.springframework.context.ApplicationContextException: Application context initialization for '*******' has timed out
at org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.timeout(DependencyWaiterApplicationContextExecutor.java:454)[123:org.springframework.osgi.extender:1.2.1]
at org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.access$000(DependencyWaiterApplicationContextExecutor.java:50)[123:org.springframework.osgi.extender:1.2.1]
at org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$WatchDogTask.run(DependencyWaiterApplicationContextExecutor.java:105)[123:org.springframework.osgi.extender:1.2.1]
at java.util.TimerThread.mainLoop(Timer.java:555)[:1.7.0_21]
at java.util.TimerThread.run(Timer.java:505)[:1.7.0_21]
And:
karaf#root> bundle-services 102
You are about to access system bundle 102. Do you wish to continue (yes/no): yes
org.apache.aries.transaction.manager provides:
----------------------------------
[org.osgi.service.cm.ManagedService]
[javax.transaction.TransactionManager, javax.transaction.TransactionSynchronizationRegistry, javax.transaction.UserTransaction, org.apache.geronimo.transaction.manager.RecoverableTransactionManager, org.springframework.transaction.PlatformTransactionManager]

Solved by modifying the future.xml file on my hibernate bundle i added 'dependency="true"'. But still this is very strange behavior...

Related

NoClassDefFoundError in OSGi although it is exported and imported

I tried to create a basic virtual reality IDE based on Karaf.
I have 3 maven-projects:
VRServer who connect to a native-component for rendering.
VR Component Toolkit for VR-HMI-Widgets (Having a VRFrame who extends from VRComponent) as a Multi-Module-Maven-Project.
The VR IDE project read/write files and execute lowlevel commands.
I installed all of them into Karaf:
karaf#root()> bundle:list
START LEVEL 100 , List Threshold: 50
ID | State | Lvl | Version | Name
----+--------+-----+--------------------+---------------------------------------------------------------------------
31 | Active | 80 | 4.3.0 | Apache Karaf :: OSGi Services :: Event
54 | Active | 80 | 1.3.2 | Apache Aries SPI Fly Dynamic Weaving Bundle
55 | Active | 80 | 9.0.0 | org.objectweb.asm
56 | Active | 80 | 9.0.0 | org.objectweb.asm.commons
57 | Active | 80 | 9.0.0 | org.objectweb.asm.tree
58 | Active | 80 | 9.0.0 | org.objectweb.asm.tree.analysis
59 | Active | 80 | 9.0.0 | org.objectweb.asm.util
60 | Active | 80 | 2.0.17 | OpenWebBeans Core
61 | Active | 80 | 2.0.17 | SPI definition
62 | Active | 80 | 1.1.3 | Apache Aries CDI - CDI Component Runtime (CCR)
63 | Active | 80 | 1.1.3 | Apache Aries CDI - SPI classes for Portable Extensions
64 | Active | 80 | 1.1.3 | Apache Aries CDI - Container using Apache OpenWebBeans
65 | Active | 80 | 1.1.3 | Apache Aries CDI - SPI
66 | Active | 80 | 1.0.12 | Apache Felix Converter
67 | Active | 80 | 1.2.0 | Apache Geronimo JSR-330 Spec 1.0
68 | Active | 80 | 1.1.0 | Apache Geronimo Expression Language Spec 2.2
69 | Active | 80 | 1.2.0 | Apache Geronimo Interceptor Spec 1.2
70 | Active | 80 | 1.2.0 | Apache Geronimo JCDI Spec 2.0
71 | Active | 80 | 1.3.0.3 | Apache ServiceMix :: Specs :: Annotation API 1.3
72 | Active | 80 | 4.17.0 | Apache XBean :: ASM shaded (repackaged)
73 | Active | 80 | 4.17.0 | Apache XBean OSGI Bundle Utilities
74 | Active | 80 | 4.17.0 | Apache XBean :: Finder shaded (repackaged)
75 | Active | 80 | 1.0.1.201505202024 | org.osgi:org.osgi.namespace.extender
76 | Active | 80 | 1.0.0.201505202024 | org.osgi:org.osgi.namespace.implementation
77 | Active | 80 | 1.0.0.201505202024 | org.osgi:org.osgi.namespace.service
78 | Active | 80 | 1.0.0.201810101357 | org.osgi:org.osgi.service.cdi
79 | Active | 80 | 1.1.0.201802012106 | org.osgi:org.osgi.util.function
80 | Active | 80 | 1.1.0.201802012106 | org.osgi:org.osgi.util.promise
81 | Active | 80 | 4.3.1.SNAPSHOT | Apache Karaf :: OSGi Services :: Event
134 | Active | 80 | 1.0.0 | Virtual reality server
135 | Active | 80 | 0.0.1.SNAPSHOT | VRComponent
136 | Active | 80 | 0.0.1.SNAPSHOT | VRFrame
142 | Active | 80 | 0.0.1.SNAPSHOT | Virtual reality integrated development environment (VRIDE)
karaf#root()>
But when I tried to start the VRIDE bundle, I get this exception:
10:00:42.193 WARN [fileinstall-C:\Program Files\apache-karaf-4.3.0/deploy] Error while creating extension
java.lang.NoClassDefFoundError: Lde/e_nexus/vr/tk/VRFrame;
at java.lang.Class.getDeclaredFields0(Native Method) ~[?:1.8.0_232]
at java.lang.Class.privateGetDeclaredFields(Class.java:2611) ~[?:1.8.0_232]
at java.lang.Class.getDeclaredFields(Class.java:1944) ~[?:1.8.0_232]
at org.apache.aries.cdi.container.internal.util.Reflection.allFields(Reflection.java:47) ~[!/:1.1.3]
at org.apache.aries.cdi.container.internal.annotated.AnnotatedTypeImpl.<init>(AnnotatedTypeImpl.java:42) ~[!/:1.1.3]
at org.apache.aries.cdi.container.internal.container.Discovery.lambda$discover$8(Discovery.java:133) ~[!/:1.1.3]
at java.util.HashMap$Values.forEach(HashMap.java:981) ~[?:1.8.0_232]
This is the Java-Class I tried to load:
package de.e_nexus.desktop.vr.ide;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import org.osgi.service.cdi.annotations.Reference;
import org.osgi.service.cdi.annotations.Service;
import de.e_nexus.vr.server.ClientKeyboardScancode;
import de.e_nexus.vr.server.VRClientHelmetAndControllerListener;
import de.e_nexus.vr.server.VRClientKeyboardListener;
import de.e_nexus.vr.server.VRServer;
import de.e_nexus.vr.server.listeners.VRClientRequestAppInfo;
import de.e_nexus.vr.server.listeners.VRClientStatusListener;
import de.e_nexus.vr.server.listeners.interaction.HelmetAndControllerInfo;
import de.e_nexus.vr.server.osgi.inter.VRServerService;
import de.e_nexus.vr.tk.VRFrame;
#ApplicationScoped
#Service
public class StartIDE implements VRClientStatusListener, VRClientRequestAppInfo, VRClientHelmetAndControllerListener, VRClientKeyboardListener {
/**
* The logger for this class.
*/
private static final Logger LOG = Logger.getLogger(StartIDE.class.getCanonicalName());
private final static Object lock = new Object();
private VRServer vrServer;
public void notifyStatus(boolean connected) {
if (!connected) {
synchronized (lock) {
lock.notify();
}
}
}
#Reference
#Inject
private VRServerService vrServerService;
private VRFrame applicationFrame;
#PostConstruct
public void initialize() {
LOG.fine("Starting VR IDE");
vrServer = vrServerService.getVRServer();
applicationFrame = new VRFrame(vrServer, "test");
LOG.info(getLatin1Title() + " started successfully!");
}
#PreDestroy
public void teardown() {
applicationFrame.remove();
LOG.info("Stoped " + getLatin1Title() + " successfully!");
vrServer = null;
}
public VRServer getVrServer() {
return vrServer;
}
#Override
public void notify(HelmetAndControllerInfo haci) {
}
#Override
public String getLatin1Title() {
return "VR IDE";
}
#Override
public void notifyKeyboardEvent(ClientKeyboardScancode[] downs, ClientKeyboardScancode[] ups, long incomingTime) {
System.out.println("me");
}
}
VRServer-Codebase
VRToolkit-Codebase
VRIDE-Codebase
EDIT:
Here is the complete stacktrace:
java.lang.NoClassDefFoundError: Lde/e_nexus/vr/tk/VRFrame;
at java.lang.Class.getDeclaredFields0(Native Method) ~[?:1.8.0_232]
at java.lang.Class.privateGetDeclaredFields(Class.java:2611) ~[?:1.8.0_232]
at java.lang.Class.getDeclaredFields(Class.java:1944) ~[?:1.8.0_232]
at org.apache.aries.cdi.container.internal.util.Reflection.allFields(Reflection.java:47) ~[!/:1.1.3]
at org.apache.aries.cdi.container.internal.annotated.AnnotatedTypeImpl.<init>(AnnotatedTypeImpl.java:42) ~[!/:1.1.3]
at org.apache.aries.cdi.container.internal.container.Discovery.lambda$discover$8(Discovery.java:133) ~[!/:1.1.3]
at java.util.HashMap$Values.forEach(HashMap.java:981) ~[?:1.8.0_232]
at org.apache.aries.cdi.container.internal.container.Discovery.discover(Discovery.java:130) ~[!/:1.1.3]
at org.apache.aries.cdi.container.internal.container.ContainerState.<init>(ContainerState.java:178) ~[!/:1.1.3]
at org.apache.aries.cdi.container.internal.Activator.doCreateExtension(Activator.java:209) [!/:1.1.3]
at org.apache.felix.utils.extender.AbstractExtender.createExtension(AbstractExtender.java:242) [!/:1.1.3]
at org.apache.felix.utils.extender.AbstractExtender.modifiedBundle(AbstractExtender.java:227) [!/:1.1.3]
at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:488) [osgi.core-7.0.0.jar:?]
at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:420) [osgi.core-7.0.0.jar:?]
at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:232) [osgi.core-7.0.0.jar:?]
at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:450) [osgi.core-7.0.0.jar:?]
at org.apache.felix.framework.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:915) [org.apache.felix.framework-6.0.3.jar:?]
at org.apache.felix.framework.EventDispatcher.fireEventImmediately(EventDispatcher.java:834) [org.apache.felix.framework-6.0.3.jar:?]
at org.apache.felix.framework.EventDispatcher.fireBundleEvent(EventDispatcher.java:516) [org.apache.felix.framework-6.0.3.jar:?]
at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4817) [org.apache.felix.framework-6.0.3.jar:?]
at org.apache.felix.framework.Felix.startBundle(Felix.java:2336) [org.apache.felix.framework-6.0.3.jar:?]
at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998) [org.apache.felix.framework-6.0.3.jar:?]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1260) [!/:3.6.8]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1233) [!/:3.6.8]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:520) [!/:3.6.8]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:365) [!/:3.6.8]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:316) [!/:3.6.8]
Caused by: java.lang.ClassNotFoundException: de.e_nexus.vr.tk.VRFrame not found by de.e-nexus.component [87]
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1597) ~[?:?]
at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79) ~[?:?]
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982) ~[?:?]
at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_232]
at org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1375) ~[?:?]
at org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1618) ~[?:?]
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1548) ~[?:?]
at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79) ~[?:?]
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982) ~[?:?]
at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_232]
... 27 more
As the Logging points-out:
Caused by: java.lang.ClassNotFoundException: de.e_nexus.vr.tk.VRFrame not found by de.e-nexus.component [87]
What means Karaf is searching the VRFrame from the component submodule, which clearly does not exist.
That makes sense since all java packages are exported, the VRFrame's package is ambiguous. I followed what özkan pakdil said and renamed the java-packages to a unique name. Since that it works like a charm.
Thanks Özkan! Your answer includes some usefull hints and the source of my problem was the ambiguous package-name.
The main problem in the project is <extensions>true</extensions> in maven-bundle-plugin. You need to have it in your pom.xml. example code
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>5.1.1</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Version>${project.version}</Bundle-Version>
<Bundle-Activator>${Bundle-Activator}</Bundle-Activator>
<Export-Package>
de.*;version=${project.version}
</Export-Package>
<Import-Package>
*
</Import-Package>
</instructions>
</configuration>
</plugin>
And packaging should be bundle like <packaging>bundle</packaging> for the OSGI bundles. You can see how package created from this command
mvn archetype:generate \
-DarchetypeGroupId=org.apache.karaf.archetypes \
-DarchetypeArtifactId=karaf-bundle-archetype \
-DarchetypeVersion=4.3.0 \
-DgroupId=io.github.ozkanpakdil \
-DartifactId=myfirstbundle \
-Dversion=1.0-SNAPSHOT \
-Dpackage=io.github.ozkanpakdil
https://karaf.apache.org/manual/latest/#_creating_bundles is explaining nicely. Other then that I highly suggest have namespaces without underscore. Instead of "e_nexus" have enexus and for <groupId>de.e-nexus</groupId> have <groupId>de.enexus</groupId>. Last but not least instead of <artifactId>vr.server</artifactId> have <artifactId>vrserver</artifactId>, I am suggesting these because OSGI is already complicated enviroenment, having simple and easy names will make easier to catch errors and maintain the code. Also it will prevent problems in case you move to another OS, you never know how these behaves between OSes.
There were some warnings related to same namespace is in different jars, I changed the code in "frame" and "component" modules accordingly. Below is the log from local, I can see that VR-Client log, I think it started working as expected.
ozkan#DESKTOP-NF90OD6 MINGW64 /c/Program Files/apache-karaf-4.3.0/bin
$ ./karaf
__ __ ____
/ //_/____ __________ _/ __/
/ ,< / __ `/ ___/ __ `/ /_
/ /| |/ /_/ / / / /_/ / __/
/_/ |_|\__,_/_/ \__,_/_/
Apache Karaf (4.3.0)
Hit '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown Karaf.
Start Osgi spiced VR Server ... [OK] #10:23 (You might get asked by the firewall if you like to allow java to communicate to other systems. In order to connect the local VR-Client you are requested to grant the communication.)
karaf#root()> bundle:list
START LEVEL 100 , List Threshold: 50
ID | State | Lvl | Version | Name
---+----------+-----+--------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------
31 | Active | 80 | 4.3.0 | Apache Karaf :: OSGi Services :: Event
55 | Active | 80 | 1.0.0 | Virtual reality server
56 | Active | 80 | 0.0.1.SNAPSHOT | VRComponent
57 | Active | 80 | 0.0.1.SNAPSHOT | VRFrame
58 | Active | 80 | 1.3.2 | Apache Aries SPI Fly Dynamic Weaving Bundle
59 | Active | 80 | 9.0.0 | org.objectweb.asm
60 | Active | 80 | 9.0.0 | org.objectweb.asm.commons
61 | Active | 80 | 9.0.0 | org.objectweb.asm.tree
62 | Active | 80 | 9.0.0 | org.objectweb.asm.tree.analysis
63 | Active | 80 | 9.0.0 | org.objectweb.asm.util
64 | Active | 80 | 2.0.17 | OpenWebBeans Core
65 | Active | 80 | 2.0.17 | SPI definition
66 | Active | 80 | 1.1.3 | Apache Aries CDI - CDI Component Runtime (CCR)
67 | Active | 80 | 1.1.3 | Apache Aries CDI - SPI classes for Portable Extensions
68 | Active | 80 | 1.1.3 | Apache Aries CDI - Container using Apache OpenWebBeans
69 | Active | 80 | 1.1.3 | Apache Aries CDI - SPI
70 | Active | 80 | 1.0.12 | Apache Felix Converter
71 | Active | 80 | 1.2.0 | Apache Geronimo JSR-330 Spec 1.0
72 | Active | 80 | 1.1.0 | Apache Geronimo Expression Language Spec 2.2
73 | Active | 80 | 1.2.0 | Apache Geronimo Interceptor Spec 1.2
74 | Active | 80 | 1.2.0 | Apache Geronimo JCDI Spec 2.0
75 | Active | 80 | 1.3.0.3 | Apache ServiceMix :: Specs :: Annotation API 1.3
76 | Active | 80 | 4.17.0 | Apache XBean :: ASM shaded (repackaged)
77 | Active | 80 | 4.17.0 | Apache XBean OSGI Bundle Utilities
78 | Active | 80 | 4.17.0 | Apache XBean :: Finder shaded (repackaged)
79 | Active | 80 | 1.0.1.201505202024 | org.osgi:org.osgi.namespace.extender
80 | Active | 80 | 1.0.0.201505202024 | org.osgi:org.osgi.namespace.implementation
81 | Active | 80 | 1.0.0.201505202024 | org.osgi:org.osgi.namespace.service
82 | Active | 80 | 1.0.0.201810101357 | org.osgi:org.osgi.service.cdi
83 | Active | 80 | 1.1.0.201802012106 | org.osgi:org.osgi.util.function
84 | Active | 80 | 1.1.0.201802012106 | org.osgi:org.osgi.util.promise
85 | Resolved | 80 | 4.3.1.SNAPSHOT | Apache Karaf :: OSGi Services :: Event
86 | Active | 80 | 0.0.1.SNAPSHOT | Virtual reality integrated development environment (VRIDE)
karaf#root()> log:display
10:23:10.508 INFO [activator-1-thread-2] Registering commands for bundle org.apache.karaf.log.core/4.3.0
10:23:10.821 INFO [activator-1-thread-2] Deployment finished. Registering FeatureDeploymentListener
10:23:10.821 INFO [activator-1-thread-2] Registering commands for bundle org.apache.karaf.features.command/4.3.0
10:23:10.828 INFO [activator-1-thread-3] Registering commands for bundle org.apache.karaf.kar.core/4.3.0
10:23:10.855 INFO [FelixStartLevel] Command registration delayed for bundle org.apache.karaf.shell.ssh/4.3.0. Missing service: [org.apache.sshd.server.SshServer]
10:23:10.871 INFO [FelixStartLevel] Registering commands for bundle org.apache.karaf.system.core/4.3.0
10:23:10.893 INFO [FelixStartLevel] Registering commands for bundle org.apache.karaf.event/4.3.0
10:23:11.089 INFO [activator-1-thread-1] Registering commands for bundle org.apache.karaf.shell.ssh/4.3.0
10:23:11.128 INFO [activator-1-thread-1] No detected/configured IoServiceFactoryFactory using Nio2ServiceFactoryFactory
10:23:12.346 INFO [activator-1-thread-1] Registering org.osgi.jmx.framework.PackageStateMBean to MBeanServer org.apache.karaf.management.internal.EventAdminMBeanServerWrapper#a766065 with name osgi.core:type=packageState,version=1.5,framework=org.apache.felix.framework,uuid=1ba06c85-21b1-4145-9726-b08a81b6cad3
10:23:12.346 INFO [activator-1-thread-1] Registering org.osgi.jmx.framework.wiring.BundleWiringStateMBean to MBeanServer org.apache.karaf.management.internal.EventAdminMBeanServerWrapper#a766065 with name osgi.core:type=wiringState,version=1.1,framework=org.apache.felix.framework,uuid=1ba06c85-21b1-4145-9726-b08a81b6cad3
10:23:12.346 INFO [activator-1-thread-1] Registering org.osgi.jmx.framework.BundleStateMBean to MBeanServer org.apache.karaf.management.internal.EventAdminMBeanServerWrapper#a766065 with name osgi.core:type=bundleState,version=1.7,framework=org.apache.felix.framework,uuid=1ba06c85-21b1-4145-9726-b08a81b6cad3
10:23:12.351 INFO [activator-1-thread-1] Registering org.osgi.jmx.framework.ServiceStateMBean to MBeanServer org.apache.karaf.management.internal.EventAdminMBeanServerWrapper#a766065 with name osgi.core:type=serviceState,version=1.7,framework=org.apache.felix.framework,uuid=1ba06c85-21b1-4145-9726-b08a81b6cad3
10:23:12.352 INFO [activator-1-thread-1] Registering org.osgi.jmx.framework.FrameworkMBean to MBeanServer org.apache.karaf.management.internal.EventAdminMBeanServerWrapper#a766065 with name osgi.core:type=framework,version=1.7,framework=org.apache.felix.framework,uuid=1ba06c85-21b1-4145-9726-b08a81b6cad3
10:23:12.353 INFO [activator-1-thread-1] Registering org.osgi.jmx.service.cm.ConfigurationAdminMBean to MBeanServer org.apache.karaf.management.internal.EventAdminMBeanServerWrapper#a766065 with name osgi.compendium:service=cm,version=1.3,framework=org.apache.felix.framework,uuid=1ba06c85-21b1-4145-9726-b08a81b6cad3
10:23:12.388 INFO [activator-1-thread-1] Unregistering org.osgi.jmx.framework.PackageStateMBean to MBeanServer org.apache.karaf.management.internal.EventAdminMBeanServerWrapper#a766065 with name osgi.core:type=packageState,version=1.5,framework=org.apache.felix.framework,uuid=1ba06c85-21b1-4145-9726-b08a81b6cad3
10:23:12.389 INFO [activator-1-thread-1] Unregistering org.osgi.jmx.framework.wiring.BundleWiringStateMBean to MBeanServer org.apache.karaf.management.internal.EventAdminMBeanServerWrapper#a766065 with name osgi.core:type=wiringState,version=1.1,framework=org.apache.felix.framework,uuid=1ba06c85-21b1-4145-9726-b08a81b6cad3
10:23:12.390 INFO [activator-1-thread-1] Unregistering org.osgi.jmx.framework.BundleStateMBean to MBeanServer org.apache.karaf.management.internal.EventAdminMBeanServerWrapper#a766065 with name osgi.core:type=bundleState,version=1.7,framework=org.apache.felix.framework,uuid=1ba06c85-21b1-4145-9726-b08a81b6cad3
10:23:12.390 INFO [activator-1-thread-1] Unregistering org.osgi.jmx.framework.ServiceStateMBean to MBeanServer org.apache.karaf.management.internal.EventAdminMBeanServerWrapper#a766065 with name osgi.core:type=serviceState,version=1.7,framework=org.apache.felix.framework,uuid=1ba06c85-21b1-4145-9726-b08a81b6cad3
10:23:12.391 INFO [activator-1-thread-1] Unregistering org.osgi.jmx.framework.FrameworkMBean to MBeanServer org.apache.karaf.management.internal.EventAdminMBeanServerWrapper#a766065 with name osgi.core:type=framework,version=1.7,framework=org.apache.felix.framework,uuid=1ba06c85-21b1-4145-9726-b08a81b6cad3
10:23:12.392 INFO [activator-1-thread-1] Unregistering org.osgi.jmx.service.cm.ConfigurationAdminMBean to MBeanServer org.apache.karaf.management.internal.EventAdminMBeanServerWrapper#a766065 with name osgi.compendium:service=cm,version=1.3,framework=org.apache.felix.framework,uuid=1ba06c85-21b1-4145-9726-b08a81b6cad3
10:23:12.394 WARN [activator-1-thread-1] Task rejected for JMX Notification dispatch of event [org.osgi.framework.ServiceEvent[source=[javax.management.MBeanServer]]] - Dispatcher may have been shutdown
10:23:12.420 INFO [activator-1-thread-1] Registering org.osgi.jmx.framework.PackageStateMBean to MBeanServer org.apache.karaf.management.internal.EventAdminMBeanServerWrapper#4a85005 with name osgi.core:type=packageState,version=1.5,framework=org.apache.felix.framework,uuid=1ba06c85-21b1-4145-9726-b08a81b6cad3
10:23:12.421 INFO [activator-1-thread-1] Registering org.osgi.jmx.framework.wiring.BundleWiringStateMBean to MBeanServer org.apache.karaf.management.internal.EventAdminMBeanServerWrapper#4a85005 with name osgi.core:type=wiringState,version=1.1,framework=org.apache.felix.framework,uuid=1ba06c85-21b1-4145-9726-b08a81b6cad3
10:23:12.422 INFO [activator-1-thread-1] Registering org.osgi.jmx.framework.BundleStateMBean to MBeanServer org.apache.karaf.management.internal.EventAdminMBeanServerWrapper#4a85005 with name osgi.core:type=bundleState,version=1.7,framework=org.apache.felix.framework,uuid=1ba06c85-21b1-4145-9726-b08a81b6cad3
10:23:12.423 INFO [activator-1-thread-1] Registering org.osgi.jmx.framework.ServiceStateMBean to MBeanServer org.apache.karaf.management.internal.EventAdminMBeanServerWrapper#4a85005 with name osgi.core:type=serviceState,version=1.7,framework=org.apache.felix.framework,uuid=1ba06c85-21b1-4145-9726-b08a81b6cad3
10:23:12.423 INFO [activator-1-thread-1] Registering org.osgi.jmx.framework.FrameworkMBean to MBeanServer org.apache.karaf.management.internal.EventAdminMBeanServerWrapper#4a85005 with name osgi.core:type=framework,version=1.7,framework=org.apache.felix.framework,uuid=1ba06c85-21b1-4145-9726-b08a81b6cad3
10:23:12.424 INFO [activator-1-thread-1] Registering org.osgi.jmx.service.cm.ConfigurationAdminMBean to MBeanServer org.apache.karaf.management.internal.EventAdminMBeanServerWrapper#4a85005 with name osgi.compendium:service=cm,version=1.3,framework=org.apache.felix.framework,uuid=1ba06c85-21b1-4145-9726-b08a81b6cad3

How to use ds in command bundle with karaf4.x?

I was trying karaf4.x with the DS(declarative service) in command bundles, but found it falied to get service via DS.
karaf.log
2017-07-10T15:01:43,163 | INFO | pipe-bundle:install -s mvn:com.gogo.sdn/opensdn-hello-cli/1.0-SNAPSHOT | CommandExtension | 38 - org.apache.karaf.shell.core - 4.1.1 | Command registration delayed for bundle com.gogo.sdn.opensdn-hello-cli/1.0.0.SNAPSHOT. Missing dependencies: [com.gogo.sdn.core.service.hello.HelloService]

Java class is not a valid argument to the jvm

I have a wrapper.conf file that contains the following (note I've omitted irrelevant entries such as .1, .2, .3, etc.):
set.default.JAVA_HOME=E:\DATA\Dev\jdk1.7.0_65
# Java Application
set.default.KARAF_BASE=E:\hsip-base-5.3.1.1b
wrapper.working.dir=%KARAF_BASE%
wrapper.java.command=java
wrapper.java.mainclass=org.apache.karaf.shell.wrapper.Main
wrapper.java.classpath.1=%KARAF_BASE%/lib/karaf-wrapper.jar
wrapper.java.classpath.2=%KARAF_HOME%/lib/karaf.jar
wrapper.java.classpath.3=%KARAF_HOME%/lib/karaf-jaas-boot.jar
wrapper.java.classpath.4=%KARAF_BASE%/lib/karaf-wrapper-main.jar
wrapper.java.library.path.1=%KARAF_BASE%/lib/
# JVM Parameters
wrapper.java.additional.4=org.apache.karaf.main.Main
On starting apache karaf I'm getting the following error:
STATUS | wrapper | 2017/01/30 14:42:52 | --> Wrapper Started as Service
WARN | wrapper | 2017/01/30 14:42:52 | The value of property 'wrapper.java.additional.4', 'org.apache.karaf.main.Main' is not a valid argument to the jvm. Skipping.
The jar file it is looking for and the class within are fine (%KARAF_BASE%/lib/karaf-wrapper-main.jar)
Is fine. A colleague had a similar problem and it was JVM related but cannot remember what.
Does anyone know where I can even start with this because it should work. I have java 8 on my machine, but I have removed all references to it and my JAVA_HOME is pointing at this version 7, don't know if that makes a difference.
Note, the actual stack traces are something like
INFO | jvm 1 | 2017/01/30 15:11:48 | ERROR: Bundle org.ops4j.pax.url.wrap [1] Error starting mvn:org.ops4j.pax.url/pax-url-wrap/1.2.8 (org.osgi.framework.BundleException: Unresolved constraint in bundle org.ops4j.pax.url.wrap [1]: Unable to resolve 1.0: missing requirement [1.0] package; (package=javax.net.ssl))
INFO | jvm 1 | 2017/01/30 15:11:48 | org.osgi.framework.BundleException: Unresolved constraint in bundle org.ops4j.pax.url.wrap [1]: Unable to resolve 1.0: missing requirement [1.0] package; (package=javax.net.ssl)
INFO | jvm 1 | 2017/01/30 15:11:48 | at org.apache.felix.framework.Felix.resolveBundle(Felix.java:3564)
INFO | jvm 1 | 2017/01/30 15:11:48 | at org.apache.felix.framework.Felix.startBundle(Felix.java:1797)
INFO | jvm 1 | 2017/01/30 15:11:48 | at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1192)
INFO | jvm 1 | 2017/01/30 15:11:48 | at org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:266)
INFO | jvm 1 | 2017/01/30 15:11:48 | at java.lang.Thread.run(Unknown Source)

Camel route with AMQP consumer runs ok in Eclipse, hangs in karaf

I am using Camel 2.17.3 and karaf 4.0.7 (also tried 4.0.1).
I have a Camel route that runs fine in Eclipse when a junit test starts it, but hangs when deployed to karaf. If I change the amqp: 'from' component to timer: the route runs fine in karaf.
My AMQP setup in the routebuilder is:
#Override
public void configure() throws Exception {
getContext().addComponent("amqp", AMQPComponent.amqpComponent(String.format("amqp://%s:%s?amqp.saslMechanisms=ANONYMOUS", AMQP_SERVICE_HOST, AMQP_SERVICE_PORT)));
Even this route will hang karaf, and run fine in Eclipse:
from("amqp:queue:myqueue").routeId("myRoute")
.log("temp")
In Karaf, when I say "hang", I observe these things:
If I try to exit karaf, it hangs - I need to kill the process.
If I try to stop the bundle, karaf hangs - I need to kill the process.
Neither camel:context-list nor camel:route-list return anything
I do not get a "route consuming from..." message in the log. This is all
the output from starting the bundle:
2016-10-08 23:46:00,593 | INFO | nsole user karaf | bundle
| 90 - org.apache.aries.spifly.dynamic.bundle - 1.0.1 | Bundle
Considered for SPI providers: mis-routes 2016-10-08 23:46:00,593 |
INFO | nsole user karaf | bundle | 90 -
org.apache.aries.spifly.dynamic.bundle - 1.0.1 | No 'SPI-Provider'
Manifest header. Skipping bundle: mis-routes 2016-10-08 23:46:05,595 |
INFO | ool-130-thread-1 | OsgiDefaultCamelContext | 56 -
org.apache.camel.camel-core - 2.17.3 | Apache Camel 2.17.3
(CamelContext: mis-routes) is starting 2016-10-08 23:46:05,599 | INFO
| ool-130-thread-1 | OsgiDefaultCamelContext | 56 -
org.apache.camel.camel-core - 2.17.3 | MDC logging is enabled on
CamelContext: mis-routes 2016-10-08 23:46:05,601 | INFO |
ool-130-thread-1 | ManagedManagementStrategy | 56 -
org.apache.camel.camel-core - 2.17.3 | JMX is enabled 2016-10-08
23:46:05,708 | INFO | ool-130-thread-1 |
DefaultRuntimeEndpointRegistry | 56 - org.apache.camel.camel-core -
2.17.3 | Runtime endpoint registry is in extended mode gathering usage statistics of all incoming and outgoing endpoints (cache limit: 1000)
2016-10-08 23:46:05,804 | INFO | ool-130-thread-1 |
OsgiDefaultCamelContext | 56 - org.apache.camel.camel-core -
2.17.3 | AllowUseOriginalMessage is enabled. If access to the original message is not needed, then its recommended to turn this option off as
it may improve performance. 2016-10-08 23:46:05,805 | INFO |
ool-130-thread-1 | OsgiDefaultCamelContext | 56 -
org.apache.camel.camel-core - 2.17.3 | StreamCaching is not in use. If
using streams then its recommended to enable stream caching. See more
details at http://camel.apache.org/stream-caching.html
Any help would be hugely appreciated. Thanks!
The reason should be related to this issue in Camel JIRA: https://issues.apache.org/jira/browse/CAMEL-10278
The main problem is proton-j 0.10 is incompatible with qpid-jms-client version 0.8. We upgraded the dependency to proton-j 0.12.0 and the fix will be available in the Camel 2.17.4 release.
For the moment you can use Camel 2.17.4-SNAPSHOT or upgrade the dependency in the Camel-Amqp Karaf feature.

Jpa-hibernate error while starting the service

Below is the error from the log that i see after starting the service... can you help resolving this issue.
2013-08-22 10:35:37,111 | DEBUG | l Console Thread | AbstractServiceReferenceRecipe | r.AbstractServiceReferenceRecipe 143 | 7 - org.apache.aries.blueprint.core - 1.1.0 | Found initial references null for OSGi service (&(&(org.apache.aries.jpa.proxy.factory=true)(osgi.unit.name=tenant))(objectClass=javax.persistence.EntityManagerFactory))
2013-08-22 10:35:37,111 | DEBUG | l Console Thread | BlueprintContainerImpl | container.BlueprintContainerImpl 280 | 7 - org.apache.aries.blueprint.core - 1.1.0 | Running blueprint container for bundle com.igt.arcus.framework.jta.arcus-framework-feature-service in state WaitForInitialReferences
2013-08-22 10:35:37,111 | INFO | l Console Thread | BlueprintContainerImpl | container.BlueprintContainerImpl 344 | 7 - org.apache.aries.blueprint.core - 1.1.0 | Bundle com.igt.arcus.framework.jta.arcus-framework-feature-service is waiting for dependencies [(&(&(org.apache.aries.jpa.proxy.factory=true)(osgi.unit.name=tenant))(objectClass=javax.persistence.EntityManagerFactory))]
2013-08-22 10:35:37,112 | DEBUG | l Console Thread | BlueprintEventDispatcher | ntainer.BlueprintEventDispatcher 136 | 7 - org.apache.aries.blueprint.core - 1.1.0 | Sending blueprint container event BlueprintEvent[type=GRACE_PERIOD, dependencies=[(&(&(org.apache.aries.jpa.proxy.factory=true)(osgi.unit.name=tenant))(objectClass=javax.persistence.EntityManagerFactory))]] for bundle com.igt.arcus.framework.jta.arcus-framework-feature-service
In case you use Aries JPA you should see two EntityManagerFactory services:
jpa-container picks up your bundle with the persistence.xml and creates an Entity manager factory
jpa-container-context picks up every EntityManagerFactory service and makes a new managed EntityManagerFactory service with the (org.apache.aries.jpa.proxy.factory=true) service property key-value pair
The second does not exist in your environment. There can be two causes:
aries-jpa-container-context is not in your OSGi environment or it is not in ACTIVE state
The original EntityManagerFactory service is not registered as some dependency is missing
You can check it if you open an OSGi console and check what services available. If there is no EntityManagerFactory service at all, the second is your problem.
Check if all of your bundles are active! If they are, check if you have all the services that jpa-container needs: TransactionManager, DataSource or DataSourceFactory and a javax.persistence.spi.PersistenceProvider service for Hibernate. If any of the services are missing aries-jpa-container will pick up your bundle but will never create the EntityManagerFactory.
I implemented an own jpa-container that works almost the same way as aries-jpa-container. If you replace the aries-jpa-container (only that one, the jpa-container-context should be left there) it will log more messages at INFO level for you what is missing. The container is available here. A sample application is available that uses hibernate is available at https://github.com/everit-org/osgi-hibernate. After running "mvn install" you will find itests/core/target/eosgi-itests-dist/equinox a subfolder where you can start the working application with on equinox server with bin/runconsole.sh.
The current aries jpa container jar 1.0.0 has a bug that makes it swallow exceptions on creating the EntityManager. A colleague of me opened the aries bug: https://issues.apache.org/jira/browse/ARIES-1160
I created a second patch that can be applied to the 1.0.0 sources to create a jar that correctly logs the exception. Check out the 1.0.0 tag of aries jpa container, apply the patch and build.
When you then run in karaf you should see the real source of the error.

Categories