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 <[email protected]> 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 <[email protected]>
> 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]
>>
>