The classloading problem in only related to where you put your class files and dependencies. If you use the standard jbi packaging and deploy a SA on the lwcontainer, you should make sure that all needed dependencies are bundled within your SUs. Else you have to make sure about what the container class loader includes.
What i meant in the previous thread was about the servicemix-components jar, not the lightweight container itself. For example if you put the servicemix-components jar in the container classloader and you want to use the RSS component, you will have to put the needed jars in the same classloader than the component itself. It means you will have to put the RSS library in the container classloader. At the end, such a behavior will remove the benefit of having separate classloaders, as everything will end up in the container classloader. Sounds clear ? On 9/6/06, William Blackburn <[EMAIL PROTECTED]> wrote:
Sorry to hijack this thread, but I was hoping for clarification of the last statement made in the quoted thread. I have been building an application that consists of several home-grown servicemix 'pojo' components configured directly in servicemix.xml, several binding components from servicemix-component and an 'extension' framework based on additional components hot-deployed against the lwcontainer. I've never analyzed the class loading behavior in this arrangement myself, but am I to understand that this is a non-optimal configuration? Can you elaborate on the consequences of my current design, and help me understand what I've done wrong if this is not a best-practice? Thanks in advance for any assistance. B.J. On Sep 6, 2006, at 12:38 AM, Guillaume Nodet wrote: > The error is in the stack trace: > Caused by: java.lang.ClassNotFoundException: > org.apache.servicemix.components.jms.JmsInUsingJCABinding > > The reason is that servicemix-components is not put anymore in > the ./lib > folder, because it forces all lw components > dependencies to be loaded from the server classloader when you > deploy a SU > on the lw container. > If you don' t use the lw container, feel free to add this jar in > ./lib/optional. > > On 9/6/06, gg1052 <[EMAIL PROTECTED]> wrote: >> >> >> hi.. >> >> i am copy SM-M2 version example/nca(develope me) to SM-M3 version >> /example/nca. >> >> nca example SM-M2 Success.. >> >> SM-M3/example/nca.. excute servicemix servicemix.xml >> >> and follow error message.. >> >> >> servicemix.bat: Ignoring predefined value for SERVICEMIX_HOME >> Starting Apache ServiceMix ESB: 3.0-incubating-SNAPSHOT >> >> Loading Apache ServiceMix from file: servicemix.xml >> Caught: >> org.springframework.beans.factory.BeanDefinitionStoreException: >> Unexpect >> ed exception parsing XML document from file >> [D:\Project\env\servicemix_m3\exampl >> es\nca\servicemix.xml]; nested exception is >> java.lang.IllegalStateException: >> Una >> ble to invoke parseNestedCustomElement method >> org.springframework.beans.factory.BeanDefinitionStoreException: >> Unexpected >> excep >> tion parsing XML document from file >> [D:\Project\env\servicemix_m3\examples\nca\s >> ervicemix.xml]; nested exception is java.lang.IllegalStateException: >> Unable >> to i >> nvoke parseNestedCustomElement method >> Caused by: java.lang.IllegalStateException: Unable to invoke >> parseNestedCustomEl >> ement method >> at >> org.apache.xbean.spring.context.v2b.XBeanBeanDefinitionParserDelegate >> .internalParseNestedCustomElement >> (XBeanBeanDefinitionParserDelegate.java >> :95) >> at >> org.apache.xbean.spring.context.v2b.XBeanBeanDefinitionParserDelegate >> .parsePropertySubElement(XBeanBeanDefinitionParserDelegate.java:50) >> at >> org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.pa >> rseListElement(BeanDefinitionParserDelegate.java:914) >> at >> org.apache.xbean.spring.context.v2b.XBeanNamespaceHandler.parseListEl >> ement(XBeanNamespaceHandler.java:581) >> at >> org.apache.xbean.spring.context.v2b.XBeanNamespaceHandler.parseNested >> PropertyViaIntrospection(XBeanNamespaceHandler.java:574) >> at >> org.apache.xbean.spring.context.v2b.XBeanNamespaceHandler.tryParseNes >> tedPropertyViaIntrospection(XBeanNamespaceHandler.java:543) >> at >> org.apache.xbean.spring.context.v2b.XBeanNamespaceHandler.addNestedPr >> opertyElements(XBeanNamespaceHandler.java:512) >> at >> org.apache.xbean.spring.context.v2b.XBeanNamespaceHandler.parseBeanFr >> omExtensionElement(XBeanNamespaceHandler.java:208) >> at >> org.apache.xbean.spring.context.v2b.XBeanNamespaceHandler.parseBeanFr >> omExtensionElement(XBeanNamespaceHandler.java:253) >> at >> org.apache.xbean.spring.context.v2b.XBeanNamespaceHandler.parse(XBean >> NamespaceHandler.java:153) >> at >> org.apache.xbean.spring.context.v2.XBeanNamespaceHandler.parse(XBeanN >> amespaceHandler.java:49) >> at >> org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.pa >> rseCustomElement(BeanDefinitionParserDelegate.java:1118) >> at >> org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentRe >> ader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java: >> 141) >> at >> org.apache.xbean.spring.context.v2.XBeanBeanDefinitionDocumentReader. >> parseBeanDefinitions(XBeanBeanDefinitionDocumentReader.java:39) >> at >> org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentRe >> ader.registerBeanDefinitions >> (DefaultBeanDefinitionDocumentReader.java:93) >> at >> org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registe >> rBeanDefinitions(XmlBeanDefinitionReader.java:496) >> at >> org.apache.xbean.spring.context.v2.XBeanXmlBeanDefinitionReader.regis >> terBeanDefinitions(XBeanXmlBeanDefinitionReader.java:79) >> at >> org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadB >> eanDefinitions(XmlBeanDefinitionReader.java:406) >> at >> org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBea >> nDefinitions(XmlBeanDefinitionReader.java:360) >> at >> org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBea >> nDefinitions(XmlBeanDefinitionReader.java:335) >> at >> org.springframework.beans.factory.support.AbstractBeanDefinitionReade >> r.loadBeanDefinitions(AbstractBeanDefinitionReader.java:126) >> at >> org.springframework.beans.factory.support.AbstractBeanDefinitionReade >> r.loadBeanDefinitions(AbstractBeanDefinitionReader.java:142) >> at >> org.springframework.beans.factory.support.AbstractBeanDefinitionReade >> r.loadBeanDefinitions(AbstractBeanDefinitionReader.java:168) >> at >> org.springframework.context.support.AbstractXmlApplicationContext.loa >> dBeanDefinitions(AbstractXmlApplicationContext.java:113) >> at >> org.apache.xbean.spring.context.FileSystemXmlApplicationContext.loadB >> eanDefinitions(FileSystemXmlApplicationContext.java:168) >> at >> org.springframework.context.support.AbstractRefreshableApplicationCon >> text.refreshBeanFactory(AbstractRefreshableApplicationContext.java: >> 94) >> at >> org.springframework.context.support.AbstractApplicationContext.refres >> h(AbstractApplicationContext.java:294) >> at >> org.apache.xbean.spring.context.FileSystemXmlApplicationContext.<init >> >(FileSystemXmlApplicationContext.java:149) >> at >> org.apache.xbean.spring.context.FileSystemXmlApplicationContext.<init >> >(FileSystemXmlApplicationContext.java:100) >> at org.apache.servicemix.Main.main(Main.java:80) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native >> Method) >> at >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. >> java:39) >> at >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces >> sorImpl.java:25) >> at java.lang.reflect.Method.invoke(Method.java:585) >> at >> org.codehaus.classworlds.Launcher.launchStandard(Launcher.java:410) >> at org.codehaus.classworlds.Launcher.launch(Launcher.java: >> 344) >> at org.codehaus.classworlds.Launcher.main(Launcher.java:461) >> Caused by: java.lang.reflect.InvocationTargetException >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native >> Method) >> at >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. >> java:39) >> at >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces >> sorImpl.java:25) >> at java.lang.reflect.Method.invoke(Method.java:585) >> at >> org.apache.xbean.spring.context.v2b.XBeanBeanDefinitionParserDelegate >> .internalParseNestedCustomElement >> (XBeanBeanDefinitionParserDelegate.java >> :93) >> ... 36 more >> Caused by: >> org.springframework.beans.factory.parsing.BeanDefinitionParsingExcept >> ion: Error 'Bean class >> [org.apache.servicemix.components.jms.JmsInUsingJCABindin >> g] not found' in file >> [D:\Project\env\servicemix_m3\examples\nca\servicemix.xml] >> at: >> Bean ''; nested exception is java.lang.ClassNotFoundException: >> org.apache.servic >> emix.components.jms.JmsInUsingJCABinding >> at >> org.springframework.beans.factory.parsing.FailFastProblemReporter.err >> or(FailFastProblemReporter.java:56) >> at >> org.springframework.beans.factory.support.ReaderContext.error(ReaderC >> ontext.java:74) >> at >> org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.er >> ror(BeanDefinitionParserDelegate.java:1181) >> at >> org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.pa >> rseBeanDefinitionElement(BeanDefinitionParserDelegate.java:549) >> at >> org.apache.xbean.spring.context.v2b.XBeanBeanDefinitionParserDelegate >> .parseBeanDefinitionElement(XBeanBeanDefinitionParserDelegate.java: >> 61) >> at >> org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.pa >> rseBeanDefinitionElement(BeanDefinitionParserDelegate.java:398) >> at >> org.apache.xbean.spring.context.v2b.XBeanNamespaceHandler.parseChildE >> xtensionBean(XBeanNamespaceHandler.java:655) >> at >> org.apache.xbean.spring.context.v2b.XBeanNamespaceHandler.parseNested >> PropertyViaIntrospection(XBeanNamespaceHandler.java:576) >> at >> org.apache.xbean.spring.context.v2b.XBeanNamespaceHandler.tryParseNes >> tedPropertyViaIntrospection(XBeanNamespaceHandler.java:543) >> at >> org.apache.xbean.spring.context.v2b.XBeanNamespaceHandler.addNestedPr >> opertyElements(XBeanNamespaceHandler.java:512) >> at >> org.apache.xbean.spring.context.v2b.XBeanNamespaceHandler.parseBeanFr >> omExtensionElement(XBeanNamespaceHandler.java:208) >> at >> org.apache.xbean.spring.context.v2b.XBeanNamespaceHandler.parseBeanFr >> omExtensionElement(XBeanNamespaceHandler.java:253) >> at >> org.apache.xbean.spring.context.v2b.XBeanNamespaceHandler.parse(XBean >> NamespaceHandler.java:153) >> at >> org.apache.xbean.spring.context.v2.XBeanNamespaceHandler.parse(XBeanN >> amespaceHandler.java:49) >> at >> org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.pa >> rseCustomElement(BeanDefinitionParserDelegate.java:1118) >> at >> org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.pa >> rseNestedCustomElement(BeanDefinitionParserDelegate.java:1156) >> ... 41 more >> Caused by: java.lang.ClassNotFoundException: >> org.apache.servicemix.components.jm >> s.JmsInUsingJCABinding >> at java.net.URLClassLoader$1.run(URLClassLoader.java:200) >> at java.security.AccessController.doPrivileged(Native Method) >> at java.net.URLClassLoader.findClass(URLClassLoader.java:188) >> at java.lang.ClassLoader.loadClass(ClassLoader.java:306) >> at >> org.codehaus.classworlds.RealmClassLoader.loadClassDirect(RealmClassL >> oader.java:195) >> at >> org.codehaus.classworlds.DefaultClassRealm.loadClassDirect(DefaultCla >> ssRealm.java:412) >> at >> org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassReal >> m.java:376) >> at >> org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader. >> java:214) >> at java.lang.ClassLoader.loadClass(ClassLoader.java:251) >> at java.lang.ClassLoader.loadClassInternal >> (ClassLoader.java:319) >> at java.lang.Class.forName0(Native Method) >> at java.lang.Class.forName(Class.java:242) >> at org.springframework.util.ClassUtils.forName >> (ClassUtils.java >> :160) >> at >> org.springframework.beans.factory.support.BeanDefinitionReaderUtils.c >> reateBeanDefinition(BeanDefinitionReaderUtils.java:95) >> at >> org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.pa >> rseBeanDefinitionElement(BeanDefinitionParserDelegate.java:452) >> ... 53 more >> >> >> >> ==== servicemix.xml =========== >> >> <?xml version="1.0" encoding="euc-kr"?> >> <beans xmlns="http://xbean.org/schemas/spring/1.0" >> xmlns:spring="http://xbean.org/schemas/spring/1.0" >> xmlns:sm="http://servicemix.apache.org/config/1.0" >> xmlns:my="http://servicemix.apache.org/demo/"> >> >> >> <!-- the JBI container --> >> <sm:container spring:id="jbi" rootDir="./data/smx" >> useMBeanServer="true" >> createMBeanServer="true" installationDirPath="./ >> install" >> deploymentDirPath="./deploy" >> monitorInstallationDirectory="true" dumpStats="true" >> statsInterval="10" >> transactionManager="#transactionManager"> >> >> <sm:activationSpecs> >> >> >> <!-- Subscribe to a JMS destination --> >> <sm:activationSpec componentName="inputReceiver" >> >> service="my:inputReceiver" >> >> destinationService="my:outputSender"> >> <sm:component> >> <bean >> class="org.apache.servicemix.components.jms.JmsInUsingJCABinding"> >> <property name="jcaContainer" ref="jencks"/> >> <property name="activationSpec"> >> <bean class=" >> org.apache.activemq.ra.ActiveMQActivationSpec"> >> <property name="destination" >> value="demo.org.servicemix.source"/> >> <property name="destinationType" value=" >> javax.jms.Topic"/> >> </bean> >> </property> >> </bean> >> </sm:component> >> </sm:activationSpec> >> >> <!-- Publish the result to a JMS destination --> >> <sm:activationSpec componentName="outputSender" >> service="my:outputSender"> >> <sm:component> >> <bean class="nca.TestPojo"> >> <property name="template"> >> <bean class=" >> org.springframework.jms.core.JmsTemplate"> >> <property name="connectionFactory" >> ref="jmsFactory"/> >> <property name="defaultDestinationName" >> value="demo.org.servicemix.result"/> >> <property name="pubSubDomain" >> value="true"/> >> </bean> >> </property> >> </bean> >> </sm:component> >> </sm:activationSpec> >> </sm:activationSpecs> >> </sm:container> >> >> <!-- the JCA container --> >> <bean id="jencks" class="org.jencks.JCAContainer" >> singleton="true"> >> >> <!-- lets use the default configuration of work >> manager >> and transaction >> manager--> >> <property name="bootstrapContext"> >> <bean >> class=" >> org.jencks.factory.BootstrapContextFactoryBean"> >> <property name="threadPoolSize" >> value="25" >> /> >> </bean> >> </property> >> >> <!-- the JCA Resource Adapter --> >> <property name="resourceAdapter"> >> <bean id="activeMQResourceAdapter" >> class=" >> org.apache.activemq.ra.ActiveMQResourceAdapter" singleton="true"> >> <property name="serverUrl" >> value="tcp://localhost: >> 61616" /> >> </bean> >> </property> >> </bean> >> >> <!-- message broker --> >> <bean id="broker" class=" >> org.apache.activemq.xbean.BrokerFactoryBean"> >> <property name="config" >> value="classpath:activemq.xml" /> >> </bean> >> >> <bean id="transactionContextManager" >> class=" >> org.jencks.factory.TransactionContextManagerFactoryBean"/> >> <bean id="transactionManager" >> class=" >> org.jencks.factory.GeronimoTransactionManagerFactoryBean" /> >> >> <bean id="jmsFactory" >> >> class="org.apache.activemq.pool.PooledConnectionFactory"> >> <property name="connectionFactory"> >> <bean class=" >> org.apache.activemq.ActiveMQConnectionFactory"> >> <property name="brokerURL"> >> >> <value>tcp://localhost: >> 61616</value> >> </property> >> </bean> >> </property> >> </bean> >> >> </beans> >> >> -- >> View this message in context: >> http://www.nabble.com/run-error-tf2224917.html#a6165202 >> Sent from the ServiceMix - User forum at Nabble.com. >> >> > > > -- > Cheers, > Guillaume Nodet
-- Cheers, Guillaume Nodet
