Google Driver Parse Exception

  • 7016652
  • 06-Jul-2015
  • 06-Jul-2015

Environment


Novell Identity Manager 4.5
GoogleApps Driver 4.1.0.0

Situation

When attempting to start the Google Apps Driver the following exception is received.

 <status level="fatal" type="driver-status">
     <description>com.google.gdata.util.ParseException: Feature: http://xml.org/sax/features/external-general-entities</description>
     <exception class-name="com.google.gdata.util.ParseException">
       <message>Feature: http://xml.org/sax/features/external-general-entities</message>
       <stack-trace>com.google.gdata.util.ParseException: Feature: http://xml.org/sax/features/external-general-entities
    at com.google.gdata.util.XmlParser.parse(XmlParser.java:712)
    at com.google.gdata.util.XmlParser.parse(XmlParser.java:585)
[07/06/2015 9:04:02.801]     at com.google.gdata.data.BaseFeed.parseAtom(BaseFeed.java:867)
    at com.google.gdata.wireformats.input.AtomDataParser.parse(AtomDataParser.java:68)
    at com.google.gdata.wireformats.input.AtomDataParser.parse(AtomDataParser.java:39)
    at com.google.gdata.wireformats.input.CharacterParser.parse(CharacterParser.java:100)
    at com.google.gdata.wireformats.input.XmlInputParser.parse(XmlInputParser.java:52)
    at com.google.gdata.wireformats.input.AtomDualParser.parse(AtomDualParser.java:66)
    at com.google.gdata.wireformats.input.AtomDualParser.parse(AtomDualParser.java:34)
    at com.google.gdata.client.Service.parseResponseData(Service.java:2165)
    at com.google.gdata.client.Service.parseResponseData(Service.java:2098)
    at com.google.gdata.client.Service.getFeed(Service.java:1136)
    at com.google.gdata.client.Service.getFeed(Service.java:998)
    at com.google.gdata.client.GoogleService.getFeed(GoogleService.java:645)
    at com.novell.nds.dirxml.driver.gmailshim.DirectoryAppClient.retrieveAllContacts(DirectoryAppClient.java:2919)
    at com.novell.nds.dirxml.driver.gmailshim.GMailDriverShim.init(GMailDriverShim.java:684)
    at com.novell.nds.dirxml.engine.Driver.startShim(Driver.java:1465)
    at com.novell.nds.dirxml.engine.Driver.initialize(Driver.java:283)
    at com.novell.nds.dirxml.engine.Driver.&lt;init>(Driver.java:249)
    at com.novell.nds.dirxml.engine.DriverEntry.run(DriverEntry.java:586)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.xml.sax.SAXNotSupportedException: Feature: http://xml.org/sax/features/external-general-entities
    at org.apache.crimson.parser.XMLReaderImpl.setFeature(XMLReaderImpl.java:202)
    at org.apache.crimson.jaxp.SAXParserImpl.setFeatures(SAXParserImpl.java:143)
[07/06/2015 9:04:02.801]     at org.apache.crimson.jaxp.SAXParserImpl.&lt;init>(SAXParserImpl.java:126)
    at org.apache.crimson.jaxp.SAXParserFactoryImpl.newSAXParserImpl(SAXParserFactoryImpl.java:113)
    at org.apache.crimson.jaxp.SAXParserFactoryImpl.setFeature(SAXParserFactoryImpl.java:141)
    at com.google.gdata.util.common.xml.parsing.SecureGenericXMLFactory$SecureSAXParserFactory.&lt;init>(SecureGenericXMLFactory.java:106)
    at com.google.gdata.util.common.xml.parsing.SecureGenericXMLFactory.getSAXParserFactory(SecureGenericXMLFactory.java:51)
    at com.google.gdata.util.XmlParser.getSAXParserFactory(XmlParser.java:90)
    at com.google.gdata.util.XmlParser.parse(XmlParser.java:688)
    ... 20 more
</stack-trace>
     </exception>
     <exception class-name="org.xml.sax.SAXNotSupportedException">
       <message>Feature: http://xml.org/sax/features/external-general-entities</message>
       <stack-trace>org.xml.sax.SAXNotSupportedException: Feature: http://xml.org/sax/features/external-general-entities
    at org.apache.crimson.parser.XMLReaderImpl.setFeature(XMLReaderImpl.java:202)
    at org.apache.crimson.jaxp.SAXParserImpl.setFeatures(SAXParserImpl.java:143)
    at org.apache.crimson.jaxp.SAXParserImpl.&lt;init>(SAXParserImpl.java:126)
    at org.apache.crimson.jaxp.SAXParserFactoryImpl.newSAXParserImpl(SAXParserFactoryImpl.java:113)
    at org.apache.crimson.jaxp.SAXParserFactoryImpl.setFeature(SAXParserFactoryImpl.java:141)
    at com.google.gdata.util.common.xml.parsing.SecureGenericXMLFactory$SecureSAXParserFactory.&lt;init>(SecureGenericXMLFactory.java:106)
    at com.google.gdata.util.common.xml.parsing.SecureGenericXMLFactory.getSAXParserFactory(SecureGenericXMLFactory.java:51)
[07/06/2015 9:04:02.801]     at com.google.gdata.util.XmlParser.getSAXParserFactory(XmlParser.java:90)
    at com.google.gdata.util.XmlParser.parse(XmlParser.java:688)
    at com.google.gdata.util.XmlParser.parse(XmlParser.java:585)
    at com.google.gdata.data.BaseFeed.parseAtom(BaseFeed.java:867)
    at com.google.gdata.wireformats.input.AtomDataParser.parse(AtomDataParser.java:68)
    at com.google.gdata.wireformats.input.AtomDataParser.parse(AtomDataParser.java:39)
    at com.google.gdata.wireformats.input.CharacterParser.parse(CharacterParser.java:100)
    at com.google.gdata.wireformats.input.XmlInputParser.parse(XmlInputParser.java:52)
    at com.google.gdata.wireformats.input.AtomDualParser.parse(AtomDualParser.java:66)
    at com.google.gdata.wireformats.input.AtomDualParser.parse(AtomDualParser.java:34)
    at com.google.gdata.client.Service.parseResponseData(Service.java:2165)
    at com.google.gdata.client.Service.parseResponseData(Service.java:2098)
    at com.google.gdata.client.Service.getFeed(Service.java:1136)
    at com.google.gdata.client.Service.getFeed(Service.java:998)
    at com.google.gdata.client.GoogleService.getFeed(GoogleService.java:645)
    at com.novell.nds.dirxml.driver.gmailshim.DirectoryAppClient.retrieveAllContacts(DirectoryAppClient.java:2919)
    at com.novell.nds.dirxml.driver.gmailshim.GMailDriverShim.init(GMailDriverShim.java:684)
    at com.novell.nds.dirxml.engine.Driver.startShim(Driver.java:1465)
    at com.novell.nds.dirxml.engine.Driver.initialize(Driver.java:283)
    at com.novell.nds.dirxml.engine.Driver.&lt;init>(Driver.java:249)
    at com.novell.nds.dirxml.engine.DriverEntry.run(DriverEntry.java:586)
    at java.lang.Thread.run(Thread.java:745)
</stack-trace>
     </exception>

Resolution

The Google driver has a built in XML parser which will correct the problem. To solve the issue, it is necessary to enable the driver configuration parameter called "Override JAXP Factory?" also known as drvOverrideFactorySettings. This parameter should be changed to the value "true" to use the corrected XML parser, which will resolve the issue. This parameter has been present for many years in the driver configuration, but has only just recently been needed. As a result, it may be hidden on your driver.

Once you make the change, save and deploy the driver then attempt to start the driver.

Here is the setting in Designer



Here is the setting in iManager



If you cannot see this setting, then you may need to unhide it.   Edit the XML and change the hide true to false, then save and try to edit the setting again.