Hi Greg,

Did you try troubleshooting this using the "Tip" in the Javadocs for the
DocumentBuilderFactory class (add -Djaxp.debug=1 to the "java" command line)? 

-Marshall

On 9/24/2012 6:46 PM, Greg Holmberg wrote:
> Hi UIMA users-- 
>
>
> When I use PEAR files, the XML parser can't find it's DocumentBuilderFactory. 
> I think it's a ClassLoader issue. Has anyone else seen this? 
>
> I install the PEAR as described in the docs: 
>
>     PackageBrowser pkg = PackageInstaller.installPackage(myDir, pearFile, 
> false); 
>
>     String pearDescPath = pkg.getComponentPearDescPath(); 
>
>     ResourceSpecifier specifier = 
>         UIMAFramework.getXMLParser().parseResourceSpecifier( 
>             new XMLInputSource(pearDescPath)); 
>
>     ResourceManager resmgr = getResourceManager(); 
>
>     AnalysisEngine engine = UIMAFramework.produceAnalysisEngine(specifier, 
> resmgr, params); 
>
> My PEAR includes TikaAnnotator, and I get the exception shown at the end of 
> this email. Summary: TikaConfig asks for an XML parser, but the system can't 
> find one. 
>
> Outside the analysis engine, it's possible to find an implementation of 
> DocumentBuilderFactory, but inside it seems that the ClassLoader in use 
> doesn't have one. 
>
> javax.xml.parsers.DocumentBuilderFactory.newInstance() has a complicated way 
> of finding the implementation (quoting the JavaDoc):
>
> =======================
>
>     Obtain a new instance of a DocumentBuilderFactory. This static method 
> creates a new factory instance. This method
>     uses the following ordered lookup procedure to determine the 
> DocumentBuilderFactory implementation class to load:
>
>     * Use the javax.xml.parsers.DocumentBuilderFactory system property.
>     * Use the properties file "lib/jaxp.properties" in the JRE directory. 
> This configuration file is in standard java.util.Properties format and 
> contains the fully qualified name of the implementation class with the key 
> being the system property defined above. The jaxp.properties file is read 
> only once by the JAXP implementation and it's values are then cached for 
> future use. If the file does not exist when the first attempt is made to read 
> from it, no further attempts are made to check for its existence. It is not 
> possible to change the value of any property in jaxp.properties after it has 
> been read for the first time.
>     *  Use the Services API (as detailed in the JAR specification), if 
> available, to determine the classname. The Services API will look for a 
> classname in the file 
> META-INF/services/javax.xml.parsers.DocumentBuilderFactory in jars available 
> to the runtime.
>     * Platform default DocumentBuilderFactory instance.
>
> =========================
>
> So it seems like the ClassLoader used in the analysis engine prevents 
> DocumentBuilderFactory from finding even the platform default implementation.
>
> Does anyone know how to work around this?  Add something to my 
> metadata/install.xml file perhaps?
>
> Thanks,
>
>
> Greg Holmberg
>
>
>
> org.apache.uima.resource.ResourceInitializationException: Error initializing 
> "org.apache.uima.analysis_engine.impl.PearAnalysisEngineWrapper" from 
> descriptor 
> file:/tmp/taservice/pear/SAPAnalysisEngine/SAPAnalysisEngine_pear.xml. 
> at 
> org.apache.uima.util.SimpleResourceFactory.produceResource(SimpleResourceFactory.java:144)
>  
> at 
> org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
>  
> at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:269) 
> at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:314) 
> at 
> org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:425) 
> at 
> com.sap.taservice.controller.UimaPipeline.createAnalysisEngine(UimaPipeline.java:343)
>  
> at com.sap.taservice.controller.UimaPipeline.execute(UimaPipeline.java:151) 
> at com.sap.taservice.controller.TAServiceWork.execute(TAServiceWork.java:44) 
> at com.sap.job.impl.TaskImpl.execute(TaskImpl.java:104) 
> at 
> com.sap.taservice.job.impl.remote.RemoteWorker.iteration(RemoteWorker.java:52)
>  
> at com.sap.util.DaemonRunnable.run(DaemonRunnable.java:117) 
> at java.lang.Thread.run(Thread.java:662) 
> Caused by: javax.xml.parsers.FactoryConfigurationError: Provider for 
> javax.xml.parsers.DocumentBuilderFactory cannot be found 
> at javax.xml.parsers.DocumentBuilderFactory.newInstance(Unknown Source) 
> at org.apache.tika.config.TikaConfig.getBuilder(TikaConfig.java:228) 
> at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:66) 
> at org.apache.uima.tika.MarkupAnnotator.initialize(MarkupAnnotator.java:96) 
> at 
> org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initializeAnalysisComponent(PrimitiveAnalysisEngine_impl.java:252)
>  
> at 
> org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initialize(PrimitiveAnalysisEngine_impl.java:158)
>  
> at 
> org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
>  
> at 
> org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
>  
> at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:269) 
> at 
> org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:387) 
> at org.apache.uima.analysis_engine.asb.impl.ASB_impl.setup(ASB_impl.java:255) 
> at 
> org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initASB(AggregateAnalysisEngine_impl.java:429)
>  
> at 
> org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initializeAggregateAnalysisEngine(AggregateAnalysisEngine_impl.java:373)
>  
> at 
> org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initialize(AggregateAnalysisEngine_impl.java:186)
>  
> at 
> org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
>  
> at 
> org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
>  
> at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:269) 
> at org.apache.uima.internal.util.ResourcePool.fillPool(ResourcePool.java:243) 
> at org.apache.uima.internal.util.ResourcePool.<init>(ResourcePool.java:100) 
> at 
> org.apache.uima.internal.util.AnalysisEnginePool.<init>(AnalysisEnginePool.java:91)
>  
> at 
> org.apache.uima.analysis_engine.impl.MultiprocessingAnalysisEngine_impl.initialize(MultiprocessingAnalysisEngine_impl.java:118)
>  
> at 
> org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
>  
> at 
> org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
>  
> at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:269) 
> at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:314) 
> at 
> org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:425) 
> at 
> org.apache.uima.analysis_engine.impl.PearAnalysisEngineWrapper.initialize(PearAnalysisEngineWrapper.java:269)
>  
> at 
> org.apache.uima.util.SimpleResourceFactory.produceResource(SimpleResourceFactory.java:123)
>  
> ... 11 more 
>
>

Reply via email to