Hi Krzysztof

Did you try with 4.0.5-SNAPSHOT ?
I think commit 41fc57fdcd0697d5dad3a49a56779c310b6c629b may help.

Regards
JB

On 04/10/2016 11:39 PM, Krzysztof Sobkowiak wrote:
Hi

Some time ago Cristiano has reported a problem in ServiceMix 7. When you try to 
install Spring 4.2.3.RELEASE_1, the bundles from Spring 3.1.4 are installed as 
well (details here 
http://servicemix.396122.n5.nabble.com/Why-the-feature-spring-4-2-3-RELEASE-1-also-installs-bundles-from-Spring-version-3-1-4-td5723497.html).

This problem doesn't occur on fresh Karaf 4.0.4, but I have researched this 
problem a bit and have some findings, but I don't understand why the resolver 
installs the bundles from 3.1.4.

I could reproduce this problem on karaf 4.0.4

karaf@root()> feature:repo-add activemq 5.13.2
Adding feature url mvn:org.apache.activemq/activemq-karaf/5.13.2/xml/features
karaf@root()> feature:install  activemq-client

After installing activemq-client Spring 3.2.14.RELEASE is installed and 
correctly wired

karaf@root()> list -t 0  | grep spring
64 | Active   |  30 | 3.2.14.RELEASE_1 | Apache ServiceMix :: Bundles :: 
spring-aop
65 | Active   |  30 | 3.2.14.RELEASE_1 | Apache ServiceMix :: Bundles :: 
spring-beans
66 | Active   |  30 | 3.2.14.RELEASE_1 | Apache ServiceMix :: Bundles :: 
spring-context
67 | Active   |  30 | 3.2.14.RELEASE_1 | Apache ServiceMix :: Bundles :: 
spring-context-support
68 | Active   |  30 | 3.2.14.RELEASE_1 | Apache ServiceMix :: Bundles :: 
spring-core
69 | Active   |  30 | 3.2.14.RELEASE_1 | Apache ServiceMix :: Bundles :: 
spring-expression

karaf@root()> bundle:requirements 70
org.apache.xbean.spring [70] requires:
--------------------------------------
osgi.wiring.package; 
(&(osgi.wiring.package=org.springframework.beans)(version>=2.5.0)(!(version>=4.0.0)))
 resolved by:
    osgi.wiring.package; org.springframework.beans 3.2.14.RELEASE from 
org.apache.servicemix.bundles.spring-beans [65]
osgi.wiring.package; 
(&(osgi.wiring.package=org.springframework.beans.factory)(version>=2.5.0)(!(version>=4.0.0)))
 resolved by:
    osgi.wiring.package; org.springframework.beans.factory 3.2.14.RELEASE from 
org.apache.servicemix.bundles.spring-beans [65]
.....

karaf@root()> bundle:requirements 52
org.apache.activemq.activemq-osgi [52] requires:
------------------------------------------------
...
osgi.wiring.package; 
(&(osgi.wiring.package=org.springframework.beans)(version>=3.0.0)(!(version>=5.0.0)))
 resolved by:
    osgi.wiring.package; org.springframework.beans 3.2.14.RELEASE from 
org.apache.servicemix.bundles.spring-beans [65]
osgi.wiring.package; 
(&(osgi.wiring.package=org.springframework.beans.factory)(version>=3.0.0)(!(version>=5.0.0)))
 resolved by:
    osgi.wiring.package; org.springframework.beans.factory 3.2.14.RELEASE from 
org.apache.servicemix.bundles.spring-beans [65]
osgi.wiring.package; 
(&(osgi.wiring.package=org.springframework.beans.factory.config)(version>=3.0.0)(!(version>=5.0.0)))
 resolved by:
....

Let's install now Spring 4.2.3.RELEASE_1

karaf@root()> feature:install -v spring/4.2.3.RELEASE_1
Adding features: spring/[4.2.3.RELEASE_1,4.2.3.RELEASE_1]
Changes to perform:
   Region: root
     Bundles to install:
       
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-aop/4.2.3.RELEASE_1
       
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-beans/4.2.3.RELEASE_1
       
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context/4.2.3.RELEASE_1
       
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context-support/4.2.3.RELEASE_1
       
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-core/4.2.3.RELEASE_1
       
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-expression/4.2.3.RELEASE_1
*      mvn:org.springframework/spring-aop/3.1.4.RELEASE**
**      mvn:org.springframework/spring-asm/3.1.4.RELEASE**
**      mvn:org.springframework/spring-beans/3.1.4.RELEASE**
**      mvn:org.springframework/spring-context/3.1.4.RELEASE**
**      mvn:org.springframework/spring-context-support/3.1.4.RELEASE**
**      mvn:org.springframework/spring-core/3.1.4.RELEASE**
**      mvn:org.springframework/spring-expression/3.1.4.RELEASE*
Installing bundles:
   
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-aop/4.2.3.RELEASE_1
   
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-beans/4.2.3.RELEASE_1
   
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context/4.2.3.RELEASE_1
   
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context-support/4.2.3.RELEASE_1
   
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-core/4.2.3.RELEASE_1
   
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-expression/4.2.3.RELEASE_1
*  mvn:org.springframework/spring-aop/3.1.4.RELEASE**
**  mvn:org.springframework/spring-asm/3.1.4.RELEASE**
**  mvn:org.springframework/spring-beans/3.1.4.RELEASE**
**  mvn:org.springframework/spring-context/3.1.4.RELEASE**
**  mvn:org.springframework/spring-context-support/3.1.4.RELEASE**
**  mvn:org.springframework/spring-core/3.1.4.RELEASE**
**  mvn:org.springframework/spring-expression/3.1.4.RELEASE*
Stopping bundles:
   org.apache.xbean.spring/3.18.0
   org.apache.activemq.activemq-osgi/5.13.2
Refreshing bundles:
     org.apache.activemq.activemq-osgi/5.13.2 (Should be wired to: org.apache.servicemix.bundles.spring-core/4.2.3.RELEASE_1 (through 
[org.apache.activemq.activemq-osgi/5.13.2] osgi.wiring.package; 
filter:="(&(osgi.wiring.package=org.springframework.core.io)(version>=3.0.0)(!(version>=5.0.0)))"; 
resolution:=optional), org.apache.servicemix.bundles.spring-beans/4.2.3.RELEASE_1 (through [org.apache.activemq.activemq-osgi/5.13.2] 
osgi.wiring.package; filter:="(&(osgi.wiring.package=org.springframework.beans)(version>=3.0.0)(!(version>=5.0.0)))"; 
resolution:=optional), org.apache.servicemix.bundles.spring-context/4.2.3.RELEASE_1 (through [org.apache.activemq.activemq-osgi/5.13.2] 
osgi.wiring.package; filter:="(&(osgi.wiring.package=org.springframework.context)(version>=3.0.0)(!(version>=5.0.0)))"; 
resolution:=optional))
*    org.apache.xbean.spring/3.18.0 (Should be wired to: org.springframework.beans/3.1.4.RELEASE (through [org.apache.xbean.spring/3.18.0] 
osgi.wiring.package; filter:="(&(osgi.wiring.package=org.springframework.beans)(version>=2.5.0)(!(version>=4.0.0)))"), 
org.springframework.core/3.1.4.RELEASE (through [org.apache.xbean.spring/3.18.0] osgi.wiring.package; 
filter:="(&(osgi.wiring.package=org.springframework.core.io)(version>=2.5.0)(!(version>=4.0.0)))"), 
org.springframework.context/3.1.4.RELEASE (through [org.apache.xbean.spring/3.18.0] osgi.wiring.package; 
filter:="(&(osgi.wiring.package=org.springframework.context)(version>=2.5.0)(!(version>=4.0.0)))"))*
Starting bundles:
   org.apache.servicemix.bundles.spring-core/4.2.3.RELEASE_1
   org.springframework.asm/3.1.4.RELEASE
   org.springframework.core/3.1.4.RELEASE
   org.apache.servicemix.bundles.spring-beans/4.2.3.RELEASE_1
   org.apache.servicemix.bundles.spring-aop/4.2.3.RELEASE_1
   org.apache.servicemix.bundles.spring-expression/4.2.3.RELEASE_1
   org.apache.servicemix.bundles.spring-context/4.2.3.RELEASE_1
   org.apache.servicemix.bundles.spring-context-support/4.2.3.RELEASE_1
   org.springframework.beans/3.1.4.RELEASE
   org.springframework.aop/3.1.4.RELEASE
   org.springframework.expression/3.1.4.RELEASE
   org.springframework.context/3.1.4.RELEASE
   org.springframework.context.support/3.1.4.RELEASE
   org.apache.xbean.spring/3.18.0
   org.apache.activemq.activemq-osgi/5.13.2
Done.

activemq-osgi wires now Spring 4.2.3.RELEASE  but xbean wires Spring 
3.1.4.RELEASE

karaf@root()> bundle:requirements 70
org.apache.xbean.spring [70] requires:
--------------------------------------
osgi.wiring.package; 
(&(osgi.wiring.package=org.springframework.beans)(version>=2.5.0)(!(version>=4.0.0)))
 resolved by:
    osgi.wiring.package; org.springframework.beans 3.1.4.RELEASE from 
org.springframework.beans [84]
osgi.wiring.package; 
(&(osgi.wiring.package=org.springframework.beans.factory)(version>=2.5.0)(!(version>=4.0.0)))
 resolved by:
    osgi.wiring.package; org.springframework.beans.factory 3.1.4.RELEASE from 
org.springframework.beans [84]
....

karaf@root()> bundle:requirements 52
org.apache.activemq.activemq-osgi [52] requires:
------------------------------------------------
...
osgi.wiring.package; 
(&(osgi.wiring.package=org.springframework.beans)(version>=3.0.0)(!(version>=5.0.0)))
 resolved by:
    osgi.wiring.package; org.springframework.beans 4.2.3.RELEASE from 
org.apache.servicemix.bundles.spring-beans [77]
osgi.wiring.package; 
(&(osgi.wiring.package=org.springframework.beans.factory)(version>=3.0.0)(!(version>=5.0.0)))
 resolved by:
    osgi.wiring.package; org.springframework.beans.factory 4.2.3.RELEASE from 
org.apache.servicemix.bundles.spring-beans [77]
osgi.wiring.package; 
(&(osgi.wiring.package=org.springframework.beans.factory.config)(version>=3.0.0)(!(version>=5.0.0)))
 resolved by:
    osgi.wiring.package; org.springframework.beans.factory.config 4.2.3.RELEASE 
from org.apache.servicemix.bundles.spring-beans [77]
....

The same effect with ActiveMQ 5.14-SNAPSHOT. For comparison, the problem 
doesn't happen with ActiveMQ 5.12.x

karaf@root()> feature:repo-add activemq 5.12.3
Adding feature url mvn:org.apache.activemq/activemq-karaf/5.12.3/xml/features
karaf@root()> feature:install  activemq-client
karaf@root()> feature:install -v spring/4.2.3.RELEASE_1
Adding features: spring/[4.2.3.RELEASE_1,4.2.3.RELEASE_1]
Changes to perform:
   Region: root
     Bundles to install:
       
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-aop/4.2.3.RELEASE_1
       
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-beans/4.2.3.RELEASE_1
       
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context/4.2.3.RELEASE_1
       
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context-support/4.2.3.RELEASE_1
       
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-core/4.2.3.RELEASE_1
       
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-expression/4.2.3.RELEASE_1
Installing bundles:
   
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-aop/4.2.3.RELEASE_1
   
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-beans/4.2.3.RELEASE_1
   
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context/4.2.3.RELEASE_1
   
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context-support/4.2.3.RELEASE_1
   
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-core/4.2.3.RELEASE_1
   
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-expression/4.2.3.RELEASE_1
Starting bundles:
   org.apache.servicemix.bundles.spring-core/4.2.3.RELEASE_1
   org.apache.servicemix.bundles.spring-expression/4.2.3.RELEASE_1
   org.apache.servicemix.bundles.spring-beans/4.2.3.RELEASE_1
   org.apache.servicemix.bundles.spring-aop/4.2.3.RELEASE_1
   org.apache.servicemix.bundles.spring-context/4.2.3.RELEASE_1
   org.apache.servicemix.bundles.spring-context-support/4.2.3.RELEASE_1
Done.


So I think the problem is connected with changes in ActiveMQ 5.13.x. Indeed, 
activemq-osgi 5.13.x imports Spring with range [3,5) whereas the in 5.12.x the 
range is  [3,4]. Xbeans inports in both cases Spring in range [2.5, 4). So, 
Spring 3.2.14.RELEASE_1  (which already has been installed at the beginning) 
would be ideal candidate to be wired into the both bundles.

  1. I can understand, that ativemq-osgi re-wires the newer Spring version 
(after installation of 4.2.4.RELEASE_1) because it's ok for the version range.  
4.2.4.RELEASE_1 is good for activemq-osgi but not ok for xbeans. My question - 
why should activemq-osgi use 4.2.4.RELEASE_1 and not 3.2.14.RELEASE when 
3.2.14.RELEASE is ideal for both bundles (activemq-osgi and xbeans) and 
4.2.4.RELEASE_1 only for activeq-osgi?
  2. Assuming it's ok what happens with point 1, why the resolver resolves, 
installs and wires 3.1.4.RELEASE into xbeans when  3.2.14.RELEASE was already 
installed and is ok (even better than 3.1.4.RELEASE) for version range defined 
in xbeans?

I could miss something, bu I think, something works here odd. Could you check 
it please?

Kindly regards
Krzysztof



--
Jean-Baptiste Onofré
[email protected]
http://blog.nanthrax.net
Talend - http://www.talend.com

Reply via email to