Hello !

I have an oozie workflow with a java action.
In this java action, I need the following version of httpclient and
httpcore :
- httpclient : 4.4
- httpcore : 4.4

I found that in the oozie sharelibs, only the hive2 folder has these
versions of httpclient and httpcore.
So I added to my workflow the following property :
oozie.action.sharelib.for.java=hive2

It solved the first part of my problem with httpclient but did not with
httpcore.
When I check the classpath, I can see two versions for each lib httpcore
and httpclient :
- httpclient : 4.2.5 and 4.4
- httpcore : 4.2.5 and 4.4

By some chances, the httpclient-4.4 is loaded first, so it solved my
problem with httpclient.
But unfortunately, httpcore-4.2.5 is loaded before the version 4.4, so I
got an error message :
###
Failing Oozie Launcher, Main class
[org.apache.oozie.action.hadoop.JavaMain], main() threw exception,
java.lang.NoSuchFieldError: INSTANCE
org.apache.oozie.action.hadoop.JavaMainException:
java.lang.NoSuchFieldError: INSTANCE
###

I didn't find neither the httpclient-4.2.5 nor the httpcore 4.2.5 in hive2
folder of oozie sharelib.
But I found them in the oozie folder of oozie sharelib.

And when we do java action in oozie workflow, the oozie folder is
automatically loaded in the classpath.

My questions are the following :
1. Am I right ? Is the oozie folder of the oozie sharelibs loaded in the
classpath in case of a java action ?
2. How can I have the latest versions of the libs loaded first in my
classpath ?
3. Can I load in the classpath only the libs contained in hive2 folder ? If
yes, how ?
4. Can I safely replace the version 4.2.5 of httpclient and httpcore in the
oozie folder of the oozie sharelibs by the version 4.4 ?
5. Can I do that for all the folders of the oozie sharelibs ? Why do we
have different versions of libraries in each folder of the oozie sharelibs ?

Thank you in advanced for your help !

Best regards.

Morgrim.

Reply via email to