In fact, I am repackaging the xbean-spring in the servicemix.activemq bundle that I wrote..since it has a problem for xbean-spring bundle as following, which means I haven't installed the com.thoughtworks.qdox bundle in my tests..(I will switch to the xbean-spring bundle after solving the namespace issue, since I think I would like not to install the qdox or other extra bundles just because I need to use the xbean-spring bundle to register the spring custom tag)..
Back to the bundle that I wrote, The manifest entry already has the "DynamicImport-Package: *", but it seems still can't find the activemq.org/config/1.0 file, which was located in the activemq-core bundle....I am wondering is it because we need to use bundleClassloader in the xbean? but as you said, Spring OSGi workef fine with namespace handlers, it should have a good approach to solve this problem.. I am still investigating.... > > > org.osgi.framework.BundleException : The bundle could not be resolved. > > > Reason: Missing Constraint: Import-Package: com.thoughtworks.qdox; > > > version="0.0.0" > > > at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker ( > > > BundleHost.java:294) > > > at org.eclipse.osgi.framework.internal.core.AbstractBundle.start( > > > AbstractBundle.java:256) > > > at org.springframework.osgi.test.AbstractOsgiTests.startup( > > > AbstractOsgiTests.java:354) > > > at > > > org.springframework.osgi.test.AbstractOsgiTests.prepareTestExecution( > > > AbstractOsgiTests.java:445) > > > at org.springframework.osgi.test.AbstractOsgiTests.runBare ( > > > AbstractOsgiTests.java:262) > > > at org.springframework.osgi.test.AbstractOsgiTests$1.protect ( > > > AbstractOsgiTests.java:241) > > > at junit.framework.TestResult.runProtected(TestResult.java:128) > > > at org.springframework.osgi.test.AbstractOsgiTests.run( > > > AbstractOsgiTests.java:239) > > > at junit.framework.TestSuite.runTest (TestSuite.java:232) > > > at junit.framework.TestSuite.run(TestSuite.java :227) > > > at org.junit.internal.runners.JUnit38ClassRunner.run( > > > JUnit38ClassRunner.java:81) > > > at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run( > > > JUnit4TestReference.java:38) > > > at org.eclipse.jdt.internal.junit.runner.TestExecution.run( > > > TestExecution.java:38) > > > at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests > > ( > > > RemoteTestRunner.java:460) > > > at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests > > ( > > > RemoteTestRunner.java:673) > > > at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run( > > > RemoteTestRunner.java:386) > > > at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main ( full track for my bundle manifest.mf: -------------------------------------------------------- Manifest-Version: 1.0 Bundle-Name: ServiceMix ActiveMQ Private-Package: META-INF.services.org.apache.activemq.broker,META-INF .services.org.apache.activemq.store.jdbc,META-INF.services.org.apache .activemq.transport,META-INF.services.org.apache.activemq.transport.d iscoveryagent,META-INF.services.org.apache.activemq.wireformat,META-I NF.services.org.apache.camel,META-INF.services.org.apache.camel.compo nent,META-INF.services.org.apache.xbean.spring.http.activemq.org.conf ig,META-INF.spring,javax.transaction,javax.transaction.xa,org.apache. commons.pool.impl,org.apache.geronimo.transaction,org.apache.geronimo .transaction.log,org.apache.geronimo.transaction.manager,org.apache.s ervicemix.activemq,org.jencks.amqpool Created-By: 1.5.0_11 (Sun Microsystems Inc.) Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.apache.servicemix.activemq Tool: Bnd-0.0.160 Include-Resource: src\main\resources Bnd-LastModified: 1196084126062 Export-Package: org.apache.xbean.spring.jndi;uses:="javax.naming,org.s pringframework.core.io,org.apache.commons.logging,org.springframework .beans.factory,org.apache.xbean.spring.context.impl,javax.naming.spi" ,org.apache.xbean.spring.generator;uses:="com.thoughtworks.qdox.model ,org.apache.tools.ant.types,org.apache.tools.ant.taskdefs,org.apache. tools.ant,org.apache.commons.logging,com.thoughtworks.qdox,org.apache .xbean.spring.context.impl",org.apache.xbean.spring.util;uses:="org.s pringframework.beans.factory.config,org.springframework.beans",org.ap ache.xbean.spring.context.v2c;uses:="org.springframework.beans.factor y.parsing,org.w3c.dom,org.apache.commons.logging,org.springframework. context.support,org.springframework.beans.factory.support,org.springf ramework.beans.factory.config,org.springframework.beans.factory.xml,o rg.springframework.beans,org.springframework.util,org.springframework .beans.factory,org.apache.xbean.spring.context.impl",org.apache.xbean .spring,org.apache.commons.pool,org.apache.xbean.spring.context;uses: ="org.xml.sax,org.w3c.dom,org.springframework.context,org.springframe work.context.support,org.springframework.beans.factory.support,org.sp ringframework.beans.factory.config,org.springframework.core.io,org.sp ringframework.beans.factory.xml,org.springframework.beans,org.springf ramework.beans.factory,org.apache.xbean.spring.context.impl,org.sprin gframework.web.context.support",org.apache.xbean.spring.context.v2;us es:="org.springframework.util.xml,org.springframework.core.io.support ,org.xml.sax,org.springframework.beans.factory.parsing,org.w3c.dom,or g.apache.commons.logging,org.apache.xbean.spring.context,org.springfr amework.context,org.springframework.beans.factory.support,org.springf ramework.beans.factory.config,org.springframework.beans.factory.xml,o rg.springframework.core.io,org.springframework.beans,org.springframew ork.util,org.springframework.beans.factory",org.apache.xbean.spring.c ontext.impl;uses:="javax.management,javax.xml.namespace,org.w3c.dom,o rg.apache.commons.logging,org.apache.xbean.spring.context,org.springf ramework.beans.factory.support,org.springframework.beans.factory.conf ig,org.springframework.core.io,org.springframework.beans.factory.xml, org.springframework.beans,org.springframework.beans.factory" Bundle-Version: 4.0.0.SNAPSHOT DynamicImport-Package: * Thanks Jeff On Nov 26, 2007 9:49 PM, Guillaume Nodet <[EMAIL PROTECTED]> wrote: > Well, thinking about this, the problem is that xbean is not OSGi friendly. > Spring osgi works well because it autodiscovers the namespace handlers > from > the bundles and use them. > XBean relies on the thread context classloader to load resources, so maybe > this would be enough to set it to the correct classloader before creating > the xbean context. > We may also have to use the DynamicImport-Package osgi manifest entry but > I > think the TCL classloader may be enough. > > On Nov 26, 2007 2:38 PM, Guillaume Nodet <[EMAIL PROTECTED]> wrote: > > > Well, it would be easier to patch activemq so that it export this > package > > maybe ? > > > > > > On Nov 26, 2007 2:26 PM, Jeff Yu <[EMAIL PROTECTED]> wrote: > > > > > Well, I've found a workaround for this. > > > > > > I need to copy the > > > > "/META-INF/service/org/apache/xbean/spring/http/activemq.org/config/1.0" > > > > > > file in the xbean-spring bundle, since the activemq bundle didn't > export > > > the > > > META-INF/service... config file, or bundles cant access the META-INF > > > file?? > > > > > > In the xbean-spring: XBeanNameSpaceHanlder.java, it load resource > (bean > > > definition for this case) from classpath: > > > > > > InputStream in = Thread.currentThread > > > ().getContextClassLoader().getResourceAsStream(uri); > > > if (in == null) { > > > ClassLoader cl = parserContext.getReaderContext > > > ().getReader().getBeanClassLoader(); > > > if (cl != null) { > > > in = cl.getResourceAsStream(uri); > > > } > > > if (in == null) { > > > in = > > > getClass().getClassLoader().getResourceAsStream(uri); > > > if (in == null) { > > > log.debug("Could not find resource: " + uri); > > > } > > > } > > > } > > > > > > > > > it seems can't find resource in other bundles META-INF/ folder... > > > > > > Thanks > > > Jeff > > > > > > On Nov 24, 2007 9:31 PM, Jeff Yu <[EMAIL PROTECTED]> wrote: > > > > > > > Hi, > > > > > > > > I am integrating with activemq 5.0 bundle, with pure spring xml > > > syntax, I > > > > make it work, I mean, start the embedded broker without any > problems, > > > but > > > > when I config broker with xbean configuration like: > > > > > > > > <beans > > > > xmlns=" http://www.springframework.org/schema/beans" > > > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance " > > > > xmlns:amq="http://activemq.org/config/1.0" > > > > xsi:schemaLocation=" http://www.springframework.org/schema/beans > > > > http://www.springframework.org/schema/beans/spring-beans-2.0.xsd > > > > http://activemq.org/config/1.0 > > > > http://activemq.apache.org/schema/activemq-core.xsd "> > > > > > > > > <amq:broker useJmx="false" persistent="false"> > > > > <amq:transportConnectors> > > > > <amq:transportConnector uri="tcp://localhost:61616" /> > > > > </amq:transportConnectors> > > > > </amq:broker> > > > > </beans> > > > > > > > > I got the "Caused by: > > > > org.springframework.beans.factory.BeanDefinitionStoreException: > > > > Unrecognized xbean namespace mapping: http://activemq.org/config/1.0 > ", > > > > I've included > > > > the xbean-spring 3.3 in my bundle by using <Private-Package>. (if I > > > > install the xbean-spring 3.3-SNAPSHOT bundle, I would get following > > > error, > > > > so I add the xbean-spring > > > > in the Private-Package"). > > > > ------------------- > > > > org.osgi.framework.BundleException : The bundle could not be > resolved. > > > > Reason: Missing Constraint: Import-Package: com.thoughtworks.qdox; > > > > version="0.0.0" > > > > at > org.eclipse.osgi.framework.internal.core.BundleHost.startWorker( > > > > BundleHost.java:294) > > > > at org.eclipse.osgi.framework.internal.core.AbstractBundle.start > ( > > > > AbstractBundle.java:256) > > > > at org.springframework.osgi.test.AbstractOsgiTests.startup( > > > > AbstractOsgiTests.java:354) > > > > at > > > > org.springframework.osgi.test.AbstractOsgiTests.prepareTestExecution > ( > > > > AbstractOsgiTests.java:445) > > > > at org.springframework.osgi.test.AbstractOsgiTests.runBare ( > > > > AbstractOsgiTests.java:262) > > > > at org.springframework.osgi.test.AbstractOsgiTests$1.protect ( > > > > AbstractOsgiTests.java:241) > > > > at junit.framework.TestResult.runProtected(TestResult.java:128) > > > > at org.springframework.osgi.test.AbstractOsgiTests.run( > > > > AbstractOsgiTests.java:239) > > > > at junit.framework.TestSuite.runTest (TestSuite.java:232) > > > > at junit.framework.TestSuite.run(TestSuite.java :227) > > > > at org.junit.internal.runners.JUnit38ClassRunner.run( > > > > JUnit38ClassRunner.java:81) > > > > at > org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run( > > > > JUnit4TestReference.java:38) > > > > at org.eclipse.jdt.internal.junit.runner.TestExecution.run( > > > > TestExecution.java:38) > > > > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests > > > ( > > > > RemoteTestRunner.java:460) > > > > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests > > > ( > > > > RemoteTestRunner.java:673) > > > > at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run( > > > > RemoteTestRunner.java:386) > > > > at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main ( > > > > RemoteTestRunner.java:196) > > > > > > > > > > > > Full error stack for xbean namespace error: > > > > --------------------------------- > > > > Exception in thread "SimpleAsyncTaskExecutor-5" > > > > org.springframework.beans.factory.BeanCreationException : Error > > > creating > > > > bean with name 'activemqBroker' defined in OSGi > > > > res[/META-INF/spring/servicemix- > > > > activemq.xml|id=48|symName=org.apache.servicemix.activemq]: > Invocation > > > of > > > > init method failed; nested exception is > > > > org.springframework.beans.factory.BeanDefinitionStoreException : > > > > Unrecognized xbean namespace mapping: http://activemq.org/config/1.0 > > > > at > > > > > > > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean > > > > (AbstractAutowireCapableBeanFactory.java :1362)2007-11-24 > 21:15:57,187 > > > > ERROR [ > > > > > > > > org.springframework.osgi.context.support.OsgiBundleXmlApplicationContext > > > ] > > > > - Post refresh error > > > > org.springframework.beans.factory.BeanCreationException : Error > > > creating > > > > bean with name 'activemqBroker' defined in OSGi > > > > res[/META-INF/spring/servicemix- > > > > activemq.xml|id=48|symName=org.apache.servicemix.activemq]: > Invocation > > > of > > > > init method failed; nested exception is > > > > org.springframework.beans.factory.BeanDefinitionStoreException: > > > > Unrecognized xbean namespace mapping: http://activemq.org/config/1.0 > > > > at > > > > > > > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean > > > > (AbstractAutowireCapableBeanFactory.java:1362) > > > > at > > > > > > > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean > ( > > > > AbstractAutowireCapableBeanFactory.java:540) > > > > at > > > > > > > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run > > > > (AbstractAutowireCapableBeanFactory.java:485) > > > > at java.security.AccessController.doPrivileged (Native Method) > > > > at > > > > > > > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean > > > > (AbstractAutowireCapableBeanFactory.java:455) > > > > at > > > > > > > > org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject > > > ( > > > > AbstractBeanFactory.java:251) > > > > at > > > > > > > > org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton > > > > (DefaultSingletonBeanRegistry.java:169) > > > > at > > > > > org.springframework.beans.factory.support.AbstractBeanFactory.getBean( > > > > AbstractBeanFactory.java:248) > > > > at > > > > > org.springframework.beans.factory.support.AbstractBeanFactory.getBean( > > > > AbstractBeanFactory.java:170) > > > > at > > > > > > > > org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons > > > ( > > > > DefaultListableBeanFactory.java:407) > > > > at > > > > > > > > org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization > > > > (AbstractApplicationContext.java:735) > > > > at > > > > > > > > org.springframework.osgi.internal.context.support.AbstractDelegatedExecutionApplicationContext.postRefresh > ( > > > > AbstractDelegatedExecutionApplicationContext.java:218) > > > > at > > > > > > > > org.springframework.osgi.internal.extender.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run > > > > (DependencyWaiterApplicationContextExecutor.java :131) > > > > at java.lang.Thread.run(Thread.java:595) > > > > Caused by: > > > org.springframework.beans.factory.BeanDefinitionStoreException: > > > > Unrecognized xbean namespace mapping: http://activemq.org/config/1.0 > > > > at > > > > > > > > org.apache.xbean.spring.context.v2c.XBeanNamespaceHandler.parseBeanFromExtensionElement > > > > (XBeanNamespaceHandler.java :268) > > > > at > org.apache.xbean.spring.context.v2c.XBeanNamespaceHandler.parse > > > ( > > > > XBeanNamespaceHandler.java :155) > > > > at > org.apache.xbean.spring.context.v2.XBeanNamespaceHandler.parse( > > > > XBeanNamespaceHandler.java :49) > > > > at > > > > > > > > org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement > > > > (BeanDefinitionParserDelegate.java :1246) > > > > at > > > > > > > > org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement > > > > (BeanDefinitionParserDelegate.java:1236) > > > > at > > > > > > > > org.apache.xbean.spring.context.v2.XBeanBeanDefinitionDocumentReader.parseBeanDefinitions > > > ( > > > > XBeanBeanDefinitionDocumentReader.java:84) > > > > at > > > > > > > > org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions > > > > (DefaultBeanDefinitionDocumentReader.java:90) > > > > at > > > > > > > > org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions > ( > > > > XmlBeanDefinitionReader.java:468) > > > > at > > > > > > > > org.apache.xbean.spring.context.v2.XBeanXmlBeanDefinitionReader.registerBeanDefinitions > > > > (XBeanXmlBeanDefinitionReader.java:79) > > > > at > > > > > > > > org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions > > > ( > > > > XmlBeanDefinitionReader.java:363) > > > > at > > > > > > > > org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions > > > > (XmlBeanDefinitionReader.java:313) > > > > at > > > > > > > > org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions > > > ( > > > > XmlBeanDefinitionReader.java:290) > > > > at > > > > > > > > org.apache.xbean.spring.context.ResourceXmlApplicationContext.loadBeanDefinitions > > > > (ResourceXmlApplicationContext.java:111) > > > > at > > > > > > > > org.apache.xbean.spring.context.ResourceXmlApplicationContext.loadBeanDefinitions > > > ( > > > > ResourceXmlApplicationContext.java:104) > > > > at > > > > > > > > org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory > > > > (AbstractRefreshableApplicationContext.java:97) > > > > at > > > > > > > > org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory > ( > > > > AbstractApplicationContext.java:411) > > > > at > > > > > org.springframework.context.support.AbstractApplicationContext.refresh > > > ( > > > > AbstractApplicationContext.java:338) > > > > at org.apache.xbean.spring.context.ResourceXmlApplicationContext > .<init>( > > > > ResourceXmlApplicationContext.java:88) > > > > at org.apache.xbean.spring.context.ResourceXmlApplicationContext > > > > .<init>(ResourceXmlApplicationContext.java:76) > > > > at org.apache.xbean.spring.context.ResourceXmlApplicationContext > .<init>( > > > > ResourceXmlApplicationContext.java:72) > > > > at org.apache.xbean.spring.context.ResourceXmlApplicationContext > > > > .<init>(ResourceXmlApplicationContext.java:68) > > > > at > org.apache.activemq.xbean.BrokerFactoryBean.afterPropertiesSet( > > > > BrokerFactoryBean.java:82) > > > > at > > > > > > > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods > > > > (AbstractAutowireCapableBeanFactory.java:1390) > > > > at > > > > > > > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean > > > ( > > > > AbstractAutowireCapableBeanFactory.java:1359) > > > > ... 13 more > > > > > > > > > > > > What am I doing wrong here?? > > > > > > > > > > > > -- > > > > Best Regards > > > > Jeff > > > > > > > > > > > > > > > -- > > > Best Regards > > > Jeff > > > > > > > > > > > -- > > Cheers, > > Guillaume Nodet > > ------------------------ > > Blog: http://gnodet.blogspot.com/ > > > > > -- > Cheers, > Guillaume Nodet > ------------------------ > Blog: http://gnodet.blogspot.com/ > -- Best Regards Jeff