Hi,

to avoid such problem, you can use and prepare the boot features. I will
avoid some refresh and stick a init state.

IMHO, it should help.

Regards
JB

On 12/10/2018 17:05, Miroslav Beranič wrote:
> Hi all,
> 
> not quite done yet.
> 
> So new day, new problems. After another round of try/error -- it worked,
> and did not work next day.
> 
> Even "one xml deploy" bundle was not working. Now, I am more focused
> into the CXF project.
> 
> I am quite sure, this "works today, does not work tomorrow" is due to
> bundle deploy order. I've found out, that there are multiple Xerces
> instances flying around. I had one, for some legacy SOAP client
> generated from WSDL using Axis 1.4.
> 
> It had Xerces, after a lot of redeploys I've figured out that when
> Xerces bundle is deployed Karaf is not able to resolve/deploy bundle
> with Spring XML configuration.
> 
> I am getting
> "org.osgi.service.blueprint.container.ComponentDefinitionException:
> Unsupported node namespace:" ( notice empty namespace ). When I do
> uninstall of the Xerces bundle -- and restart Spring XML configuration
> bundle, it works. Repeat Xerces bundle install, Spring XML configuration
> bundle fails to load.
> 
> When cxf feature is installed bundle:
> 313 │ Active   │  30 │ 2.11.0.1                           │
> org.apache.servicemix.bundles.xerces
> is installed. I've exported bundles for the feature cxf and JAR file
> name is: org.apache.servicemix.bundles.xerces-2.11.0_1.jar
> 
> This is also in line with my first voodoo , when I was asking if it is
> possible that some dependency makes a mess. I would say, this is the
> "main problem".
> 
> Other issue was with ActiveMQ and Camel, and "class cast exceptions" for
> Spring's classes, also some nice pitfalls there ( all solved with
> correct bundle deploy order ).
> 
> What I've notices is - order of the feature/bundle loading is the key
> and it is not easy. One "innocent" dependency and whole tree of
> un-wanted bundles is put into the Karaf.
> 
> 
> I would really really like to know, am I doing so much something extra
> and no one else has this issues? As all I am doing is loading bundle
> with spring xml configuration and SOAP server ( with CXF ) and all stops
> working. It is hard to believe this is "only my problem".
> 
> The more likely thing is : I am doing all wrong. Also if this is true, I
> would really like to know what? How can it be, that if I load Apache CXF
> feature and in another bundle Spring XML Configuration, one "overrides"
> XML/XSD namespace resolution. To me this is interesting as I would
> really like to know, how is this connected and how this is even possible.
> 
> 
> So today's finding is: If you have errors like: No URL is defined for
> schema http://www.springframework.org/schema/osgi,
> org.osgi.service.blueprint.container.ComponentDefinitionException:
> Unsupported node namespace:, go and check if you have Xerces bundle
> installed. If so, try to uninstall it and restart failed bundle. My
> guess is - it will start to work. But what now. How to replace Xerces -
> it is like part of every web/xml related project. I have no answer for this.
> 
> I've checked CXF source code, and noticed that Spring bundles and
> versions are not in sync ( version part of the Karaf - referencing CXF
> Karaf repository ) ... so I would suspect this will be another land mine
> I will blindly step on.
> 
> But
> 
> when things are working, when Karaf is able to load ( over Aries )
> bundle with Spring XML configuration -- it works really well and it is
> really easy to make it work. That is one of the biggest frustration, as
> it is such a nice platform, but one wrong JAR and all stops working ...
> 
> 
> Kind Regards,
> Miroslav
> 
> 
> 
> V V čet., 11. okt. 2018 ob 12:52 je oseba Miroslav Beranič
> <[email protected] <mailto:[email protected]>> napisala:
> 
>     Hi all,
> 
>     I found a solution.
> 
>     To repeat/clarify first:
>     - I am using Karaf 4.2.2
>     - I am using "as much as I can" "built in" features
>     - I am using Spring 4.3 ( features from Karaf's spring-legacy
>     repository/features )
>     - I am using Karaf's feature "aries-blueprint-spring" to get "Spring
>     Framework XSD namespace" support (
>     http://www.springframework.org/schema/osgi ), part of the Aries
>     project, file located at
>     
> /aries/blueprint/blueprint-spring-extender/src/main/resources/org.apache.aries.blueprint.spring.extender/spring-osgi-1.2.xsd,
>     because of the implementation
>     org.apache.aries.blueprint.spring.extender.SpringOsgiNamespaceHandler,
>     one can reference XSD file as spring-osgi.xsd ( it is "renamed" to
>     spring-osgi-1.2.xsd ).
>     - I am using bundle from ServiceMix Bundles
>     
> org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-beans/4.3.18
>     to get Spring Framework 4.3 XSD files, one can also use
>     http://www.springframework.org/schema/beans/spring-beans.xsd and
>     will get
>     http://www.springframework.org/schema/beans/spring-beans-4.3.xsd (
>     if bundle version 4.3 is the only one installed , it is in my  case ).
>     - I am not using spring-dm feature from Karaf's repository
> 
>     Here, the fun part starts. As I said, it was all working ( one day )
>     and than next day ( when installed on new virtual dev box ) it
>     stopped working throwing errors like:
> 
>     11:09:19.614 ERROR [pool-20-thread-1] Unable to start blueprint
>     container for bundle framework.service/5.0.1.SNAPSHOT
>     java.lang.RuntimeException:
>     org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
>     Configuration problem: Failed to import bean definitions from URL
>     location [bundle://90.0:0/META-INF/spring/mm-context.xml]
>     Offending resource: URL
>     
> [file:/path/to/karaf-4.2.2/data/tmp/blueprint-spring-extender1091125880178019981.xml];
>     nested exception is
>     org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
>     Configuration problem: Failed to import bean definitions from URL
>     location [classpath:/META-INF/mm/spring/mm-dl-management-beans.xml]
>     Offending resource: URL
>     [bundle://90.0:0/META-INF/spring/mm-context.xml]; nested exception
>     is
>     org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
>     Configuration problem: Unable to locate Spring NamespaceHandler for
>     XML schema namespace [http://www.springframework.org/schema/osgi]
>     Offending resource: class path resource
>     [META-INF/mm/spring/mm-dl-management-beans.xml]
> 
>         at
>     
> org.apache.aries.blueprint.spring.BlueprintNamespaceHandler.parse(BlueprintNamespaceHandler.java:132)
>     ~[?:?]
>         at
>     
> org.apache.aries.blueprint.parser.Parser.parseCustomElement(Parser.java:1369)
>     ~[47:org.apache.aries.blueprint.core:1.9.0]
>         at
>     org.apache.aries.blueprint.parser.Parser.loadComponents(Parser.java:427)
>     ~[47:org.apache.aries.blueprint.core:1.9.0]
>         at
>     org.apache.aries.blueprint.parser.Parser.populate(Parser.java:331)
>     ~[47:org.apache.aries.blueprint.core:1.9.0]
>         at
>     
> org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:351)
>     [47:org.apache.aries.blueprint.core:1.9.0]
>         at
>     
> org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:278)
>     [47:org.apache.aries.blueprint.core:1.9.0]
>         at
>     
> org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:299)
>     [47:org.apache.aries.blueprint.core:1.9.0]
>         at
>     
> org.apache.aries.blueprint.container.BlueprintExtender.access$1100(BlueprintExtender.java:68)
>     [47:org.apache.aries.blueprint.core:1.9.0]
>         at
>     
> org.apache.aries.blueprint.container.BlueprintExtender$BlueprintContainerServiceImpl.createContainer(BlueprintExtender.java:617)
>     [47:org.apache.aries.blueprint.core:1.9.0]
>         at
>     
> org.apache.aries.blueprint.spring.extender.SpringOsgiExtension.start(SpringOsgiExtension.java:112)
>     [49:org.apache.aries.blueprint.spring.extender:0.4.0]
>         at
>     
> org.apache.felix.utils.extender.AbstractExtender$1.run(AbstractExtender.java:265)
>     [49:org.apache.aries.blueprint.spring.extender:0.
> 
> 
>     And even some times I got even more strange error:
> 
>     12:13:12.969 ERROR [Blueprint Extender: 1] Unable to start blueprint
>     container for bundle framework.service/5.0.1.SNAPSHOT
>     org.osgi.service.blueprint.container.ComponentDefinitionException:
>     Unsupported node namespace:
>         at
>     
> org.apache.aries.blueprint.parser.Parser.getNamespaceHandler(Parser.java:1386)
>     ~[111:org.apache.aries.blueprint.core:1.9.0]
>         at
>     
> org.apache.aries.blueprint.parser.Parser.getNamespaceHandler(Parser.java:1374)
>     ~[111:org.apache.aries.blueprint.core:1.9.0]
>         at
>     
> org.apache.aries.blueprint.parser.Parser.decorateCustomNode(Parser.java:1361)
>     ~[111:org.apache.aries.blueprint.core:1.9.0]
>         at
>     
> org.apache.aries.blueprint.parser.Parser.handleCustomAttributes(Parser.java:1340)
>     ~[111:org.apache.aries.blueprint.core:1.9.0]
>         at
>     org.apache.aries.blueprint.parser.Parser.loadComponents(Parser.java:403)
>     ~[111:org.apache.aries.blueprint.core:1.9.0]
>         at
>     org.apache.aries.blueprint.parser.Parser.populate(Parser.java:331)
>     ~[111:org.apache.aries.blueprint.core:1.9.0]
>         at
>     
> org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:351)
>     [111:org.apache.aries.blueprint.core:1.9.0]
>         at
>     
> org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:278)
>     [111:org.apache.aries.blueprint.core:1.9.0]
> 
>     ( notice the "empty" namespace ... )
> 
> 
>     After all the strange things done, to make it work again, I've
>     started vanilla project ... and it worked. As expected. Simple as
>     putting one xml inside bundle class path /META-INF/spring/context.xml.
> 
>     So, the fun part was -- I "wanted to clean up" config files and I
>     moved XML files to /META-INF/mm/spring/*.xml and include/import them
>     from context.xml.
> 
>     And this was the issue. It turned out, Blueprint/Spring support will
>     fly out of the window, when
>     http://www.springframework.org/schema/osgi is used in a XML file
>     being referenced / included / imported.
> 
>     So to fix my issue, I have all the Spring XML files ( that have
>     http://www.springframework.org/schema/osgi namespace ) stored inside
>     folder /META-INF/spring/ and all other Spring-only namespaced files
>     in other locations.
> 
>     Did not have the time to look over the source code why is this so,
>     but to me, this is strange implementation. This is also not "pointed
>     out" in the documentation or so, so ... fun fun fun. Took me days
>     too long to figure this out.
> 
> 
>     Kind Regards,
>     Miroslav
> 
> 
> 
>     V V sre., 10. okt. 2018 ob 14:39 je oseba Jean-Baptiste Onofré
>     <[email protected] <mailto:[email protected]>> napisala:
> 
>         Afair spring-dm doesn't support spring 4.3 either. It's up to
>         spring 4.2. so you have to install providing the target version.
> 
>         Further more you have to install spring-dm or blueprint spring
>         extension.
> 
>         Regards
>         JB
>         Le 10 oct. 2018, à 15:34, "Miroslav Beranič"
>         <[email protected]
>         <mailto:[email protected]>> a écrit:
> 
>             Hi both,
> 
>             I thought I wrote too much and lost focus.
> 
>             So, I already use spring-legacy repository, and I get
>             spring-* 4.3.x. I already had all this working. I do not use
>             spring-dm feature ( I see it is available, version 1.2.1,
>             spring-dm and spring-dm-web, did not even notice it before ).
> 
>             I am using aries-blueprint-spring from Karaf's repository.
>                 <feature name="aries-blueprint-spring">
>                     <feature>aries-blueprint</feature>
>                     <feature>spring</feature>
>                    
>             
> <bundle>mvn:org.apache.aries.blueprint/org.apache.aries.blueprint.spring/${aries.blueprint.spring.version}</bundle>
> 
>                    
>             
> <bundle>mvn:org.apache.aries.blueprint/org.apache.aries.blueprint.spring.extender/${aries.blueprint.spring.extender.version}</bundle>
> 
>                 </feature>
> 
>             First I install Spring 4.3 from spring-legacy, next I
>             install aries-blueprint-spring ( as if not in this order,
>             Spring 5.0.x is installed ).
>                 <features name="spring-legacy-${project.version}"
> 
> 
>             To do "dry run". In practice this is "correct way" :
>             spring-4.3.x from repository spring-legacy and
>             aries-blueprint-spring from repository spring and I should
>             be all green, or?
> 
>             Any idea what else could go wrong ... some other
>             JMS/JPA/PAX/... dependency/feature to mix it up?
> 
>             My biggest pain is -- as I had working setup, and now I can
>             not make it work anymore. I've reverted my work and Karaf,
>             no luck - either way.
> 
> 
>             Thanks for the directions.
> 
> 
>             Kind Regards,
>             Miroslav
> 
> 
> 
> 
>             V V sre., 10. okt. 2018 ob 14:13 je oseba Guillaume Nodet <
>             [email protected] <mailto:[email protected]>> napisala:
> 
>                 You can also install the aries-blueprint-spring feature
>                 which should provide support for the spring namespaces.
> 
>                 Le mer. 10 oct. 2018 à 14:07, Jean-Baptiste Onofré <
>                 [email protected] <mailto:[email protected]>> a écrit :
> 
>                     Hi
> 
>                     It's because your are using spring-dm which is
>                     deprecated and works only with spring up to 4.
> 
>                     So you have to add the spring-legacy features repo
>                     and then you will have the spring-dm feature.
> 
>                     Regards
>                     JB
>                     Le 10 oct. 2018, à 15:04, "Miroslav Beranič" <
>                     [email protected]
>                     <mailto:[email protected]>> a écrit:
> 
>                         Hi all,
> 
>                         I've read some messages in this mailing list (
>                         last I found was in August 2018 ), but I think,
>                         I have something different scenario.
> 
>                         So, up until today ( when I was doing clean
>                         environment setup ) I was able to use define
>                         Spring Beans using XML ( as I am porting
>                         application, this is like top feature ), but now
>                         - out of the blue, I've started to get errors on
>                         deployment:
> 
>                         12:13:12.912 INFO [pool-33-thread-1] Generated
>                         blueprint for bundle
>                         framework.service/5.0.1.SNAPSHOT at
>                         
> /path/to/assemblies/apache-karaf/target/assembly/data/tmp/blueprint-spring-extender1831035315356717600.xml
> 
>                         12:13:12.917 INFO [pool-33-thread-1] Bundle
>                         framework.service/5.0.1.SNAPSHOT is waiting for
>                         namespace handlers [
>                         http://www.springframework.org/schema/osgi]
> 
>                         12:13:12.895 INFO [features-3-thread-1]  
>                         org.apache.aries.blueprint.spring.extender/0.4.0
>                         12:13:12.935 WARN [Blueprint Extender: 1] No URL
>                         is defined for schema
>                         http://www.springframework.org/schema/osgi. This
>                         schema will not be validated
>                         12:13:12.969 ERROR [Blueprint Extender: 1]
>                         Unable to start blueprint container for bundle
>                         framework.service/5.0.1.SNAPSHOT
>                         
> org.osgi.service.blueprint.container.ComponentDefinitionException:
>                         Unsupported node namespace:
>                             at
>                         
> org.apache.aries.blueprint.parser.Parser.getNamespaceHandler(Parser.java:1386)
>                         ~[111:org.apache.aries.blueprint.core:1.9.0]
>                             at
>                         
> org.apache.aries.blueprint.parser.Parser.getNamespaceHandler(Parser.java:1374)
>                         ~[111:org.apache.aries.blueprint.core:1.9.0]
>                             at
>                         
> org.apache.aries.blueprint.parser.Parser.decorateCustomNode(Parser.java:1361)
>                         ~[111:org.apache.aries.blueprint.core:1.9.0]
>                             at
>                         
> org.apache.aries.blueprint.parser.Parser.handleCustomAttributes(Parser.java:1340)
>                         ~[111:org.apache.aries.blueprint.core:1.9.0]
>                             at
>                         
> org.apache.aries.blueprint.parser.Parser.loadComponents(Parser.java:403)
>                         ~[111:org.apache.aries.blueprint.core:1.9.0]
>                             at
>                         
> org.apache.aries.blueprint.parser.Parser.populate(Parser.java:331)
>                         ~[111:org.apache.aries.blueprint.core:1.9.0]
>                             at
>                         
> org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:351)
>                         [111:org.apache.aries.blueprint.core:1.9.0]
>                             at
>                         
> org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:278)
>                         [111:org.apache.aries.blueprint.core:1.9.0]
>                             at
>                         
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>                         [?:?]
>                             at
>                         
> java.util.concurrent.FutureTask.run(FutureTask.java:266)
>                         [?:?]
>                             at
>                         
> org.apache.aries.blueprint.container.ExecutorServiceWrapper.run(ExecutorServiceWrapper.java:106)
>                         [111:org.apache.aries.blueprint.core:1.9.0]
>                             at
>                         
> org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.run(DiscardableRunnable.java:45)
>                         [111:org.apache.aries.blueprint.core:1.9.0]
>                             at
>                         
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>                         [?:?]
>                             at
>                         
> java.util.concurrent.FutureTask.run(FutureTask.java:266)
>                         [?:?]
>                             at
>                         
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
>                         [?:?]
>                             at
>                         
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
>                         [?:?]
>                             at
>                         
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>                         [?:?]
>                             at
>                         
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>                         [?:?]
>                             at java.lang.Thread.run(Thread.java:748) [?:?]
> 
>                         So, has something changed about Spring ( Spring
>                         DM ) from Karaf's point? I went over GIT commits
>                         ( for Karaf 4.2.2, last few weeks ), but did not
>                         find anything regarding Spring. I am using
>                         Spring 4.3.x ( from Karaf features ).
> 
>                         I have spring-beans.xml inside /META-INF/spring/
>                         folder, and I used
>                         http://www.springframework.org/schema/osgi
>                         namespace to "import" osgi:reference -- and this
>                         all worked like a charm.
> 
>                         Now I get this error and no way to find any
>                         solution. I "kind of" gave up ( as I read JB's
>                         comments - why not use ( only ) Blueprint ), so
>                         I gave it a try. But than I was starting getting
>                         even more strange errors,
>                         for example Blueprint failed to set property
>                         defined in parent class, or create instance that
>                         takes Map as input into class constructor - as I
>                         failed to find matching property descriptor or
>                         class constructor.
> 
>                         Than I went back to original question ... what
>                         has changed, that
>                         http://www.springframework.org/schema/osgi has
>                         stopped working ( as far as I know, spring-dm is
>                         even older ( based on the mailing messages I've
>                         read ) ),
>                         so I've uses aries-blueprint-spring.
> 
>                         What am I missing?
> 
>                         Kind Regards,
>                         Miroslav
> 
> 
> 
>                 -- 
>                 ------------------------
>                 Guillaume Nodet
> 
> 
> 
>             -- 
>             Miroslav Beranič
>             MIBESIS
>             +386(0)40/814-843
>             [email protected]
>             <mailto:[email protected]>
>             http://www.mibesis.si 
> 
> 
> 
>     -- 
>     Miroslav Beranič
>     MIBESIS
>     +386(0)40/814-843
>     [email protected] <mailto:[email protected]>
>     http://www.mibesis.si
> 
> 
> 
> -- 
> Miroslav Beranič
> MIBESIS
> +386(0)40/814-843
> [email protected] <mailto:[email protected]>
> http://www.mibesis.si

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

Reply via email to