You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Martynas Jusevičius <ma...@atomgraph.com> on 2017/12/03 18:27:27 UTC

Overriding JsonLdOptions / disabling HTTP call

Hi,

I have noticed that after I upgraded to Jena 3.0.1 some time ago, JSON-LD
writer stopped working. This is due to

Exception occurred in target VM:
org/apache/http/impl/client/SystemDefaultHttpClient
java.lang.NoClassDefFoundError:
org/apache/http/impl/client/SystemDefaultHttpClient
at com.github.jsonldjava.core.JsonLdOptions.<init>(JsonLdOptions.java:52)

in JsonLDWriter.serialize().

I had replaced all Jena's Apache Client usages with Jersey client, so this
was an unpleasant surprise.

Why would a writer make HTTP calls? I guess it attempts to load some
@context or something, but this does not make sense when writing?

I know jsonld-java is a 3rd party library, so I guess my options to disable
the HTTP call are limited? Would a newer version make it possible?


Martynas

Re: Overriding JsonLdOptions / disabling HTTP call

Posted by Andy Seaborne <an...@apache.org>.
 > So I guess it's really a classpath issue,

JsonLdOptions does not call SystemDefaultHttpClient (0.11.1).
Maybe it did at the version for Jena 3.0.1.

     Andy

On 03/12/17 19:46, Martynas Jusevičius wrote:
> Follows below.
> 
> Forgot to mention one important thing :) I'm excluding Apache HTTP Client
> from Jena:
> 
>          <dependency>
>              <groupId>org.apache.jena</groupId>
>              <artifactId>jena-arq</artifactId>
>              <version>3.0.1</version>
>              <!-- excluding HTTP Client as we are using Jersey Client
> instead -->
>              <exclusions>
>                  <exclusion>
>                      <groupId>org.apache.httpcomponents</groupId>
>                      <artifactId>httpclient</artifactId>
>                  </exclusion>
>                  <exclusion>
>                      <groupId>org.apache.httpcomponents</groupId>
>                      <artifactId>httpclient-cache</artifactId>
>                  </exclusion>
>              </exclusions>
>          </dependency>
> 
> So I guess it's really a classpath issue, not specific to Jena: Jersey
> client wraps a different AHC version than Jena/jsonld-java does.
> 
> But if JsonLdOptions would not call it, I think it wouldn't be a problem?
> 
> The stacktrace:
> 
> Exception occurred in target VM:
> org/apache/http/impl/client/SystemDefaultHttpClient
> java.lang.NoClassDefFoundError:
> org/apache/http/impl/client/SystemDefaultHttpClient
> at com.github.jsonldjava.core.JsonLdOptions.<init>(JsonLdOptions.java:52)
> at org.apache.jena.riot.out.JsonLDWriter.serialize(JsonLDWriter.java:87)
> at org.apache.jena.riot.out.JsonLDWriter.write(JsonLDWriter.java:67)
> at org.apache.jena.riot.out.JsonLDWriter.write(JsonLDWriter.java:77)
> at org.apache.jena.riot.system.RiotLib$WriterAdapter.write(RiotLib.java:333)
> at org.apache.jena.riot.adapters.RDFWriterRIOT.write(RDFWriterRIOT.java:94)
> at org.apache.jena.rdf.model.impl.ModelCom.write(ModelCom.java:355)
> at com.atomgraph.core.io.ModelProvider.write(ModelProvider.java:153)
> at
> com.atomgraph.platform.server.io.SkolemizingModelProvider.write(SkolemizingModelProvider.java:85)
> at
> com.atomgraph.server.io.BasedModelProvider.writeTo(BasedModelProvider.java:83)
> at
> com.atomgraph.server.io.BasedModelProvider.writeTo(BasedModelProvider.java:43)
> at
> com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:302)
> at
> com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1510)
> at
> com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
> at
> com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
> at
> com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
> at
> com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
> at
> com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
> at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)
> at
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:616)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
> at
> org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
> at
> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132)
> at
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
> at
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1539)
> at
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1495)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> at
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
> at java.lang.Thread.run(Thread.java:748)
> Caused by: java.lang.ClassNotFoundException:
> org.apache.http.impl.client.SystemDefaultHttpClient
> at
> org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
> at
> org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
> ... 40 more
> 
> 
> On Sun, Dec 3, 2017 at 7:40 PM, ajs6f <aj...@apache.org> wrote:
> 
>> Can you give a complete stack trace?
>>
>> ajs6f
>>
>>> On Dec 3, 2017, at 1:27 PM, Martynas Jusevičius <ma...@atomgraph.com>
>> wrote:
>>>
>>> Hi,
>>>
>>> I have noticed that after I upgraded to Jena 3.0.1 some time ago, JSON-LD
>>> writer stopped working. This is due to
>>>
>>> Exception occurred in target VM:
>>> org/apache/http/impl/client/SystemDefaultHttpClient
>>> java.lang.NoClassDefFoundError:
>>> org/apache/http/impl/client/SystemDefaultHttpClient
>>> at com.github.jsonldjava.core.JsonLdOptions.<init>(
>> JsonLdOptions.java:52)
>>>
>>> in JsonLDWriter.serialize().
>>>
>>> I had replaced all Jena's Apache Client usages with Jersey client, so
>> this
>>> was an unpleasant surprise.
>>>
>>> Why would a writer make HTTP calls? I guess it attempts to load some
>>> @context or something, but this does not make sense when writing?
>>>
>>> I know jsonld-java is a 3rd party library, so I guess my options to
>> disable
>>> the HTTP call are limited? Would a newer version make it possible?
>>>
>>>
>>> Martynas
>>
>>
> 

Re: Overriding JsonLdOptions / disabling HTTP call

Posted by Martynas Jusevičius <ma...@atomgraph.com>.
Follows below.

Forgot to mention one important thing :) I'm excluding Apache HTTP Client
from Jena:

        <dependency>
            <groupId>org.apache.jena</groupId>
            <artifactId>jena-arq</artifactId>
            <version>3.0.1</version>
            <!-- excluding HTTP Client as we are using Jersey Client
instead -->
            <exclusions>
                <exclusion>
                    <groupId>org.apache.httpcomponents</groupId>
                    <artifactId>httpclient</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.httpcomponents</groupId>
                    <artifactId>httpclient-cache</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

So I guess it's really a classpath issue, not specific to Jena: Jersey
client wraps a different AHC version than Jena/jsonld-java does.

But if JsonLdOptions would not call it, I think it wouldn't be a problem?

The stacktrace:

Exception occurred in target VM:
org/apache/http/impl/client/SystemDefaultHttpClient
java.lang.NoClassDefFoundError:
org/apache/http/impl/client/SystemDefaultHttpClient
at com.github.jsonldjava.core.JsonLdOptions.<init>(JsonLdOptions.java:52)
at org.apache.jena.riot.out.JsonLDWriter.serialize(JsonLDWriter.java:87)
at org.apache.jena.riot.out.JsonLDWriter.write(JsonLDWriter.java:67)
at org.apache.jena.riot.out.JsonLDWriter.write(JsonLDWriter.java:77)
at org.apache.jena.riot.system.RiotLib$WriterAdapter.write(RiotLib.java:333)
at org.apache.jena.riot.adapters.RDFWriterRIOT.write(RDFWriterRIOT.java:94)
at org.apache.jena.rdf.model.impl.ModelCom.write(ModelCom.java:355)
at com.atomgraph.core.io.ModelProvider.write(ModelProvider.java:153)
at
com.atomgraph.platform.server.io.SkolemizingModelProvider.write(SkolemizingModelProvider.java:85)
at
com.atomgraph.server.io.BasedModelProvider.writeTo(BasedModelProvider.java:83)
at
com.atomgraph.server.io.BasedModelProvider.writeTo(BasedModelProvider.java:43)
at
com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:302)
at
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1510)
at
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
at
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
at
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
at
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
at
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:616)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132)
at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1539)
at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1495)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException:
org.apache.http.impl.client.SystemDefaultHttpClient
at
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
at
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
... 40 more


On Sun, Dec 3, 2017 at 7:40 PM, ajs6f <aj...@apache.org> wrote:

> Can you give a complete stack trace?
>
> ajs6f
>
> > On Dec 3, 2017, at 1:27 PM, Martynas Jusevičius <ma...@atomgraph.com>
> wrote:
> >
> > Hi,
> >
> > I have noticed that after I upgraded to Jena 3.0.1 some time ago, JSON-LD
> > writer stopped working. This is due to
> >
> > Exception occurred in target VM:
> > org/apache/http/impl/client/SystemDefaultHttpClient
> > java.lang.NoClassDefFoundError:
> > org/apache/http/impl/client/SystemDefaultHttpClient
> > at com.github.jsonldjava.core.JsonLdOptions.<init>(
> JsonLdOptions.java:52)
> >
> > in JsonLDWriter.serialize().
> >
> > I had replaced all Jena's Apache Client usages with Jersey client, so
> this
> > was an unpleasant surprise.
> >
> > Why would a writer make HTTP calls? I guess it attempts to load some
> > @context or something, but this does not make sense when writing?
> >
> > I know jsonld-java is a 3rd party library, so I guess my options to
> disable
> > the HTTP call are limited? Would a newer version make it possible?
> >
> >
> > Martynas
>
>

Re: Overriding JsonLdOptions / disabling HTTP call

Posted by ajs6f <aj...@apache.org>.
Can you give a complete stack trace?

ajs6f

> On Dec 3, 2017, at 1:27 PM, Martynas Jusevičius <ma...@atomgraph.com> wrote:
> 
> Hi,
> 
> I have noticed that after I upgraded to Jena 3.0.1 some time ago, JSON-LD
> writer stopped working. This is due to
> 
> Exception occurred in target VM:
> org/apache/http/impl/client/SystemDefaultHttpClient
> java.lang.NoClassDefFoundError:
> org/apache/http/impl/client/SystemDefaultHttpClient
> at com.github.jsonldjava.core.JsonLdOptions.<init>(JsonLdOptions.java:52)
> 
> in JsonLDWriter.serialize().
> 
> I had replaced all Jena's Apache Client usages with Jersey client, so this
> was an unpleasant surprise.
> 
> Why would a writer make HTTP calls? I guess it attempts to load some
> @context or something, but this does not make sense when writing?
> 
> I know jsonld-java is a 3rd party library, so I guess my options to disable
> the HTTP call are limited? Would a newer version make it possible?
> 
> 
> Martynas