Rest wrapper to wikapidia features
Closed this issue · 1 comments
Hi,
I am developing a rest wrapper to wikapidia features, such as relatedness and so on.
Standalone wikapidia installation works. But I have some problem on the execution of the deployed example.
I am using Tomcat 7.0 and I have implemented this api:
@GET
@Path("compare")
@Produces(MediaType.APPLICATION_JSON)
public double getRelatedness(@QueryParam("term1") String term1,
@QueryParam("term2") String term2,
@DefaultValue("") @QueryParam("basedir") String basedir,
@DefaultValue("") @QueryParam("langcode") String langcode,
@DefaultValue("ensemble") @QueryParam("mode") String mode) {
double result = -1;
try {
WikiApiProperties.BASE_DIR = context.getRealPath("WEB-INF/config/");
WikiApiProperties p = WikiApiProperties.getInstance();
if (langcode.length() == 0)
langcode = p.getWikApiDiaLangCode();
if (basedir.length() == 0)
basedir = p.getWikApiDiaBaseDir();
// Initialize the WikAPIdia environment and get the local page dao
Env env = new EnvBuilder().setBaseDir(basedir).build();
// Get the configurator that creates components and a phraze
// analyzer
// from it
Configurator conf = env.getConfigurator();
PhraseAnalyzer pa = conf.get(PhraseAnalyzer.class);
// get the most common phrases in simple
Language lang = Language.getByLangCode(langcode); // simple english
LocalPageDao lpDao = conf.get(LocalPageDao.class);
// Retrieve the "ensemble" sr metric for simple english
MonolingualSRMetric sr;
sr = conf.get(MonolingualSRMetric.class, mode, "language",
lang.getLangCode());
// Similarity between strings
SRResult s = sr.similarity(term1, term2, false);
result = s.getScore();
} catch (ConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DaoException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
During the execution of my example (see below) I receive an exception on the Environmente intialization (i.e. instruction: Env env = new EnvBuilder().setBaseDir(basedir).build();). The exception is:
java.lang.RuntimeException: org.wikapidia.conf.ConfigurationException: No registered providers for components with class class org.wikapidia.core.lang.LanguageSet
at org.wikapidia.core.cmd.Env.getLanguages(Env.java:148)
at org.wikapidia.core.cmd.Env.(Env.java:84)
at org.wikapidia.core.cmd.EnvBuilder.build(EnvBuilder.java:184)
at it.thinkglue.wikapidia.api.WikiApi.getRelatedness(WikiApi.java:56)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)
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.RightHandPathRule.accept(RightHandPathRule.java:147)
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:1469)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
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:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
Caused by: org.wikapidia.conf.ConfigurationException: No registered providers for components with class class org.wikapidia.core.lang.LanguageSet
at org.wikapidia.conf.Configurator.resolveComponentName(Configurator.java:303)
at org.wikapidia.conf.Configurator.get(Configurator.java:254)
at org.wikapidia.conf.Configurator.get(Configurator.java:217)
at org.wikapidia.conf.Configurator.get(Configurator.java:401)
at org.wikapidia.core.cmd.Env.getLanguages(Env.java:146)
... 39 more
Any ideas?
Thanks
Giuseppe
It was a problem on java.class.path property under webapp using tomcat.
I have solved adding jars needed to the system property java.class.path.
Best regards,
Giuseppe