Hi year. OpenNLP models need to be loaded in-memory. So getting OOM when loading a model is something that can be a reason for that.
I think Tomcat accepts environment parameter from CATALINA_OPTS. So setting export CATALINA_OPTS="-server -Xmx1g -XX:MaxPermSize=256m" should do the trick best Rupert On Fri, Jun 29, 2012 at 7:06 PM, <[email protected]> wrote: > Hi Rupert, > > we have the problem only with the full-war launcher under tomcat6 and > seems related to a Java heap space exception. > The full standalone jar works fine. > In case the full stack is reported below. > > Bests. > Andrea > > org.apache.stanbol.enhancer.servicesapi.ChainException: Enhancement Chain > failed because of required Engine 'ner' failed with Message: Unable to > process ContentItem > '<urn:content-item-sha1-598f93b594a1aa790aba55c54d6cc550bb764f17>' with > Enhancement Engine 'ner' because the engine was unable to process the > content (Engine class: > org.apache.stanbol.enhancer.engines.opennlp.impl.NamedEntityExtractionEnhancementEngine)(Reason: > 'NEREngineCore' failed to process content item > 'urn:content-item-sha1-598f93b594a1aa790aba55c54d6cc550bb764f17' with type > 'text/plain': java.lang.IllegalStateException: Unable to create > TokenNameFinderModel for en-ner-person.bin!)! > at > org.apache.stanbol.enhancer.jobmanager.event.impl.EventJobManagerImpl.enhanceContent(EventJobManagerImpl.java:151) > at > org.apache.stanbol.enhancer.jersey.resource.AbstractEnhancerResource.enhance(AbstractEnhancerResource.java:232) > at > org.apache.stanbol.enhancer.jersey.resource.AbstractEnhancerUiResource.enhanceFromForm(AbstractEnhancerUiResource.java:126) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at > com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) > at > com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205) > at > com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) > at > com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288) > at > com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) > at > com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) > at > com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) > at > com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1483) > at > com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1414) > at > com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1363) > at > com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1353) > at > com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:414) > at > com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) > at > com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > at > org.apache.felix.http.base.internal.handler.ServletHandler.doHandle(ServletHandler.java:96) > at > org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:79) > at > org.apache.felix.http.base.internal.dispatch.ServletPipeline.handle(ServletPipeline.java:42) > at > org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:49) > at > org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33) > at > org.apache.stanbol.commons.httpqueryheaders.impl.QueryHeadersFilter.doFilter(QueryHeadersFilter.java:75) > at > org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88) > at > org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76) > at > org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47) > at > org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33) > at > org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:78) > at > org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47) > at > org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33) > at > org.apache.felix.http.base.internal.dispatch.FilterPipeline.dispatch(FilterPipeline.java:48) > at > org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:39) > at > org.apache.felix.http.base.internal.DispatcherServlet.service(DispatcherServlet.java:67) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > at > org.apache.felix.http.proxy.ProxyServlet.service(ProxyServlet.java:60) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > at > org.apache.sling.launchpad.base.webapp.SlingServletDelegate.service(SlingServletDelegate.java:278) > at > org.apache.sling.launchpad.webapp.SlingServlet.service(SlingServlet.java:174) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) > 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:298) > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) > at > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) > at > org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) > at java.lang.Thread.run(Thread.java:662) > Caused by: org.apache.stanbol.enhancer.servicesapi.EngineException: > 'NEREngineCore' failed to process content item > 'urn:content-item-sha1-598f93b594a1aa790aba55c54d6cc550bb764f17' with type > 'text/plain': java.lang.IllegalStateException: Unable to create > TokenNameFinderModel for en-ner-person.bin! > at > org.apache.stanbol.enhancer.engines.opennlp.impl.NEREngineCore.computeEnhancements(NEREngineCore.java:181) > at > org.apache.stanbol.enhancer.engines.opennlp.impl.NamedEntityExtractionEnhancementEngine.computeEnhancements(NamedEntityExtractionEnhancementEngine.java:164) > at > org.apache.stanbol.enhancer.jobmanager.event.impl.EnhancementJobHandler.processEvent(EnhancementJobHandler.java:239) > at > org.apache.stanbol.enhancer.jobmanager.event.impl.EnhancementJobHandler.handleEvent(EnhancementJobHandler.java:167) > at > org.apache.felix.eventadmin.impl.tasks.HandlerTaskImpl.execute(HandlerTaskImpl.java:88) > at > org.apache.felix.eventadmin.impl.tasks.SyncDeliverTasks.execute(SyncDeliverTasks.java:221) > at > org.apache.felix.eventadmin.impl.tasks.AsyncDeliverTasks$TaskExecuter.run(AsyncDeliverTasks.java:110) > at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown > Source) > ... 1 more > Caused by: java.lang.IllegalStateException: Unable to create > TokenNameFinderModel for en-ner-person.bin! > at > org.apache.stanbol.commons.opennlp.OpenNLP.initModel(OpenNLP.java:396) > at > org.apache.stanbol.commons.opennlp.OpenNLP.getNameModel(OpenNLP.java:109) > at > org.apache.stanbol.enhancer.engines.opennlp.impl.NEREngineCore.computeEnhancements(NEREngineCore.java:173) > ... 8 more > Caused by: java.lang.reflect.InvocationTargetException > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native > Method) > at > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) > at > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) > at java.lang.reflect.Constructor.newInstance(Constructor.java:513) > at > org.apache.stanbol.commons.opennlp.OpenNLP.initModel(OpenNLP.java:364) > ... 10 more > Caused by: java.lang.OutOfMemoryError: Java heap space > >> Hi Alberto >> >> This kind of Exception is only created if the model file is present, >> but it can not be accessed/loaded/instantiated. Can you please provide >> the full stack trace including the "caused by" exceptions. >> >> I had a similar problem once and it was because some proxy cause to >> send html instead of the model files what caused the downloaded models >> to be corrupted. Typically you can detect this by the file size. The >> >> >> data/opennlp/ner/en/src/main/resources/org/apache/stanbol/data/opennlp/en-ner-person.bin >> >> is "5.207.953 bytes" on my machine. You can also try to extract them >> as they are normal JAR files. >> >> In case you encounter corrupted files you will need to manually delete >> the models from >> >> {stanbol-source-code}/data/opennlp/ner/{lang}/src/main/resources >> {stanbol-source-code}/data/opennlp/lang/{lang}/src/main/resources >> >> Note that {lang} are the different language codes >> >> After that the models will be re-downloaded by the next build. BTW: >> OpenNLP models are currently downloaded for this mirror [1] if you >> want to check if you can reach it from your host. >> >> To install the re-build bundles to your Stanbol instance you can call >> >> mvn clean install -PinstallBundle >> -Dsling.url=http://localhost:8080/system/console >> >> within >> >> {stanbol-source-code}/data/opennlp/ner/en >> >> to refresh the english NER models that caused the reported error. >> >> If file corruption is not the reason for your issue please provide the >> stack trace of the encounter error. >> >> best >> Rupert >> >> >> [1] http://dev.iks-project.eu/downloads/opennlp/models-1.5/ >> >> On Fri, Jun 29, 2012 at 12:12 PM, Alberto Musetti <[email protected]> >> wrote: >>> Hi all, >>> >>> I have a problem with my Stanbol instance: >>> when i post an english text to the enhancer, it fails the execution on >>> ner engine with this error: >>> >>> org.apache.stanbol.enhancer.servicesapi.ChainException: Enhancement >>> Chain failed because of required Engine 'ner' failed with Message: >>> Unable to process ContentItem >>> '<urn:content-item-sha1-a274b8c641d15f7e45f834630d667ab64096b122>' with >>> Enhancement Engine 'ner' because the engine was unable to process the >>> content (Engine class: >>> org.apache.stanbol.enhancer.engines.opennlp.impl.NamedEntityExtractionEnhancementEngine)(Reason: >>> 'NEREngineCore' failed to process content item >>> 'urn:content-item-sha1-a274b8c641d15f7e45f834630d667ab64096b122' with >>> type 'text/plain': java.lang.IllegalStateException: Unable to create >>> TokenNameFinderModel for en-ner-person.bin!)! at >>> org.apache.stanbol.enhancer.jobmanager.event.impl.EventJobManagerImpl.enhanceContent(EventJobManagerImpl.java:151) >>> >>> My ner configuration is: >>> Name: ner >>> Language : <empty> >>> Default Language: <empty> >>> Ranking: 0 >>> >>> If i post an italian or french text there isn't any problems. >>> >>> Do you know this problem? >>> >>> Bests, >>> Alberto >> >> >> >> -- >> | Rupert Westenthaler [email protected] >> | Bodenlehenstraße 11 >> ++43-699-11108907 >> | A-5500 Bischofshofen >> > -- | Rupert Westenthaler [email protected] | Bodenlehenstraße 11 ++43-699-11108907 | A-5500 Bischofshofen
