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
