The problem may come from the location of servicemix-components
in the classpath. As the missing class (org.apache.commons.net...)
is referenced from servicemix-components (from the
org.apache.servicemix.components.net.FTPClientPool class), the
JVM will try to load the dependant class from the same classloader
where the FTPClientPool class has been loaded. This means that
if you have the servicemix-components jar in the container classpath
(lib/optional for example), you need to put the commons-net jar in
the lib/optional folder, so that it is available from the same classloader.
This is unfortunately how the classloading mechanism works.
To work around, you need to remove the servicemix-components jar
from the container classloader and put it in your service unit using the
<location> tag.
On 10/13/06, moraleslos <[EMAIL PROTECTED]> wrote:
Ok, This must be the most frustrating thing I've encountered yet.
Seems like I can not load the commons-net jar using the <classpath> in
servicemix.xml alone. When debugging, I defined only one jar in my
servicemix.xml. It looks like this:
******************
<classpath>
<location>lib/commons-net-1.4.1.jar</location>
</classpath>
<bean id="ftpClientPool"
class="org.apache.servicemix.components.net.FTPClientPool">
<property name="host" value="homer012"/>
<property name="username" value="system"/>
<property name="password" value="*****"/>
<property name="binaryMode" value="true"/>
</bean>
.....
********************
I packaged my SA and SU like this:
*********************
test-sa.zip
-->test-su.zip
-->/META-INF
-->jbi.xml
test-su.zip
-->/lib
-->commons-net-1.4.1.jar
-->servicemix.xml
*********************
When I deployed my SA to servicemix, the service-assemblies directory looks
like this:
*********************
%servicemix_home%\data\smx\service-assemblies\test_sa\version_1\sus\servicemix-lwcontainer\test_sa
-->/lib
-->commons-net-1.4.1.jar
-->servicemix.xml
*********************
I verified the <classpath> defined in servicemix.xml in the exploded
directory and it has the location: lib/commons-net-1.4.1.jar
When I run servicemix, this is the exception that I get:
*****************************
09:13:22,581 | ERROR | Thread-9 | AutoDeploymentService |
ramework.AutoDeploymentService 308 | Failed to update Service Assembly:
test_sa
java.lang.Exception: <?xml version="1.0" encoding="UTF-8"?>
<jbi-task xmlns="http://java.sun.com/xml/ns/jbi/management-message"
version="1.0">
<jbi-task-result>
<frmwk-task-result>
<frmwk-task-result-details>
<task-result-details>
<task-id>deploy</task-id>
<task-result>FAILED</task-result>
<message-type>ERROR</message-type>
</task-result-details>
</frmwk-task-result-details>
</frmwk-task-result>
<component-task-result
xmlns="http://java.sun.com/xml/ns/jbi/management-message">
<component-name>servicemix-lwcontainer</component-name>
<component-task-result-details>
<task-result-details>
<task-id>deploy</task-id>
<task-result>FAILED</task-result>
<message-type>ERROR</message-type>
<task-status-msg>
<msg-loc-info>
<loc-token/>
<loc-message>Could not deploy xbean service unit</loc-message>
</msg-loc-info>
</task-status-msg>
<exception-info>
<nesting-level>1</nesting-level>
<msg-loc-info>
<loc-token/>
<loc-message>org.springframework.beans.factory.BeanDefinitionStoreException:
Unexpected exception parsing XML document from file
[C:\apache-servicemix-3.0-incubating\data\smx\service-assemblies\test_sa\version_1\sus\servicemix-lwcontainer\test_sa\servicemix.xml];
nested exception is
org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Error 'Class that bean class
[org.apache.servicemix.components.net.FTPClientPool] depends on not found'
in file
[C:\apache-servicemix-3.0-incubating\data\smx\service-assemblies\test_sa\version_1\sus\servicemix-lwcontainer\test_sa\servicemix.xml]
at:
Bean 'ftpClientPool'; nested exception is java.lang.NoClassDefFoundError:
org/apache/commons/net/SocketClient</loc-message>
<stack-trace><![CDATA[org.apache.xbean.kernel.ServiceRegistrationException:
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected
exception parsing XML document from file
[C:\apache-servicemix-3.0-incubating\data\smx\service-assemblies\test_sa\version_1\sus\servicemix-lwcontainer\test_sa\servicemix.xml];
nested exception is
org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Error 'Class that bean class
[org.apache.servicemix.components.net.FTPClientPool] depends on not found'
in file
[C:\apache-servicemix-3.0-incubating\data\smx\service-assemblies\test_sa\version_1\sus\servicemix-lwcontainer\test_sa\servicemix.xml]
at:
Bean 'ftpClientPool'; nested exception is java.lang.NoClassDefFoundError:
org/apache/commons/net/SocketClient
at
org.apache.xbean.kernel.standard.ServiceManagerRegistry.registerService(ServiceManagerRegistry.java:424)
at
org.apache.xbean.kernel.standard.StandardKernel.registerService(StandardKernel.java:220)
at
org.apache.xbean.server.spring.loader.SpringLoader.load(SpringLoader.java:154)
at
org.apache.servicemix.common.xbean.AbstractXBeanDeployer.deploy(AbstractXBeanDeployer.java:81)
at
org.apache.servicemix.common.BaseServiceUnitManager.doDeploy(BaseServiceUnitManager.java:88)
at
org.apache.servicemix.common.BaseServiceUnitManager.deploy(BaseServiceUnitManager.java:69)
at
org.apache.servicemix.jbi.framework.DeploymentService.deployServiceAssembly(DeploymentService.java:527)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.updateArchive(AutoDeploymentService.java:295)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService$2.run(AutoDeploymentService.java:592)
at
org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:291)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown
Source)
at java.lang.Thread.run(Thread.java:595)
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException:
Unexpected exception parsing XML document from file
[C:\apache-servicemix-3.0-incubating\data\smx\service-assemblies\test_sa\version_1\sus\servicemix-lwcontainer\test_sa\servicemix.xml];
nested exception is
org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Error 'Class that bean class
[org.apache.servicemix.components.net.FTPClientPool] depends on not found'
in file
[C:\apache-servicemix-3.0-incubating\data\smx\service-assemblies\test)sa\version_1\sus\servicemix-lwcontainer\test_sa\servicemix.xml]
at:
Bean 'ftpClientPool'; nested exception is java.lang.NoClassDefFoundError:
org/apache/commons/net/SocketClient
at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:423)
at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:360)
at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:335)
at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:126)
at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:142)
at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:168)
at
org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:113)
at
org.apache.xbean.spring.context.FileSystemXmlApplicationContext.loadBeanDefinitions(FileSystemXmlApplicationContext.java:168)
at
org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:94)
at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:294)
at
org.apache.xbean.server.spring.configuration.SpringConfiguration.<init>(SpringConfiguration.java:63)
at
org.apache.xbean.server.spring.configuration.SpringConfigurationServiceFactory.createService(SpringConfigurationServiceFactory.java:106)
at
org.apache.xbean.kernel.standard.ServiceManager.start(ServiceManager.java:420)
at
org.apache.xbean.kernel.standard.ServiceManager.initialize(ServiceManager.java:200)
at
org.apache.xbean.kernel.standard.RegistryFutureTask$RegisterCallable.call(RegistryFutureTask.java:110)
at
edu.emory.mathcs.backport.java.util.concurrent.FutureTask.run(FutureTask.java:176)
at
org.apache.xbean.kernel.standard.ServiceManagerRegistry.registerService(ServiceManagerRegistry.java:409)
... 11 more
Caused by:
org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Error 'Class that bean class
[org.apache.servicemix.components.net.FTPClientPool] depends on not found'
in file
[C:\apache-servicemix-3.0-incubating\data\smx\service-assemblies\test_sa\version_1\sus\servicemix-lwcontainer\test_sa\servicemix.xml]
at:
Bean 'ftpClientPool'; nested exception is java.lang.NoClassDefFoundError:
org/apache/commons/net/SocketClient
at
org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:56)
at
org.springframework.beans.factory.support.ReaderContext.error(ReaderContext.java:74)
at
org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.error(BeanDefinitionParserDelegate.java:1181)
at
org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseBeanDefinitionElement(BeanDefinitionParserDelegate.java:552)
at
org.apache.xbean.spring.context.v2b.XBeanBeanDefinitionParserDelegate.parseBeanDefinitionElement(XBeanBeanDefinitionParserDelegate.java:61)
at
org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseBeanDefinitionElement(BeanDefinitionParserDelegate.java:398)
at
org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseBeanDefinitionElement(BeanDefinitionParserDelegate.java:367)
at
org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseDefaultElement(DefaultBeanDefinitionDocumentReader.java:162)
at
org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:138)
at
org.apache.xbean.spring.context.v2.XBeanBeanDefinitionDocumentReader.parseBeanDefinitions(XBeanBeanDefinitionDocumentReader.java:39)
at
org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:93)
at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:496)
at
org.apache.xbean.spring.context.v2.XBeanXmlBeanDefinitionReader.registerBeanDefinitions(XBeanXmlBeanDefinitionReader.java:79)
at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:406)
... 27 more
Caused by: java.lang.NoClassDefFoundError:
org/apache/commons/net/SocketClient
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.createBeanDefinition(BeanDefinitionReaderUtils.java:95)
at
org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseBeanDefinitionElement(BeanDefinitionParserDelegate.java:452)
... 37 more
]]></stack-trace>
</msg-loc-info>
</exception-info>
</task-result-details>
</component-task-result-details>
</component-task-result>
</jbi-task-result>
</jbi-task>
at
org.apache.servicemix.jbi.framework.ManagementSupport.failure(ManagementSupport.java:121)
at
org.apache.servicemix.jbi.framework.ManagementSupport.failure(ManagementSupport.java:107)
at
org.apache.servicemix.jbi.framework.DeploymentService.deployServiceAssembly(DeploymentService.java:563)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.updateArchive(AutoDeploymentService.java:295)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService$2.run(AutoDeploymentService.java:592)
at
org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:291)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown
Source)
at java.lang.Thread.run(Thread.java:595)
*****************************************
If I stick the commons-net-1.4.1.jar file into the
%servicemix_home%\lib\optional directory (while removing the classpath
dependency from servicemix.xml), everything works fine. Am I missing
something here? BTW, this happens on ServiceMix 3.0 running on Windows XP
w/SP2. Any help would be appreciated. Thanks in advance.
-los
gnodet wrote:
>
> The first one works, as shown in several examples
> in servicemix distribution.
>
> On 10/12/06, moraleslos <[EMAIL PROTECTED]> wrote:
>>
>> ok, I guess the issue i'm having with this is when I have more than one
>> dependency. I can get it working with the example you described, but
>> when I
>> need more than 1 jar, how do I declare this? For example, these don't
>> work:
>> <classpath>
>> <location>lib/commons-net-1.4.1.jar</location>
>> <location>lib/jaxen-1.1-beta-11.jar</location>
>> </classpath>
>>
>>
>> <classpath>
>>
>> <location>lib/commons-net-1.4.1.jar;lib/jaxen-1.1-beta-11.jar</location>
>> </classpath>
>>
>>
>> <classpath>
>>
>> <location>lib/commons-net-1.4.1.jar,lib/jaxen-1.1-beta-11.jar</location>
>> </classpath>
>>
>>
>> <classpath>
>> <location>lib/*.jar</location>
>> </classpath>
>>
>>
>> So how do I configure the multiple dependencies in the servicemix.xml
>> file?
>> Thanks.
>>
>> -los
>>
>>
>>
>> gnodet wrote:
>> >
>> > You should bundle these jars in the SU.
>> > In addition you currently need to specify
>> > these jars in the servicemix.xml file
>> > in your SU using:
>> > <classpath>
>> > <location>lib/commons-net-1.4.1.jar</location>
>> > </classpath>
>> >
>> > On 10/9/06, moraleslos <[EMAIL PROTECTED]> wrote:
>> >>
>> >> Hi,
>> >>
>> >> I'm finally coming along with my first SA deployment. My question is
>> >> that
>> >> I'm currently trying to run my FTPPoller class but there are some
>> >> dependencies that need to be addressed, i.e.
>> >> org/apache/commons/net/SocketClient, etc. I've been dropping these
>> >> dependent jars into the %servicemix_home%/lib/optional directory.
>> >> Instead
>> >> of doing this, can I just package the dependent jars inside the SA (or
>> >> the
>> >> SU) itself, e.g.:
>> >>
>> >> test-sa.zip
>> >> -->/lib
>> >> -->commons-net-1.4.1.jar
>> >> -->/META-INF
>> >> -->jbi.xml
>> >> -->test-su.zip
>> >>
>> >> Thanks in advance.
>> >>
>> >> -los
>> >> --
>> >> View this message in context:
>> >>
>> http://www.nabble.com/class-dependencies-in-SA--tf2412903.html#a6725809
>> >> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>> >>
>> >>
>> >
>> >
>> > --
>> > Cheers,
>> > Guillaume Nodet
>> >
>> >
>>
>> --
>> View this message in context:
>> http://www.nabble.com/class-dependencies-in-SA--tf2412903.html#a6785645
>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>
>>
>
>
> --
> Cheers,
> Guillaume Nodet
>
>
--
View this message in context:
http://www.nabble.com/class-dependencies-in-SA--tf2412903.html#a6796889
Sent from the ServiceMix - User mailing list archive at Nabble.com.
--
Cheers,
Guillaume Nodet