shilad/wikibrain

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