chemistry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Guendisch, Dieter" <dieter.guendi...@sap.com>
Subject Re: Jarhell
Date Mon, 16 Nov 2015 07:20:04 GMT
Hi Grant,

the first call looks like it is involving the current context classloader.
Note that you are in full control of that one (see e.g. http://docs.oracle.com/javase/jndi/tutorial/beyond/misc/classloader.html),
so you should be able to set it correctly or unset it completely to force OpenCMIS into the
second loadClass statement.

Regards,
Dieter




On 14/11/15 14:34, "Grant Ingersoll" <gsingers@apache.org> wrote:

>Debugging deeper, the issue is in the context class loaders in
>ClassLoaderUtil
>
>        try {
>            return loadClass(className, ccl);
>        } catch (ClassNotFoundException cnf) {
>            return loadClass(className, null);
>        }
>
>The second loadClass method there properly loads the class (when forced
>to), the first one is where the exception is occurring.
>
>
>
>
>On Sat, Nov 14, 2015 at 8:23 AM Grant Ingersoll <gsingers@apache.org> wrote:
>
>> But wait, there's more:
>>
>> Here's the code in question:
>>  XMLInputFactory factory;
>>
>>         try {
>>             // Woodstox is the only supported and tested StAX
>> implementation
>>             WstxInputFactory wstxFactory = (WstxInputFactory)
>> ClassLoaderUtil.loadClass(
>>                     "com.ctc.wstx.stax.WstxInputFactory").newInstance();
>>             wstxFactory.configureForSpeed();
>>
>>             factory = wstxFactory;
>>         } catch (Exception e) {
>>             // other StAX implementations may work, too
>>             factory = XMLInputFactory.newInstance();
>>
>>             try {
>>                 // for the SJSXP parser
>>                 factory.setProperty("reuse-instance", Boolean.FALSE);
>>             } catch (IllegalArgumentException ex) {
>>                 // ignore
>>             }
>>
>>             LOG.warn("Unsupported StAX parser: " +
>> factory.getClass().getName() + " (Exception: " + e.toString() + ")",
>>                     e);
>>         }
>>
>> The exception occurs in the try block and then we proceed into the catch
>> block, where factory = XMLInputFactory.newInstance() kicks in and works!
>>
>> Guess what StAX parser it loads?  Yep: com.ctc.wstx.stax.WstxInputFactory.
>> Go figure.  And everything works fine after that.
>>
>>
>>
>> On Sat, Nov 14, 2015 at 7:57 AM Grant Ingersoll <gsingers@apache.org>
>> wrote:
>>
>>> I know I must have some conflicting libraries somewhere on my classpath,
>>> but I'm wondering if anyone else has seen the exception below.  As you can
>>> see by the message, it is rather perplexing.  My classpath has 2 versions
>>> of woodstox on it: 4.4.0 (from CMIS) and 4.4.1 from somewhere else.  I am
>>> suspecting I have some classloader isolation issues (e.g. parent is loading
>>> one lib, child is loading a diff. one), but I thought I would ask to see if
>>> anyone else has seen it.
>>>
>>> Thanks,
>>> Grant
>>>
>>> 2015-11-14T07:51:26,440 - WARN  [qtp1496724653-21:XMLUtils@74] -
>>> {collectionId=alf, datasourceId=alf} - Unsupported StAX parser:
>>> com.ctc.wstx.stax.WstxInputFactory (Exception:
>>> java.lang.ClassCastException: com.ctc.wstx.stax.WstxInputFactory cannot be
>>> cast to com.ctc.wstx.stax.WstxInputFactory)
>>>
>>> java.lang.ClassCastException: com.ctc.wstx.stax.WstxInputFactory cannot
>>> be cast to com.ctc.wstx.stax.WstxInputFactory
>>>
>>> at
>>> org.apache.chemistry.opencmis.commons.impl.XMLUtils.<clinit>(XMLUtils.java:58)
>>> [chemistry-opencmis-commons-impl-0.13.0.jar:0.13.0]
>>>
>>> at
>>> org.apache.chemistry.opencmis.client.bindings.spi.atompub.AtomPubParser.parse(AtomPubParser.java:98)
>>> [chemistry-opencmis-client-bindings-0.13.0.jar:0.13.0]
>>>
>>> at
>>> org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.parse(AbstractAtomPubService.java:620)
>>> [chemistry-opencmis-client-bindings-0.13.0.jar:0.13.0]
>>>
>>> at
>>> org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.getRepositoriesInternal(AbstractAtomPubService.java:809)
>>> [chemistry-opencmis-client-bindings-0.13.0.jar:0.13.0]
>>>
>>> at
>>> org.apache.chemistry.opencmis.client.bindings.spi.atompub.RepositoryServiceImpl.getRepositoryInfos(RepositoryServiceImpl.java:65)
>>> [chemistry-opencmis-client-bindings-0.13.0.jar:0.13.0]
>>>
>>> at
>>> org.apache.chemistry.opencmis.client.bindings.impl.RepositoryServiceImpl.getRepositoryInfos(RepositoryServiceImpl.java:90)
>>> [chemistry-opencmis-client-bindings-0.13.0.jar:0.13.0]
>>>
>>> at
>>> org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl.getRepositories(SessionFactoryImpl.java:135)
>>> [chemistry-opencmis-client-impl-0.13.0.jar:0.13.0]
>>>
>>> at
>>> org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl.getRepositories(SessionFactoryImpl.java:112)
>>> [chemistry-opencmis-client-impl-0.13.0.jar:0.13.0]
>>>
>>
Mime
View raw message