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.
> 
> 
> 

Reply via email to