You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@uima.apache.org by Uli Held <ul...@germanistik.uni-freiburg.de> on 2011/09/29 17:20:02 UTC

Simple Server

Hi,

I'm trying to use SimpleServer to create a Website, that uses NLP services. Unfortunately I can't get past the PEAR installation process of the SimpleServerServlet. For the tokenizer I use a resource binding which is located in root/resources and I just can't get the PackageInstaller to find the this file no matter what I write into the CLASSPATH. Running the component form the installed PEAR file is no problem.
I would appreciate it greatly if someone could point me in the right direction.

Best regards,
Uli

The error log:

UIMA Simple Service configuaration failed
org.apache.uima.pear.tools.PackageInstallerException: The following error occurred during the installation verification of component ScienceDays: org.apache.uima.resource.ResourceInitializationException: Error initializing "org.apache.uima.resource.impl.DataResource_impl" from descriptor file:/Users/uliheld/Daten/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work/Catalina/localhost/NLPipe-Server/ScienceDays/desc/annotators/TokenizerDescriptor.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:267)
	at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:241)
	at org.apache.uima.resource.impl.ResourceManager_impl.registerResource(ResourceManager_impl.java:546)
	at org.apache.uima.resource.impl.ResourceManager_impl.initializeExternalResources(ResourceManager_impl.java:423)
	at org.apache.uima.resource.Resource_ImplBase.initialize(Resource_ImplBase.java:146)
	at org.apache.uima.analysis_engine.impl.AnalysisEngineImplBase.initialize(AnalysisEngineImplBase.java:157)
	at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initialize(PrimitiveAnalysisEngine_impl.java:125)
	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:267)
	at org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:361)
	at org.apache.uima.analysis_engine.asb.impl.ASB_impl.setup(ASB_impl.java:254)
	at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initASB(AggregateAnalysisEngine_impl.java:431)
	at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initializeAggregateAnalysisEngine(AggregateAnalysisEngine_impl.java:375)
	at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initialize(AggregateAnalysisEngine_impl.java:185)
	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:267)
	at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:312)
	at org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:392)
	at org.apache.uima.pear.tools.InstallationTester.testAnalysisEngine(InstallationTester.java:218)
	at org.apache.uima.pear.tools.InstallationTester.doTest(InstallationTester.java:113)
	at org.apache.uima.pear.tools.InstallationController.verifyComponentInstallation(InstallationController.java:1114)
	at org.apache.uima.pear.tools.InstallationController.verifyComponent(InstallationController.java:1997)
	at org.apache.uima.pear.tools.PackageInstaller.installPackage(PackageInstaller.java:268)
	at org.apache.uima.pear.tools.PackageInstaller.installPackage(PackageInstaller.java:99)
	at org.apache.uima.pear.tools.PackageInstaller.installPackage(PackageInstaller.java:67)
	at org.apache.uima.simpleserver.Service.loadPear(Service.java:294)
	at org.apache.uima.simpleserver.Service.configurePear(Service.java:141)
	at org.apache.uima.simpleserver.servlet.SimpleServerServlet.initServer(SimpleServerServlet.java:282)
	at org.apache.uima.simpleserver.servlet.SimpleServerServlet.init(SimpleServerServlet.java:233)
	at javax.servlet.GenericServlet.init(GenericServlet.java:212)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
	at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:809)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:680)
Caused by: org.apache.uima.resource.ResourceInitializationException: Could not access the resource data at file:german_abbreviations.txt.
	at org.apache.uima.resource.impl.DataResource_impl.initialize(DataResource_impl.java:126)
	at org.apache.uima.util.SimpleResourceFactory.produceResource(SimpleResourceFactory.java:123)
	... 45 more

	at org.apache.uima.pear.tools.PackageInstaller.installPackage(PackageInstaller.java:277)
	at org.apache.uima.pear.tools.PackageInstaller.installPackage(PackageInstaller.java:99)
	at org.apache.uima.pear.tools.PackageInstaller.installPackage(PackageInstaller.java:67)
	at org.apache.uima.simpleserver.Service.loadPear(Service.java:294)
	at org.apache.uima.simpleserver.Service.configurePear(Service.java:141)
	at org.apache.uima.simpleserver.servlet.SimpleServerServlet.initServer(SimpleServerServlet.java:282)
	at org.apache.uima.simpleserver.servlet.SimpleServerServlet.init(SimpleServerServlet.java:233)
	at javax.servlet.GenericServlet.init(GenericServlet.java:212)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
	at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:809)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:680)

Re: Simple Server

Posted by Thilo Götz <tw...@gmx.de>.
On 29/09/11 17:20, Uli Held wrote:
> Hi,
> 
> I'm trying to use SimpleServer to create a Website, that uses NLP services. Unfortunately I can't get past the PEAR installation process of the SimpleServerServlet. For the tokenizer I use a resource binding which is located in root/resources and I just can't get the PackageInstaller to find the this file no matter what I write into the CLASSPATH. Running the component form the installed PEAR file is no problem.
> I would appreciate it greatly if someone could point me in the right direction.

Do you have access to the source code of the pear you want to
run?  If so, a very simple way to fix this is to put the
dictionary into the jar file and load it with
getResourceAsStream().  That's what I usually do because
it doesn't get into this kind of situation ;-)

--Thilo

> 
> Best regards,
> Uli
> 
> The error log:
> 
> UIMA Simple Service configuaration failed
> org.apache.uima.pear.tools.PackageInstallerException: The following error occurred during the installation verification of component ScienceDays: org.apache.uima.resource.ResourceInitializationException: Error initializing "org.apache.uima.resource.impl.DataResource_impl" from descriptor file:/Users/uliheld/Daten/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work/Catalina/localhost/NLPipe-Server/ScienceDays/desc/annotators/TokenizerDescriptor.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:267)
> 	at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:241)
> 	at org.apache.uima.resource.impl.ResourceManager_impl.registerResource(ResourceManager_impl.java:546)
> 	at org.apache.uima.resource.impl.ResourceManager_impl.initializeExternalResources(ResourceManager_impl.java:423)
> 	at org.apache.uima.resource.Resource_ImplBase.initialize(Resource_ImplBase.java:146)
> 	at org.apache.uima.analysis_engine.impl.AnalysisEngineImplBase.initialize(AnalysisEngineImplBase.java:157)
> 	at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initialize(PrimitiveAnalysisEngine_impl.java:125)
> 	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:267)
> 	at org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:361)
> 	at org.apache.uima.analysis_engine.asb.impl.ASB_impl.setup(ASB_impl.java:254)
> 	at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initASB(AggregateAnalysisEngine_impl.java:431)
> 	at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initializeAggregateAnalysisEngine(AggregateAnalysisEngine_impl.java:375)
> 	at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initialize(AggregateAnalysisEngine_impl.java:185)
> 	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:267)
> 	at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:312)
> 	at org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:392)
> 	at org.apache.uima.pear.tools.InstallationTester.testAnalysisEngine(InstallationTester.java:218)
> 	at org.apache.uima.pear.tools.InstallationTester.doTest(InstallationTester.java:113)
> 	at org.apache.uima.pear.tools.InstallationController.verifyComponentInstallation(InstallationController.java:1114)
> 	at org.apache.uima.pear.tools.InstallationController.verifyComponent(InstallationController.java:1997)
> 	at org.apache.uima.pear.tools.PackageInstaller.installPackage(PackageInstaller.java:268)
> 	at org.apache.uima.pear.tools.PackageInstaller.installPackage(PackageInstaller.java:99)
> 	at org.apache.uima.pear.tools.PackageInstaller.installPackage(PackageInstaller.java:67)
> 	at org.apache.uima.simpleserver.Service.loadPear(Service.java:294)
> 	at org.apache.uima.simpleserver.Service.configurePear(Service.java:141)
> 	at org.apache.uima.simpleserver.servlet.SimpleServerServlet.initServer(SimpleServerServlet.java:282)
> 	at org.apache.uima.simpleserver.servlet.SimpleServerServlet.init(SimpleServerServlet.java:233)
> 	at javax.servlet.GenericServlet.init(GenericServlet.java:212)
> 	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
> 	at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:809)
> 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129)
> 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
> 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291)
> 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
> 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
> 	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
> 	at java.lang.Thread.run(Thread.java:680)
> Caused by: org.apache.uima.resource.ResourceInitializationException: Could not access the resource data at file:german_abbreviations.txt.
> 	at org.apache.uima.resource.impl.DataResource_impl.initialize(DataResource_impl.java:126)
> 	at org.apache.uima.util.SimpleResourceFactory.produceResource(SimpleResourceFactory.java:123)
> 	... 45 more
> 
> 	at org.apache.uima.pear.tools.PackageInstaller.installPackage(PackageInstaller.java:277)
> 	at org.apache.uima.pear.tools.PackageInstaller.installPackage(PackageInstaller.java:99)
> 	at org.apache.uima.pear.tools.PackageInstaller.installPackage(PackageInstaller.java:67)
> 	at org.apache.uima.simpleserver.Service.loadPear(Service.java:294)
> 	at org.apache.uima.simpleserver.Service.configurePear(Service.java:141)
> 	at org.apache.uima.simpleserver.servlet.SimpleServerServlet.initServer(SimpleServerServlet.java:282)
> 	at org.apache.uima.simpleserver.servlet.SimpleServerServlet.init(SimpleServerServlet.java:233)
> 	at javax.servlet.GenericServlet.init(GenericServlet.java:212)
> 	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
> 	at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:809)
> 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129)
> 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
> 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291)
> 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
> 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
> 	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
> 	at java.lang.Thread.run(Thread.java:680)

Re: Simple Server

Posted by Uli Held <ul...@germanistik.uni-freiburg.de>.
Hello Thilo, Hello Richard,

Thank you both for your replies. I've now indeed removed the resource binding from the descriptor and replaced it with an internal loading mechanism. The error is gone and everything works fine.

UimaFit seems to be a good workaround for a lot of problems that come with the descriptor system. It might be of great use to me in the future. So, thanks for mentioning it!

Best, Uli

Re: Simple Server

Posted by Richard Eckart de Castilho <ec...@tk.informatik.tu-darmstadt.de>.
Hello Uli,

> I'm trying to use SimpleServer to create a Website, that uses NLP services. Unfortunately I can't get past the PEAR installation process of the SimpleServerServlet. For the tokenizer I use a resource binding which is located in root/resources and I just can't get the PackageInstaller to find the this file no matter what I write into the CLASSPATH. Running the component form the installed PEAR file is no problem.
> I would appreciate it greatly if someone could point me in the right direction.

> The error log:
> 
> UIMA Simple Service configuaration failed
> org.apache.uima.pear.tools.PackageInstallerException: The following error occurred during the installation verification of component ScienceDays: org.apache.uima.resource.ResourceInitializationException: Error initializing "org.apache.uima.resource.impl.DataResource_impl" from descriptor file:/Users/uliheld/Daten/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work/Catalina/localhost/NLPipe-Server/ScienceDays/desc/annotators/TokenizerDescriptor.xml.
> 	at org.apache.uima.util.SimpleResourceFactory.produceResource(SimpleResourceFactory.java:144)
> ...
> Caused by: org.apache.uima.resource.ResourceInitializationException: Could not access the resource data at file:german_abbreviations.txt.
> 	at org.apache.uima.resource.impl.DataResource_impl.initialize(DataResource_impl.java:126)
> 	at org.apache.uima.util.SimpleResourceFactory.produceResource(SimpleResourceFactory.java:123)
> 	... 45 more

From this information I read that you have some external resource configured in the TokenizerDescriptor.xml with the URL "file:german_abbreviations.txt". You seem to run this in Eclipse using WTP on OS X, so the execution directory is likely to be "/Users/eclipse/Eclipse.app/Contents/MacOS". Since the URL is relative, this would result in UIMA trying to load the data from "/Users/eclipse/Eclipse.app/Contents/MacOS/german_abbreviations.txt".

I don't like PEARs too much, because they work with hard-coded paths... 

You could change the descriptor so that it loads from an absolute URL, like "file:/Users/uliheld/Daten/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work/Catalina/localhost/NLPipe-Server/ScienceDays/resources/german_abbreviations.txt".

Alternatively you could use programmatically create your descriptor at runtime and fill in the correct absolute path that you have resolved in any manner, e.g. by looking it up using getClass().getResource(). This can be done with UIMA or more conveniently with uimaFIT [1]. An example might look something along the lines of this.

  AnalysisEngineDescription tokenizer = AnalysisEngineFactory.createPrimitive(Tokenizer.class);
  ExternalResourceFactory.bindResource(tokenizer, "abbreviations", 
     AbbreviationsResource.class, getClass().getResource("/resources/german_abbreviations.txt"));
  SimplePipeline.runPipeline(reader, tokenizer, consumer);

Mind this is written from memory and I did not test it - assumes you configured the uimaFIT automatic typesystem detection, otherwise the typesystem needs to be loaded and provided as an additional parameter.

Best,

Richard

[1] http://code.google.com/p/uimafit/

-- 
------------------------------------------------------------------- 
Richard Eckart de Castilho
Technical Lead
Ubiquitous Knowledge Processing Lab 
FB 20 Computer Science Department      
Technische Universität Darmstadt 
Hochschulstr. 10, D-64289 Darmstadt, Germany 
phone [+49] (0)6151 16-7477, fax -5455, room S2/02/B117
eckartde@tk.informatik.tu-darmstadt.de 
www.ukp.tu-darmstadt.de 
Web Research at TU Darmstadt (WeRC) www.werc.tu-darmstadt.de
-------------------------------------------------------------------