[ 
https://issues.apache.org/jira/browse/SQOOP-1821?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14233373#comment-14233373
 ] 

Jarek Jarcec Cecho commented on SQOOP-1821:
-------------------------------------------

Tomcat is doing a lot of hairy stuff with classpath, so I'm not that surprised 
that we might be having troubles to load additional connectors correctly. That 
is probably something that we should have looked into before :-/

Here is my guess why altering {{common.loader}} in Tomcat configuration is not 
working. We're loading connectors by exploring [our own 
{{ClassLoader}}|https://github.com/apache/sqoop/blob/sqoop2/core/src/main/java/org/apache/sqoop/connector/ConnectorManagerUtils.java#L44],
 but the {{common.loader}} is one of the parent {{ClassLoader}} and I'm not 
sure whether the call {{getResources()}} is recursively trying to search the 
parent {{ClassLoader}} as well. If my guess is correct then I doubt that we 
have good way how to load extra connectors without doing code changes or 
putting the extra connectors directly into our war archive.

If the {{getResource()}} call is not recursive, then we could perhaps try to 
traverse {{ClassLoader}} chain ourselves. I'm afraid that it might not work 
correctly though as I would expect that instantiating connector from parent 
{{ClassLoader}} will fail on missing dependencies that are in the child 
{{ClassLoader}} and hence they are not available. I've dealt with similar 
issues back in SQOOP-1232 when I was introducing the tools.

Another option might be to provide configuration property that will contain 
list of file system paths that Sqoop should actively search for jar files that 
are valid connectors. This way we could simply load the jars ourselves to the 
correct {{ClassLoader}} and be "done" with it (in addition to the current way 
of exploring Classpath).

I'm pretty sure that there are other ways how to go about it, so don't hesitate 
to add your own suggestion!



> DOC: Add instructions on how-to create a external connector and make it work 
> in Sqoop
> -------------------------------------------------------------------------------------
>
>                 Key: SQOOP-1821
>                 URL: https://issues.apache.org/jira/browse/SQOOP-1821
>             Project: Sqoop
>          Issue Type: Bug
>    Affects Versions: 1.99.5
>            Reporter: Veena Basavaraj
>             Fix For: 1.99.5
>
>
> Edit this wiki to begin with
> https://cwiki.apache.org/confluence/display/SQOOP/Setting+up+Sqoop+2#SettingupSqoop2-InstallinganewconnectortoSqoop2
> Also, add the same to the .rst of need be
> relevant code that loads all connectors 
> https://github.com/apache/sqoop/blob/sqoop2/core/src/main/java/org/apache/sqoop/connector/ConnectorManagerUtils.java#L44
> NOTE : External contributors had issues with getting a new sqoop connector 
> working seamlessly with the Sqoop2. They had to do some hacks to include this 
> new jar into the class path. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to