Hi Karaf users,
I have a Spring bundle which calls a third party library which itself calls a
native library. Because of some unfortunate yet understandable decisions of the
third party, I cannot have a @Bean created more than once.
What's happening for me is that the first load of Karaf and initialisation of
my bundles, everything works fine. But on the second load, I hit
UnsatisfiedLinkExceptions with the message that "already loaded in another
classloader".
It seems that somehow after the first successful run, my Spring configuration
is being loaded twice.
My bundles:
list -t 0
START LEVEL 100 , List Threshold: 0
ID | State | Lvl | Version | Name
------------------------------------------------------------------------------------------------------------------
0 | Active | 0 | 4.2.1 | System Bundle
1 | Active | 5 | 1.4.0 | OPS4J Base - Lang
2 | Active | 5 | 2.2.0.20130927-173417 | bndlib
3 | Active | 5 | 1.7.0 | OPS4J Pax Swissbox :: Bnd Utils
4 | Active | 5 | 1.6.0 | OPS4J Pax Url - Maven Commons
5 | Active | 5 | 1.6.0 | OPS4J Pax Url - aether:
6 | Active | 5 | 1.6.0 | OPS4J Pax Url - wrap:
7 | Active | 8 | 1.7.2 | OPS4J Pax Logging - API
8 | Active | 8 | 1.7.2 | OPS4J Pax Logging - Service
9 | Active | 10 | 3.0.1 | Apache Karaf :: Service :: Guard
10 | Active | 10 | 1.6.0 | Apache Felix Configuration Admin
Service
11 | Active | 11 | 3.2.8 | Apache Felix File Install
12 | Active | 12 | 4.1 | ASM all classes with debug info
13 | Active | 20 | 1.1.0 | Apache Aries Util
14 | Active | 20 | 1.0.0 | Apache Aries Proxy API
15 | Active | 20 | 1.0.2 | Apache Aries Proxy Service
16 | Active | 20 | 1.0.0 | Apache Aries Blueprint API
17 | Active | 20 | 1.0.3 | Apache Aries Blueprint CM
18 | Resolved | 20 | 1.0.0 | Apache Aries Blueprint Core
Compatiblity Fragment Bundle, Hosts: 19
19 | Active | 20 | 1.4.0 | Apache Aries Blueprint Core,
Fragments: 18
20 | Active | 24 | 3.0.1 | Apache Karaf :: Deployer ::
Spring
21 | Active | 24 | 3.0.1 | Apache Karaf :: Deployer ::
Blueprint
22 | Active | 24 | 3.0.1 | Apache Karaf :: Deployer :: Wrap
Non OSGi Jar
23 | Active | 25 | 3.0.1 | Apache Karaf :: Region :: Core
24 | Active | 25 | 3.0.1 | Apache Karaf :: Features :: Core
25 | Active | 26 | 3.0.1 | Apache Karaf :: Deployer ::
Features
26 | Active | 30 | 2.11.0 | JLine
27 | Active | 30 | 0.2.1 | JLEdit :: Core
28 | Active | 30 | 1.11 | jansi
29 | Active | 30 | 1.4.0 | OPS4J Base - Util - Property
30 | Active | 30 | 1.4.0 | OPS4J Base - Util - XML
31 | Active | 30 | 1.4.0 | OPS4J Base - Util - Collections
32 | Active | 30 | 1.6.0 | OPS4J Pax Url - Commons
33 | Active | 30 | 1.7.0 | OPS4J Pax Swissbox :: Property
34 | Active | 30 | 1.4.0 | OPS4J Base - Net
35 | Active | 30 | 1.4.0 | OPS4J Base - Monitors
36 | Active | 30 | 3.0.1 | Apache Karaf :: Features ::
Command
37 | Active | 30 | 3.0.1 | Apache Karaf :: Shell :: Console
38 | Active | 30 | 3.0.1 | Apache Karaf :: JAAS :: Modules
39 | Active | 30 | 3.0.1 | Apache Karaf :: JAAS :: Config
40 | Active | 30 | 3.0.1 | Apache Karaf :: JAAS :: Boot
41 | Active | 30 | 0.9.0 | Apache Mina SSHD :: Core
42 | Active | 30 | 3.0.1 | Apache Karaf :: Bundle ::
Commands
43 | Active | 30 | 3.0.1 | Apache Karaf :: Shell :: Table
44 | Active | 30 | 3.0.1 | Apache Karaf :: Bundle :: Core
45 | Active | 30 | 3.0.1 | Apache Karaf :: Shell :: Help
System
46 | Active | 30 | 3.0.1 | Apache Karaf :: System :: Core
47 | Active | 30 | 3.0.1 | Apache Karaf :: System :: Shell
Commands
48 | Active | 30 | 3.0.1 | Apache Karaf :: Shell :: Various
Commands
49 | Active | 30 | 1.0.0 | Apache Aries Quiesce API
50 | Active | 30 | 3.0.1 | Apache Karaf :: ConfigAdmin ::
Core
51 | Active | 30 | 3.0.1 | Apache Karaf :: ConfigAdmin ::
Commands
52 | Active | 30 | 0.10.0 | Apache Felix Gogo Runtime
53 | Active | 30 | 3.0.1 | Apache Karaf :: Instance :: Core
54 | Active | 30 | 3.0.1 | Apache Karaf :: Instance ::
Command
55 | Active | 30 | 3.0.1 | Apache Karaf :: JAAS :: Command
56 | Active | 30 | 3.0.1 | Apache Karaf :: Diagnostic ::
Core
57 | Active | 30 | 3.0.1 | Apache Karaf :: Diagnostic ::
Command
58 | Active | 30 | 3.0.1 | Apache Karaf :: Log :: Core
59 | Active | 30 | 3.0.1 | Apache Karaf :: Log :: Command
60 | Active | 30 | 3.0.1 | Apache Karaf :: Service :: Core
61 | Active | 30 | 3.0.1 | Apache Karaf :: Service ::
Command
62 | Active | 30 | 3.0.1 | Apache Karaf :: Package :: Core
63 | Active | 30 | 3.0.1 | Apache Karaf :: Package ::
Commands
64 | Active | 30 | 1.0.0.v20110524 | Region Digraph
65 | Active | 30 | 3.0.1 | Apache Karaf :: Region ::
Persistence
66 | Active | 30 | 3.0.1 | Apache Karaf :: Region :: Shell
Commands
67 | Active | 30 | 3.0.1 | Apache Karaf :: KAR :: Core
68 | Active | 30 | 3.0.1 | Apache Karaf :: KAR :: Command
69 | Active | 30 | 3.0.1 | Apache Karaf :: Deployer ::
Karaf Archive (.kar)
70 | Active | 30 | 2.0.7 | Apache MINA Core
71 | Active | 30 | 3.0.1 | Apache Karaf :: Shell :: SSH
72 | Active | 30 | 3.0.1 | Apache Karaf :: Management
73 | Active | 30 | 1.1.0 | Apache Aries JMX API
74 | Active | 30 | 1.1.1 | Apache Aries JMX Core
75 | Active | 30 | 1.1.0 | Apache Aries JMX Blueprint API
76 | Active | 30 | 1.1.0 | Apache Aries JMX Blueprint Core
77 | Active | 30 | 1.0.0 | Apache Aries JMX Whiteboard
78 | Active | 80 | 0.0.1.BUILD-SNAPSHOT | entity.definition
79 | Active | 80 | 0.0.1.BUILD-SNAPSHOT | couchbase-lite
80 | Active | 80 | 1.9.2 | Data mapper for Jackson JSON
processor
81 | Active | 80 | 3.7 | or.apache.poi
82 | Active | 80 | 1.1.3 | Commons Logging
83 | Failure | 80 | 0.0.1.BUILD-SNAPSHOT | data
84 | Active | 80 | 1.9.2 | Jackson JSON processor
85 | Active | 80 | 1.3 | commons-codec
86 | Active | 80 | 0.0.1.BUILD-SNAPSHOT | stockcheck.definition
87 | Active | 80 | 0.0.1.BUILD-SNAPSHOT | sweelee.web
88 | Active | 80 | 2.4.0 | XMLBeans Development Kit
89 | Active | 80 | 0.0.0 | vaadin.xml
90 | Active | 80 | 0.0.1.BUILD-SNAPSHOT | import.definition
91 | Active | 80 | 1.6.1 | dom4j DOM Processor
92 | Active | 30 | 2.2.0 | Apache ServiceMix :: Specs ::
Activation API 1.4
93 | Active | 30 | 1.0 | Servlet 3.0
94 | Active | 30 | 1.4.4 | JavaMail API (compat)
95 | Active | 30 | 1.1.1 | geronimo-jta_1.1_spec
96 | Active | 30 | 1.0.1 | Annotation 1.1
97 | Active | 30 | 1.1 | Java Authentication SPI for
Containers
98 | Active | 30 | 8.1.14.v20131031 | Jetty :: Aggregate :: All Server
99 | Active | 30 | 1.6.0 | OPS4J Pax Swissbox :: OSGi Core
100 | Active | 30 | 1.6.0 | OPS4J Pax Swissbox :: Optional
JCL
101 | Active | 20 | 3.16.0 | Apache XBean OSGI Bundle
Utilities
102 | Active | 20 | 3.16.0 | Apache XBean :: ASM 4 shaded
(repackaged)
103 | Active | 20 | 3.16 | Apache XBean :: Reflect
104 | Active | 20 | 3.16.0 | Apache XBean :: Finder shaded
(repackaged)
105 | Active | 30 | 3.1.0 | OPS4J Pax Web - API
106 | Active | 30 | 3.1.0 | OPS4J Pax Web - Service SPI
107 | Active | 30 | 3.1.0 | OPS4J Pax Web - Runtime
108 | Active | 30 | 3.1.0 | OPS4J Pax Web - Jetty
109 | Active | 30 | 3.0.1 | Apache Karaf :: HTTP :: Core
110 | Active | 30 | 3.0.1 | Apache Karaf :: HTTP :: Commands
111 | Active | 30 | 3.1.0 | OPS4J Pax Web - Jsp Support
112 | Active | 30 | 3.1.0 | OPS4J Pax Web - Extender -
Whiteboard
113 | Active | 30 | 3.1.0 | OPS4J Pax Web - Extender - WAR
114 | Active | 30 | 3.1.0 | OPS4J Pax Web - FileInstall
Deployer
115 | Active | 30 | 1.4.2 | OPS4J Pax Url - war
116 | Active | 30 | 1.4.2 | OPS4J Pax Url - Commons
117 | Active | 30 | 1.6.0 | OPS4J Pax Swissbox :: Bnd Utils
118 | Active | 30 | 1.6.0 | OPS4J Pax Swissbox :: Property
119 | Active | 30 | 1.43.0 | aQute Bundle Tool Library
120 | Active | 30 | 3.0.1 | Apache Karaf :: Web :: Core
121 | Active | 30 | 3.0.1 | Apache Karaf :: Web :: Commands
122 | Active | 80 | 7.1.15 | vaadin-server
123 | Active | 80 | 7.1.15 | vaadin-client-compiled
124 | Active | 80 | 7.1.15 | vaadin-shared
125 | Active | 80 | 1.0.2 | vaadin-shared-deps
126 | Active | 80 | 7.1.15 | vaadin-themes
127 | Active | 80 | 1.6.3 | jsoup
128 | Active | 30 | 1.0.0.6 | Apache ServiceMix :: Bundles ::
aopalliance
129 | Active | 30 | 3.2.4.RELEASE | Spring Core
130 | Active | 30 | 3.2.4.RELEASE | Spring Expression Language
131 | Active | 30 | 3.2.4.RELEASE | Spring Beans
132 | Active | 30 | 3.2.4.RELEASE | Spring AOP
133 | Active | 30 | 3.2.4.RELEASE | Spring Context
134 | Active | 30 | 3.2.4.RELEASE | Spring Context Support
135 | Active | 30 | 3.0.0.1 | Apache ServiceMix :: Bundles ::
cglib
136 | Active | 30 | 1.2.1 | spring-osgi-io
137 | Active | 30 | 1.2.1 | spring-osgi-core
138 | Active | 30 | 1.2.1 | spring-osgi-extender
139 | Active | 30 | 1.2.1 | spring-osgi-annotation
140 | Active | 30 | 3.0.1 | Apache Karaf :: Bundle ::
SpringStateService
141 | Active | 30 | 3.2.4.RELEASE | Spring Web
142 | Active | 30 | 3.2.4.RELEASE | Spring Web Servlet
143 | Active | 30 | 1.2.1 | spring-osgi-web
The spring application is #83 (enigmatically called "data") and has a Spring-DM
configuration file which just creates a JavaConfig bean, one of which is being
instantiated twice. I put some logging into this bean definition:
System.out.println("Making a database from: "+
Thread.currentThread().getContextClassLoader());
On the second load of Karaf, this line appears twice with "Making a database
from: BundleDelegatingClassLoader for [null (data)]" for both outputs, the
second of which throws the UnsatisfiedLinkException and fails to load the
bundle. If I stop and start the bundle again, the same thing happens. If I rm
-rf data and re-run Karaf the application works fine after installing the
necessary features.
Any suggestions?
Best, Dan.