Hi again, Could spring-dm and spring-dm-web both be picking up the spring configuration? It's in META-INF/osgi-config.xml and looks like this:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd" xmlns:context="http://www.springframework.org/schema/context" xmlns:osgi="http://www.springframework.org/schema/osgi"> <context:annotation-config/> <bean class="data.Configuration"></bean> <!-- The JavaConfig class --> <osgi:service ref="database" auto-export="interfaces"></osgi:service> </beans> Alternatively, could the blueprint extender be picking up this bundle? Why only subsequent launches, not the first? Many thanks for any support offered, Dan. On 20 May 2014, at 16:31, Daniel McGreal wrote: > 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. > > >
