Bug 1044500

Summary: camel-ftp QS cannot be deployed - NoClassDefFoundError: Could not initialize class org.apache.commons.net.ftp.FTPClient
Product: [JBoss] JBoss Fuse Service Works 6 Reporter: Jiri Sedlacek <jsedlace>
Component: Build ProcessAssignee: Julian Coleman <jcoleman>
Status: CLOSED CURRENTRELEASE QA Contact: lvaskova
Severity: urgent Docs Contact:
Priority: unspecified    
Version: 6.0.0 GACC: apodhrad, atangrin, kbabo, oskutka, soa-p-jira
Target Milestone: ER8   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Bug Depends On:    
Bug Blocks: 999946    

Description Jiri Sedlacek 2013-12-18 13:09:03 UTC
after deployment of camel-ftp QS I have following exception in the server.log:

11:06:10,851 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-5) MSC000001: Failed to start service jboss.deployment.unit."switchyard-quickstart-camel-ftp-binding.jar".SwitchYardService: org.jboss.msc.service.StartException in service jboss.deployment.unit."switchyard-quickstart-camel-ftp-binding.jar".SwitchYardService: Failed to start service
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1767) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_40]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_40]
	at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_40]
Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.commons.net.ftp.FTPClient
	at org.apache.camel.component.file.remote.FtpEndpoint.createFtpClient(FtpEndpoint.java:130)
	at org.apache.camel.component.file.remote.FtpEndpoint.createRemoteFileOperations(FtpEndpoint.java:80)
	at org.apache.camel.component.file.remote.FtpEndpoint.buildConsumer(FtpEndpoint.java:60)
	at org.apache.camel.component.file.remote.RemoteFileEndpoint.createConsumer(RemoteFileEndpoint.java:87)
	at org.apache.camel.component.file.remote.RemoteFileEndpoint.createConsumer(RemoteFileEndpoint.java:34)
	at org.apache.camel.impl.EventDrivenConsumerRoute.addServices(EventDrivenConsumerRoute.java:65)
	at org.apache.camel.impl.DefaultRoute.onStartingServices(DefaultRoute.java:80)
	at org.apache.camel.impl.RouteService.warmUp(RouteService.java:133)
	at org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(DefaultCamelContext.java:2000)
	at org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:1928)
	at org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:1950)
	at org.apache.camel.impl.DefaultCamelContext.startRouteService(DefaultCamelContext.java:1827)
	at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:733)
	at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:1803)
	at org.apache.camel.impl.DefaultCamelContext.addRouteDefinitions(DefaultCamelContext.java:675)
	at org.apache.camel.impl.DefaultCamelContext.addRouteDefinition(DefaultCamelContext.java:680)
	at org.switchyard.component.camel.common.handler.InboundHandler.<init>(InboundHandler.java:67)
	at org.switchyard.component.camel.common.deploy.BaseBindingActivator.createInboundHandler(BaseBindingActivator.java:51)
	at org.switchyard.component.camel.common.deploy.BaseBindingActivator.activateBinding(BaseBindingActivator.java:43)
	at org.switchyard.deploy.internal.Deployment.deployServiceBindings(Deployment.java:618)
	at org.switchyard.deploy.internal.Deployment.start(Deployment.java:145)
	at org.switchyard.as7.extension.deployment.SwitchYardDeployment.start(SwitchYardDeployment.java:101)
	at org.switchyard.as7.extension.services.SwitchYardService.start(SwitchYardService.java:73)
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]
	... 3 more

11:06:10,856 ERROR [org.jboss.as.server] (management-handler-thread - 13) JBAS015870: Deploy of deployment "switchyard-quickstart-camel-ftp-binding.jar" was rolled back with the following failure message: 
{"JBAS014671: Failed services" => {"jboss.deployment.unit.\"switchyard-quickstart-camel-ftp-binding.jar\".SwitchYardService" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"switchyard-quickstart-camel-ftp-binding.jar\".SwitchYardService: Failed to start service
    Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.commons.net.ftp.FTPClient"}}

Comment 1 Keith Babo 2013-12-18 13:50:52 UTC
I see a NCDF exception in my environment, but not for this class.  Root cause is the same though, I think.  The org.apache.commons.net module looks like this in SY community:

<module xmlns="urn:jboss:module:1.0" name="org.apache.commons.net">
  <resources>
    <resource-root path="commons-net-2.2.jar"/>
  </resources>
  <dependencies>
     <module name="javax.api"/>
  </dependencies>
</module>

And it looks like this in product:

<module xmlns="urn:jboss:module:1.0" name="org.apache.commons.net">
  <resources>
    <resource-root path="commons-net-2.2.jar"/>
  </resources>
  <dependencies>
  </dependencies>
</module>

Not sure why the dependency is getting stripped out in product, but I wonder if this is a module that's being overwritten with the drools/jbpm modularization?  In any case, moving this to build process as I think moving to the SY modules will address this in ER8.

Comment 2 Keith Babo 2013-12-18 13:54:52 UTC
*** Bug 1044481 has been marked as a duplicate of this bug. ***

Comment 3 Keith Babo 2013-12-18 13:56:14 UTC
Forgot to mention that this QS works in community with the SY modules and also works with ER7 if I add the missing dependency on javax.api to org.apache.commons.net.

Comment 5 Keith Babo 2013-12-20 20:08:34 UTC
Checked ER8 and the module definition is correct.  Please re-test.

Comment 6 lvaskova 2014-01-08 14:49:11 UTC
Verified in ER8