so, saga previous question here: javax.mail.nosuchproviderexception: when using liberty 8.5.5.9 apache commons email 1.4 i've had have conflicts between apache commons email , websphere liberty feature javamail 1.5 feature i've solved defining app's jars loading first using <classloader delegation="parentlast" />
.
everything worked fine until i've started implement fileupload, using jax-rs 2.0 described in tutorial configuring resource receive multipart/form-data parts html form submission in jax-rs 2.0
when code reaches following line: stream = datahandler.getinputstream();
stream
type of inputstream
i.e. i'm trying datahandler
object throws exception:
[error ] error occurred during error handling, give up! loader constraint violation: loader (instance of com/ibm/ws/classloading/internal/parentlastclassloader) initiated loading different type name "javax/activation/datahandler" [error ] srve0777e: exception thrown application class 'org.apache.cxf.interceptor.abstractfaultchaininitiatorobserver.onmessage:116' java.lang.runtimeexception: org.apache.cxf.interceptor.fault: loader constraint violation: loader (instance of com/ibm/ws/classloading/internal/parentlastclassloader) initiated loading different type name "javax/activation/datahandler" @ org.apache.cxf.interceptor.abstractfaultchaininitiatorobserver.onmessage(abstractfaultchaininitiatorobserver.java:116) @ [internal classes] caused by: org.apache.cxf.interceptor.fault: loader constraint violation: loader (instance of com/ibm/ws/classloading/internal/parentlastclassloader) initiated loading different type name "javax/activation/datahandler" @ org.apache.cxf.service.invoker.abstractinvoker.createfault(abstractinvoker.java:163) ... 1 more caused by: java.lang.linkageerror: loader constraint violation: loader (instance of com/ibm/ws/classloading/internal/parentlastclassloader) initiated loading different type name "javax/activation/datahandler" @ java.lang.classloader.defineclass1(native method) @ java.lang.classloader.defineclass(classloader.java:760) @ com.ibm.ws.classloading.internal.appclassloader.definepackageandclass(appclassloader.java:327) @ [internal classes] @ ****.eventsapi.handleuploadedeventform(eventsapi.java:174) @ ****.eventsapi.postformdata(eventsapi.java:114) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:497) @ com.ibm.ws.jaxrs20.server.libertyjaxrsserverfactorybean.performinvocation(libertyjaxrsserverfactorybean.java:636) ... 1 more
and indeed there's datahandler
object part of apache commons email , datahandler
in ibm's implementation of iattachment
see javadoc, , conflicting.
so, how can resolved? can resolved through configuration? writing custom classloader isn't acceptable solution.
update: isn't clear question have 2 stages, 1 when i'm using <classloader delegation="parentlast" />
mailing work fileupload doesn't work , without <classloader delegation="parentlast" />
mailing doesn't work fileuploading work. when deploy app on liberty 8.5.5.7 or 8.5.5.8 works fine, problem exists 8.5.5.9
actually i've find workaround issue.
first of i've changed scope <scope>provided</scope>
of included dependencies has library. once again, used library send emails, depend on:
<dependency> <groupid>org.apache.commons</groupid> <artifactid>commons-email</artifactid> <version>1.4</version> <scope>provided</scope> </dependency> <dependency> <groupid>commons-io</groupid> <artifactid>commons-io</artifactid> <version>2.4</version> <scope>provided</scope> </dependency>
so parent application required supply required dependencies, common-emails
, commons-io
. commons-io
i've added through parent's pom.xml
regarding commons-email
i've installed feature javamail-1.5 explicitly has library. i've removed: <classloader delegation="parentlast" />
the 1 question remained unanswered why did conflict before? if provide more detailed explanation it'll great.
Comments
Post a Comment