Note that there are some explanatory texts on larger screens.

plurals
  1. PONewbee question
    text
    copied!<p>Hy everybody,</p> <p>Thanks in advance for your help.</p> <p>Here is my problem.</p> <p>I want to instanciate a simple bean from spring into an OSGI Bundle. </p> <p>Here is my java class : </p> <pre><code>package testspring; public class ClassIOC { public void helloWorld(){ System.out.println("Hello World Spring with OSGI"); } } </code></pre> <p>Here is my activator</p> <pre><code>package testspring; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Activator implements BundleActivator { private static BundleContext context; static BundleContext getContext() { return context; } /* * (non-Javadoc) * * @see * org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext * ) */ public void start(BundleContext bundleContext) throws Exception { Activator.context = bundleContext; ApplicationContext appContext = new ClassPathXmlApplicationContext( "META-INF/spring/applicationContext.xml"); ClassIOC instance = (ClassIOC) appContext.getBean("ClassIOC"); instance.helloWorld(); } /* * (non-Javadoc) * * @see * org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext) */ public void stop(BundleContext bundleContext) throws Exception { Activator.context = null; } } </code></pre> <p>Here is my manifest : </p> <pre><code>Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: TestSpring Bundle-SymbolicName: TestSpring Bundle-Version: 1.0.0.qualifier Bundle-Activator: testspring.Activator Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Import-Package: org.osgi.framework;version="1.3.0" Bundle-ClassPath: . Require-Bundle: org.springframework.aop;bundle-version="2.5.6", org.springframework.beans;bundle-version="2.5.6", org.springframework.context;bundle-version="2.5.6", org.springframework.core;bundle-version="2.5.6", com.springsource.org.apache.commons.logging;bundle-version="1.1.1", com.springsource.org.apache.log4j;bundle-version="1.2.15" </code></pre> <p>I check into my OSGI container and I have all thoses bundles.</p> <p>Each times I activate my bundle i have the following exception : </p> <pre><code>org.osgi.framework.BundleException: Activator start error in bundle TestSpring [36]. at org.apache.felix.framework.Felix.activateBundle(Felix.java:1869) at org.apache.felix.framework.Felix.startBundle(Felix.java:1739) at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:922) at org.apache.felix.gogo.command.Basic.start(Basic.java:758) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.felix.gogo.runtime.Reflective.method(Reflective.java:136) at org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:82) at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:458) at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:384) at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108) at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183) at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120) at org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:79) at org.apache.felix.gogo.shell.Console.run(Console.java:62) at org.apache.felix.gogo.shell.Shell.console(Shell.java:198) at org.apache.felix.gogo.shell.Shell.gosh(Shell.java:124) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.felix.gogo.runtime.Reflective.method(Reflective.java:136) at org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:82) at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:458) at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:384) at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108) at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183) at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120) at org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:79) at org.apache.felix.gogo.shell.Activator.run(Activator.java:75) at java.lang.Thread.run(Unknown Source) Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [META-I NF/spring/applicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [META-INF/spring/applicationContex t.xml] cannot be opened because it does not exist at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:349) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:212) at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:113) at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:80) at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContex t.java:123) at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:422) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352) at org.springframework.context.support.ClassPathXmlApplicationContext.&lt;init&gt;(ClassPathXmlApplicationContext.java:139) at org.springframework.context.support.ClassPathXmlApplicationContext.&lt;init&gt;(ClassPathXmlApplicationContext.java:83) at testspring.Activator.start(Activator.java:31) at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:633) at org.apache.felix.framework.Felix.activateBundle(Felix.java:1822) ... 32 more Caused by: java.io.FileNotFoundException: class path resource [META-INF/spring/applicationContext.xml] cannot be opened because it does not exist at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:143) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336) ... 47 more org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [META-INF/spring/a pplicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [META-INF/spring/applicationContext.xml] cann ot be opened because it does not exist </code></pre> <p>I have try to declare META-INF/spring directory as source, I try to access to my application Context directly (without "META-INF/spring"), it doesn't change everything....</p> <p>If I add the spring bundles as jar, it works...</p> <p>I'm missing of new ideas. I just want to do a simple instanciation of bean, I don't want to use spring dm, or I have don't understand everything, like how to instanciate bean with scope="prototype"</p> <p>Am i forced to use spring dm ?</p> <p>best regards</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload