You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by "Enrico Daga (enridaga)" <en...@gmail.com> on 2016/04/12 18:22:19 UTC

Initializing TDB/JenaSystem properly

Hi,

I want to use a TDB instance programmatically inside my application, but I am having troubles on TDB initialisation.
Particularly, when I try to TDBFactory.create(…) I get a NullPointerException as follows:

Caused by: java.lang.NullPointerException
	at org.apache.jena.tdb.sys.EnvTDB.processGlobalSystemProperties(EnvTDB.java:33)
	at org.apache.jena.tdb.TDB.init(TDB.java:250)
	at org.apache.jena.tdb.sys.InitTDB.start(InitTDB.java:29)
	at org.apache.jena.system.JenaSystem.lambda$init$40(JenaSystem.java:114)
	at org.apache.jena.system.JenaSystem$$Lambda$4/661672156.accept(Unknown Source)
	at java.util.ArrayList.forEach(ArrayList.java:1249)
	at org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:179)
	at org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:156)
	at org.apache.jena.system.JenaSystem.init(JenaSystem.java:111)
[…]

The strange thing is that it looks like ARQ.getContext() returns null in EnvTDB.java:33, meaning it still needs to be initialised. But then I see the call to JenaSystem.init() in a static block inside the ARQ class, that is supposed to be at the bottom of the above stack … Here I got confused.

I also tried to force JenaSystem.init(); in my main class, with the same behaviour.
I am using the following maven artefacts:

jena-tdb:3.0.1
jena-core:3.0.1
jena-arq:3.0.1

Maybe I am missing something?

Thank you for any hint!

Enrico


—
Enrico Daga (enridaga)
http://www.enridaga.net
Il budda e’ nel parco.






Re: Initializing TDB/JenaSystem properly

Posted by "Enrico Daga (enridaga)" <en...@gmail.com>.
Hi Andy,

that was it!

For the record, I solved using the maven-shade-plugin with this configuration:

<configuration>
  <transformers>
   <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer”>   
     <mainClass>enridaga.jenainjetty.Main</mainClass>
   </transformer>
   <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
     <resource>META-INF/services/org.apache.jena.system.JenaSubsystemLifecycle</resource>
   </transformer>
  </transformers>
</configuration>


Thank you very much for the help :)

Best,
Enrico


—
Enrico Daga (enridaga)
http://www.enridaga.net <http://www.enridaga.net/>
Il budda e’ nel parco.





> On 13 Apr 2016, at 15:30, Andy Seaborne <an...@apache.org> wrote:
> 
> Hi Enrico,
> 
> Looks like the problem is that the assembly jar-with-dependencies is breaking the java service loader setup.
> 
> Each module has it's own /META-INF/services/org.apache.jena.system.JenaSubsystemLifecycle file.
> 
> They all have the same java resource name.
> 
> Fuseki uses the shade plugin and that makes a combined file.
> 
> /META-INF/services/org.apache.jena.system.JenaSubsystemLifecycle
> 
> which is:
> 
> -------------------------
> org.apache.jena.riot.system.InitRIOT
> org.apache.jena.sparql.system.InitARQ
> org.apache.jena.system.InitJenaCore
> 
> org.apache.jena.tdb.sys.InitTDB
> org.apache.jena.query.text.InitJenaText
> org.apache.jena.query.spatial.InitJenaSpatial
> -------------------------
> 
> Your setup reports only InitTDB so it looks like the last file overwrites and that last file is TDB's.
> 
> You could use the shade plugin instead of the assembly plugin,
> or get the assembly plgin to do the same somehow
> or statically make sure the file has exactly the modules you are using.
> 
> (Do not include modules that aren't in the system!)
> 
>    Andy
> 
> On 13/04/16 11:02, Enrico Daga (enridaga) wrote:
>> Hi Andy,
>> 
>> Hi Andy,
>> 
>> The full stack trace is below.
>> 
>> I also prepared a stand alone project to reproduce the problem [1,2].
>> In this example, while the problem is still there (ARQ context being null), the point is different (this time in SystemTDB.java:381);
>> 
>> Best,
>> Enrico
>> 
>> [1] https://github.com/enridaga/jena-system-in-jetty-debug/
>> [2] https://github.com/enridaga/jena-system-in-jetty-debug/blob/master/src/main/java/enridaga/jenainjetty/Application.java
>> 
>> —
>> Enrico Daga (enridaga)
>> http://www.enridaga.net
>> Il budda e’ nel parco.
>> 
>> 
>> Stack trace in the original application:
>> 
>> 2016-04-13 10:48:34 INFO  Application:41 - Initializing context.
>> JenaSystem.init - start
>>   InitTDB
>> Init: JenaInitLevel0
>> Init: InitTDB
>> TDB.init - start
>> 2016-04-13 10:48:35 INFO  ServerConnector:270 - Started ServerConnector@6356695f{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
>> Exception in thread "main" java.lang.ExceptionInInitializerError
>> 	at dkarobo.server.webapp.Application.contextInitialized(Application.java:56)
>> 	at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:794)
>> 	at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:522)
>> 	at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:785)
>> 	at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:341)
>> 	at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1357)
>> 	at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1350)
>> 	at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:734)
>> 	at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:258)
>> 	at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:512)
>> 	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
>> 	at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
>> 	at org.eclipse.jetty.server.Server.start(Server.java:405)
>> 	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
>> 	at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
>> 	at org.eclipse.jetty.server.Server.doStart(Server.java:372)
>> 	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
>> 	at dkarobo.server.cli.Main.main(Main.java:45)
>> Caused by: java.lang.NullPointerException
>> 	at org.apache.jena.tdb.sys.EnvTDB.processGlobalSystemProperties(EnvTDB.java:33)
>> 	at org.apache.jena.tdb.TDB.init(TDB.java:250)
>> 	at org.apache.jena.tdb.sys.InitTDB.start(InitTDB.java:29)
>> 	at org.apache.jena.system.JenaSystem.lambda$init$40(JenaSystem.java:114)
>> 	at org.apache.jena.system.JenaSystem$$Lambda$5/1615056168.accept(Unknown Source)
>> 	at java.util.ArrayList.forEach(ArrayList.java:1249)
>> 	at org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:179)
>> 	at org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:156)
>> 	at org.apache.jena.system.JenaSystem.init(JenaSystem.java:111)
>> 	at org.apache.jena.tdb.TDBFactory.<clinit>(TDBFactory.java:40)
>> 	... 18 more
>> 
>> 
>> 
>>> On 13 Apr 2016, at 10:04, Enrico Daga (enridaga) <en...@gmail.com> wrote:
>>> 
>>> Thank you Andy,
>>> I’ll try that and let you know, eventually I will pack a thin maven project trying to reproduce the issue.
>>> 
>>> Thanks a lot!
>>> 
>>> Enrico
>>> —
>>> Enrico Daga (enridaga)
>>> http://www.enridaga.net
>>> Il budda e’ nel parco.
>>> 
>>> 
>>> 
>>> 
>>> 
>>>> On 13 Apr 2016, at 09:59, Andy Seaborne <an...@apache.org> wrote:
>>>> 
>>>> On 13/04/16 09:56, Andy Seaborne wrote:
>>>>> Hi Enrico,
>>>>> 
>>>>> I was hoping to see the rest of the stack trace to see where the first
>>>>> entry point that causes initialization in Jena is happening.
>>>>> 
>>>>> Do you have something I can build+run that is smaller? There are 4 maven
>>>>> modules there and 42 java files.  There is an environmental factor here
>>>>> and I want to be runnign exactly what you are.
>>>>> 
>>>>> A POM file, and code that is minimal (just Application? Does that fail?)
>>>>> would be helpful.
>>>>> 
>>>>> Fuseki does:
>>>>> 
>>>>> public void contextInitialized(ServletContextEvent sce) {
>>>>>         JenaSystem.init() ;
>>>>> 
>>>>> 
>>>>>     Andy
>>>> 
>>>> PS As the first line in Application.contextInitialized
>>>> 
>>>> try putting
>>>> 
>>>>     JenaSystem.DEBUG_INIT = true ;
>>>> 
>>>> and see what comes out.
>>>> 
>>>> 	Andy
>>>> 
>>>>> 
>>>>> On 12/04/16 18:44, Enrico Daga (enridaga) wrote:
>>>>>> Hi Andy, thank you for you reply. You’re right, I was hoping it was
>>>>>> not a class loading issue and I simplified the question :)
>>>>>> 
>>>>>> This happens within a ServletContextListener in a Jetty embedded
>>>>>> application [1]. In fact, I do not have any failure when I launch the
>>>>>> environment using mvn jetty:run, which I do during development. But
>>>>>> when I package the server, and I try to start it programmatically
>>>>>> [2], it fails as described in the previous email.
>>>>>> 
>>>>>> However, if I force JenaSystem.init() in any way (included static
>>>>>> blocks in Application or Main), it still fails! I understand the app
>>>>>> class loader is different from the main one, but this consideration
>>>>>> alone does not help me much…
>>>>>> 
>>>>>> Best, Enrico
>>>>>> 
>>>>>> 
>>>>>> [1]
>>>>>> https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/webapp/Application.java
>>>>>> 
>>>>>> 
>>>>>> 
>>>>> [2]
>>>>> https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/cli/Main.java
>>>>> 
>>>>>> 
>>>>>> 
>>>>>> — Enrico Daga (enridaga) http://www.enridaga.net Il budda e’ nel
>>>>>> parco.
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>> On 12 Apr 2016, at 18:16, Andy Seaborne <an...@apache.org> wrote:
>>>>>>> 
>>>>>>> On 12/04/16 17:22, Enrico Daga (enridaga) wrote:
>>>>>>>> Hi,
>>>>>>>> 
>>>>>>>> I want to use a TDB instance programmatically inside my
>>>>>>>> application, but I am having troubles on TDB initialisation.
>>>>>>>> Particularly, when I try to TDBFactory.create(…) I get a
>>>>>>>> NullPointerException as follows:
>>>>>>>> 
>>>>>>>> Caused by: java.lang.NullPointerException at
>>>>>>>> org.apache.jena.tdb.sys.EnvTDB.processGlobalSystemProperties(EnvTDB.java:33)
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>> at org.apache.jena.tdb.TDB.init(TDB.java:250)
>>>>>>>> at org.apache.jena.tdb.sys.InitTDB.start(InitTDB.java:29) at
>>>>>>>> org.apache.jena.system.JenaSystem.lambda$init$40(JenaSystem.java:114)
>>>>>>>> 
>>>>>>>> 
>>>>> at org.apache.jena.system.JenaSystem$$Lambda$4/661672156.accept(Unknown
>>>>> Source)
>>>>>>>> at java.util.ArrayList.forEach(ArrayList.java:1249) at
>>>>>>>> org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:179) at
>>>>>>>> org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:156) at
>>>>>>>> org.apache.jena.system.JenaSystem.init(JenaSystem.java:111) […]
>>>>>>> 
>>>>>>> What's the rest? In particular, what's causing the initialization
>>>>>>> process to start?
>>>>>>> 
>>>>>>>> 
>>>>>>>> The strange thing is that it looks like ARQ.getContext() returns
>>>>>>>> null in EnvTDB.java:33, meaning it still needs to be initialised.
>>>>>>>> But then I see the call to JenaSystem.init() in a static block
>>>>>>>> inside the ARQ class, that is supposed to be at the bottom of the
>>>>>>>> above stack … Here I got confused.
>>>>>>>> 
>>>>>>>> I also tried to force JenaSystem.init(); in my main class, with
>>>>>>>> the same behaviour. I am using the following maven artefacts:
>>>>>>>> 
>>>>>>>> jena-tdb:3.0.1 jena-core:3.0.1 jena-arq:3.0.1
>>>>>>>> 
>>>>>>>> Maybe I am missing something?
>>>>>>>> 
>>>>>>>> Thank you for any hint!
>>>>>>> 
>>>>>>> Possibly an unexpected way in the system.  Thats' what can cause
>>>>>>> ARQ.getContext() to be null - Java class initialization madness.
>>>>>>> 
>>>>>>> Do you have a complete, minimal example?
>>>>>>> 
>>>>>>>> 
>>>>>>>> Enrico
>>>>>>>> 
>>>>>>>> 
>>>>>>>> — Enrico Daga (enridaga) http://www.enridaga.net Il budda e’ nel
>>>>>>>> parco.
>>> 
>> 
> 


Re: Initializing TDB/JenaSystem properly

Posted by Andy Seaborne <an...@apache.org>.
Hi Enrico,

Looks like the problem is that the assembly jar-with-dependencies is 
breaking the java service loader setup.

Each module has it's own 
/META-INF/services/org.apache.jena.system.JenaSubsystemLifecycle file.

They all have the same java resource name.

Fuseki uses the shade plugin and that makes a combined file.

/META-INF/services/org.apache.jena.system.JenaSubsystemLifecycle

which is:

-------------------------
org.apache.jena.riot.system.InitRIOT
org.apache.jena.sparql.system.InitARQ
org.apache.jena.system.InitJenaCore

org.apache.jena.tdb.sys.InitTDB
org.apache.jena.query.text.InitJenaText
org.apache.jena.query.spatial.InitJenaSpatial
-------------------------

Your setup reports only InitTDB so it looks like the last file 
overwrites and that last file is TDB's.

You could use the shade plugin instead of the assembly plugin,
or get the assembly plgin to do the same somehow
or statically make sure the file has exactly the modules you are using.

(Do not include modules that aren't in the system!)

     Andy

On 13/04/16 11:02, Enrico Daga (enridaga) wrote:
> Hi Andy,
>
> Hi Andy,
>
> The full stack trace is below.
>
> I also prepared a stand alone project to reproduce the problem [1,2].
> In this example, while the problem is still there (ARQ context being null), the point is different (this time in SystemTDB.java:381);
>
> Best,
> Enrico
>
> [1] https://github.com/enridaga/jena-system-in-jetty-debug/
> [2] https://github.com/enridaga/jena-system-in-jetty-debug/blob/master/src/main/java/enridaga/jenainjetty/Application.java
>
> —
> Enrico Daga (enridaga)
> http://www.enridaga.net
> Il budda e’ nel parco.
>
>
> Stack trace in the original application:
>
> 2016-04-13 10:48:34 INFO  Application:41 - Initializing context.
> JenaSystem.init - start
>    InitTDB
> Init: JenaInitLevel0
> Init: InitTDB
> TDB.init - start
> 2016-04-13 10:48:35 INFO  ServerConnector:270 - Started ServerConnector@6356695f{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
> Exception in thread "main" java.lang.ExceptionInInitializerError
> 	at dkarobo.server.webapp.Application.contextInitialized(Application.java:56)
> 	at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:794)
> 	at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:522)
> 	at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:785)
> 	at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:341)
> 	at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1357)
> 	at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1350)
> 	at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:734)
> 	at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:258)
> 	at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:512)
> 	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
> 	at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
> 	at org.eclipse.jetty.server.Server.start(Server.java:405)
> 	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
> 	at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
> 	at org.eclipse.jetty.server.Server.doStart(Server.java:372)
> 	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
> 	at dkarobo.server.cli.Main.main(Main.java:45)
> Caused by: java.lang.NullPointerException
> 	at org.apache.jena.tdb.sys.EnvTDB.processGlobalSystemProperties(EnvTDB.java:33)
> 	at org.apache.jena.tdb.TDB.init(TDB.java:250)
> 	at org.apache.jena.tdb.sys.InitTDB.start(InitTDB.java:29)
> 	at org.apache.jena.system.JenaSystem.lambda$init$40(JenaSystem.java:114)
> 	at org.apache.jena.system.JenaSystem$$Lambda$5/1615056168.accept(Unknown Source)
> 	at java.util.ArrayList.forEach(ArrayList.java:1249)
> 	at org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:179)
> 	at org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:156)
> 	at org.apache.jena.system.JenaSystem.init(JenaSystem.java:111)
> 	at org.apache.jena.tdb.TDBFactory.<clinit>(TDBFactory.java:40)
> 	... 18 more
>
>
>
>> On 13 Apr 2016, at 10:04, Enrico Daga (enridaga) <en...@gmail.com> wrote:
>>
>> Thank you Andy,
>> I’ll try that and let you know, eventually I will pack a thin maven project trying to reproduce the issue.
>>
>> Thanks a lot!
>>
>> Enrico
>> —
>> Enrico Daga (enridaga)
>> http://www.enridaga.net
>> Il budda e’ nel parco.
>>
>>
>>
>>
>>
>>> On 13 Apr 2016, at 09:59, Andy Seaborne <an...@apache.org> wrote:
>>>
>>> On 13/04/16 09:56, Andy Seaborne wrote:
>>>> Hi Enrico,
>>>>
>>>> I was hoping to see the rest of the stack trace to see where the first
>>>> entry point that causes initialization in Jena is happening.
>>>>
>>>> Do you have something I can build+run that is smaller? There are 4 maven
>>>> modules there and 42 java files.  There is an environmental factor here
>>>> and I want to be runnign exactly what you are.
>>>>
>>>> A POM file, and code that is minimal (just Application? Does that fail?)
>>>> would be helpful.
>>>>
>>>> Fuseki does:
>>>>
>>>> public void contextInitialized(ServletContextEvent sce) {
>>>>          JenaSystem.init() ;
>>>>
>>>>
>>>>      Andy
>>>
>>> PS As the first line in Application.contextInitialized
>>>
>>> try putting
>>>
>>>      JenaSystem.DEBUG_INIT = true ;
>>>
>>> and see what comes out.
>>>
>>> 	Andy
>>>
>>>>
>>>> On 12/04/16 18:44, Enrico Daga (enridaga) wrote:
>>>>> Hi Andy, thank you for you reply. You’re right, I was hoping it was
>>>>> not a class loading issue and I simplified the question :)
>>>>>
>>>>> This happens within a ServletContextListener in a Jetty embedded
>>>>> application [1]. In fact, I do not have any failure when I launch the
>>>>> environment using mvn jetty:run, which I do during development. But
>>>>> when I package the server, and I try to start it programmatically
>>>>> [2], it fails as described in the previous email.
>>>>>
>>>>> However, if I force JenaSystem.init() in any way (included static
>>>>> blocks in Application or Main), it still fails! I understand the app
>>>>> class loader is different from the main one, but this consideration
>>>>> alone does not help me much…
>>>>>
>>>>> Best, Enrico
>>>>>
>>>>>
>>>>> [1]
>>>>> https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/webapp/Application.java
>>>>>
>>>>>
>>>>>
>>>> [2]
>>>> https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/cli/Main.java
>>>>
>>>>>
>>>>>
>>>>> — Enrico Daga (enridaga) http://www.enridaga.net Il budda e’ nel
>>>>> parco.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>> On 12 Apr 2016, at 18:16, Andy Seaborne <an...@apache.org> wrote:
>>>>>>
>>>>>> On 12/04/16 17:22, Enrico Daga (enridaga) wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> I want to use a TDB instance programmatically inside my
>>>>>>> application, but I am having troubles on TDB initialisation.
>>>>>>> Particularly, when I try to TDBFactory.create(…) I get a
>>>>>>> NullPointerException as follows:
>>>>>>>
>>>>>>> Caused by: java.lang.NullPointerException at
>>>>>>> org.apache.jena.tdb.sys.EnvTDB.processGlobalSystemProperties(EnvTDB.java:33)
>>>>>>>
>>>>>>>
>>>>>>>
>>>> at org.apache.jena.tdb.TDB.init(TDB.java:250)
>>>>>>> at org.apache.jena.tdb.sys.InitTDB.start(InitTDB.java:29) at
>>>>>>> org.apache.jena.system.JenaSystem.lambda$init$40(JenaSystem.java:114)
>>>>>>>
>>>>>>>
>>>> at org.apache.jena.system.JenaSystem$$Lambda$4/661672156.accept(Unknown
>>>> Source)
>>>>>>> at java.util.ArrayList.forEach(ArrayList.java:1249) at
>>>>>>> org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:179) at
>>>>>>> org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:156) at
>>>>>>> org.apache.jena.system.JenaSystem.init(JenaSystem.java:111) […]
>>>>>>
>>>>>> What's the rest? In particular, what's causing the initialization
>>>>>> process to start?
>>>>>>
>>>>>>>
>>>>>>> The strange thing is that it looks like ARQ.getContext() returns
>>>>>>> null in EnvTDB.java:33, meaning it still needs to be initialised.
>>>>>>> But then I see the call to JenaSystem.init() in a static block
>>>>>>> inside the ARQ class, that is supposed to be at the bottom of the
>>>>>>> above stack … Here I got confused.
>>>>>>>
>>>>>>> I also tried to force JenaSystem.init(); in my main class, with
>>>>>>> the same behaviour. I am using the following maven artefacts:
>>>>>>>
>>>>>>> jena-tdb:3.0.1 jena-core:3.0.1 jena-arq:3.0.1
>>>>>>>
>>>>>>> Maybe I am missing something?
>>>>>>>
>>>>>>> Thank you for any hint!
>>>>>>
>>>>>> Possibly an unexpected way in the system.  Thats' what can cause
>>>>>> ARQ.getContext() to be null - Java class initialization madness.
>>>>>>
>>>>>> Do you have a complete, minimal example?
>>>>>>
>>>>>>>
>>>>>>> Enrico
>>>>>>>
>>>>>>>
>>>>>>> — Enrico Daga (enridaga) http://www.enridaga.net Il budda e’ nel
>>>>>>> parco.
>>
>


Re: Initializing TDB/JenaSystem properly

Posted by "Enrico Daga (enridaga)" <en...@gmail.com>.
Hi Andy,

Hi Andy,

The full stack trace is below.

I also prepared a stand alone project to reproduce the problem [1,2].
In this example, while the problem is still there (ARQ context being null), the point is different (this time in SystemTDB.java:381);

Best,
Enrico

[1] https://github.com/enridaga/jena-system-in-jetty-debug/
[2] https://github.com/enridaga/jena-system-in-jetty-debug/blob/master/src/main/java/enridaga/jenainjetty/Application.java

—
Enrico Daga (enridaga)
http://www.enridaga.net
Il budda e’ nel parco.


Stack trace in the original application:

2016-04-13 10:48:34 INFO  Application:41 - Initializing context.
JenaSystem.init - start
  InitTDB
Init: JenaInitLevel0
Init: InitTDB
TDB.init - start
2016-04-13 10:48:35 INFO  ServerConnector:270 - Started ServerConnector@6356695f{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
Exception in thread "main" java.lang.ExceptionInInitializerError
	at dkarobo.server.webapp.Application.contextInitialized(Application.java:56)
	at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:794)
	at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:522)
	at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:785)
	at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:341)
	at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1357)
	at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1350)
	at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:734)
	at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:258)
	at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:512)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
	at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
	at org.eclipse.jetty.server.Server.start(Server.java:405)
	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
	at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
	at org.eclipse.jetty.server.Server.doStart(Server.java:372)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
	at dkarobo.server.cli.Main.main(Main.java:45)
Caused by: java.lang.NullPointerException
	at org.apache.jena.tdb.sys.EnvTDB.processGlobalSystemProperties(EnvTDB.java:33)
	at org.apache.jena.tdb.TDB.init(TDB.java:250)
	at org.apache.jena.tdb.sys.InitTDB.start(InitTDB.java:29)
	at org.apache.jena.system.JenaSystem.lambda$init$40(JenaSystem.java:114)
	at org.apache.jena.system.JenaSystem$$Lambda$5/1615056168.accept(Unknown Source)
	at java.util.ArrayList.forEach(ArrayList.java:1249)
	at org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:179)
	at org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:156)
	at org.apache.jena.system.JenaSystem.init(JenaSystem.java:111)
	at org.apache.jena.tdb.TDBFactory.<clinit>(TDBFactory.java:40)
	... 18 more



> On 13 Apr 2016, at 10:04, Enrico Daga (enridaga) <en...@gmail.com> wrote:
> 
> Thank you Andy,
> I’ll try that and let you know, eventually I will pack a thin maven project trying to reproduce the issue.
> 
> Thanks a lot!
> 
> Enrico
> —
> Enrico Daga (enridaga)
> http://www.enridaga.net
> Il budda e’ nel parco.
> 
> 
> 
> 
> 
>> On 13 Apr 2016, at 09:59, Andy Seaborne <an...@apache.org> wrote:
>> 
>> On 13/04/16 09:56, Andy Seaborne wrote:
>>> Hi Enrico,
>>> 
>>> I was hoping to see the rest of the stack trace to see where the first
>>> entry point that causes initialization in Jena is happening.
>>> 
>>> Do you have something I can build+run that is smaller? There are 4 maven
>>> modules there and 42 java files.  There is an environmental factor here
>>> and I want to be runnign exactly what you are.
>>> 
>>> A POM file, and code that is minimal (just Application? Does that fail?)
>>> would be helpful.
>>> 
>>> Fuseki does:
>>> 
>>> public void contextInitialized(ServletContextEvent sce) {
>>>         JenaSystem.init() ;
>>> 
>>> 
>>>     Andy
>> 
>> PS As the first line in Application.contextInitialized
>> 
>> try putting
>> 
>>     JenaSystem.DEBUG_INIT = true ;
>> 
>> and see what comes out.
>> 
>> 	Andy
>> 
>>> 
>>> On 12/04/16 18:44, Enrico Daga (enridaga) wrote:
>>>> Hi Andy, thank you for you reply. You’re right, I was hoping it was
>>>> not a class loading issue and I simplified the question :)
>>>> 
>>>> This happens within a ServletContextListener in a Jetty embedded
>>>> application [1]. In fact, I do not have any failure when I launch the
>>>> environment using mvn jetty:run, which I do during development. But
>>>> when I package the server, and I try to start it programmatically
>>>> [2], it fails as described in the previous email.
>>>> 
>>>> However, if I force JenaSystem.init() in any way (included static
>>>> blocks in Application or Main), it still fails! I understand the app
>>>> class loader is different from the main one, but this consideration
>>>> alone does not help me much…
>>>> 
>>>> Best, Enrico
>>>> 
>>>> 
>>>> [1]
>>>> https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/webapp/Application.java
>>>> 
>>>> 
>>>> 
>>> [2]
>>> https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/cli/Main.java
>>> 
>>>> 
>>>> 
>>>> — Enrico Daga (enridaga) http://www.enridaga.net Il budda e’ nel
>>>> parco.
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>>> On 12 Apr 2016, at 18:16, Andy Seaborne <an...@apache.org> wrote:
>>>>> 
>>>>> On 12/04/16 17:22, Enrico Daga (enridaga) wrote:
>>>>>> Hi,
>>>>>> 
>>>>>> I want to use a TDB instance programmatically inside my
>>>>>> application, but I am having troubles on TDB initialisation.
>>>>>> Particularly, when I try to TDBFactory.create(…) I get a
>>>>>> NullPointerException as follows:
>>>>>> 
>>>>>> Caused by: java.lang.NullPointerException at
>>>>>> org.apache.jena.tdb.sys.EnvTDB.processGlobalSystemProperties(EnvTDB.java:33)
>>>>>> 
>>>>>> 
>>>>>> 
>>> at org.apache.jena.tdb.TDB.init(TDB.java:250)
>>>>>> at org.apache.jena.tdb.sys.InitTDB.start(InitTDB.java:29) at
>>>>>> org.apache.jena.system.JenaSystem.lambda$init$40(JenaSystem.java:114)
>>>>>> 
>>>>>> 
>>> at org.apache.jena.system.JenaSystem$$Lambda$4/661672156.accept(Unknown
>>> Source)
>>>>>> at java.util.ArrayList.forEach(ArrayList.java:1249) at
>>>>>> org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:179) at
>>>>>> org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:156) at
>>>>>> org.apache.jena.system.JenaSystem.init(JenaSystem.java:111) […]
>>>>> 
>>>>> What's the rest? In particular, what's causing the initialization
>>>>> process to start?
>>>>> 
>>>>>> 
>>>>>> The strange thing is that it looks like ARQ.getContext() returns
>>>>>> null in EnvTDB.java:33, meaning it still needs to be initialised.
>>>>>> But then I see the call to JenaSystem.init() in a static block
>>>>>> inside the ARQ class, that is supposed to be at the bottom of the
>>>>>> above stack … Here I got confused.
>>>>>> 
>>>>>> I also tried to force JenaSystem.init(); in my main class, with
>>>>>> the same behaviour. I am using the following maven artefacts:
>>>>>> 
>>>>>> jena-tdb:3.0.1 jena-core:3.0.1 jena-arq:3.0.1
>>>>>> 
>>>>>> Maybe I am missing something?
>>>>>> 
>>>>>> Thank you for any hint!
>>>>> 
>>>>> Possibly an unexpected way in the system.  Thats' what can cause
>>>>> ARQ.getContext() to be null - Java class initialization madness.
>>>>> 
>>>>> Do you have a complete, minimal example?
>>>>> 
>>>>>> 
>>>>>> Enrico
>>>>>> 
>>>>>> 
>>>>>> — Enrico Daga (enridaga) http://www.enridaga.net Il budda e’ nel
>>>>>> parco.
> 


Re: Initializing TDB/JenaSystem properly

Posted by "Enrico Daga (enridaga)" <en...@gmail.com>.
Thank you Andy,
I’ll try that and let you know, eventually I will pack a thin maven project trying to reproduce the issue.

Thanks a lot!

Enrico
—
Enrico Daga (enridaga)
http://www.enridaga.net <http://www.enridaga.net/>
Il budda e’ nel parco.





> On 13 Apr 2016, at 09:59, Andy Seaborne <an...@apache.org> wrote:
> 
> On 13/04/16 09:56, Andy Seaborne wrote:
>> Hi Enrico,
>> 
>> I was hoping to see the rest of the stack trace to see where the first
>> entry point that causes initialization in Jena is happening.
>> 
>> Do you have something I can build+run that is smaller? There are 4 maven
>> modules there and 42 java files.  There is an environmental factor here
>> and I want to be runnign exactly what you are.
>> 
>> A POM file, and code that is minimal (just Application? Does that fail?)
>> would be helpful.
>> 
>> Fuseki does:
>> 
>> public void contextInitialized(ServletContextEvent sce) {
>>         JenaSystem.init() ;
>> 
>> 
>>     Andy
> 
> PS As the first line in Application.contextInitialized
> 
> try putting
> 
>     JenaSystem.DEBUG_INIT = true ;
> 
> and see what comes out.
> 
> 	Andy
> 
>> 
>> On 12/04/16 18:44, Enrico Daga (enridaga) wrote:
>>> Hi Andy, thank you for you reply. You’re right, I was hoping it was
>>> not a class loading issue and I simplified the question :)
>>> 
>>> This happens within a ServletContextListener in a Jetty embedded
>>> application [1]. In fact, I do not have any failure when I launch the
>>> environment using mvn jetty:run, which I do during development. But
>>> when I package the server, and I try to start it programmatically
>>> [2], it fails as described in the previous email.
>>> 
>>> However, if I force JenaSystem.init() in any way (included static
>>> blocks in Application or Main), it still fails! I understand the app
>>> class loader is different from the main one, but this consideration
>>> alone does not help me much…
>>> 
>>> Best, Enrico
>>> 
>>> 
>>> [1]
>>> https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/webapp/Application.java
>>> 
>>> 
>>> 
>> [2]
>> https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/cli/Main.java
>> 
>>> 
>>> 
>>> — Enrico Daga (enridaga) http://www.enridaga.net Il budda e’ nel
>>> parco.
>>> 
>>> 
>>> 
>>> 
>>> 
>>>> On 12 Apr 2016, at 18:16, Andy Seaborne <an...@apache.org> wrote:
>>>> 
>>>> On 12/04/16 17:22, Enrico Daga (enridaga) wrote:
>>>>> Hi,
>>>>> 
>>>>> I want to use a TDB instance programmatically inside my
>>>>> application, but I am having troubles on TDB initialisation.
>>>>> Particularly, when I try to TDBFactory.create(…) I get a
>>>>> NullPointerException as follows:
>>>>> 
>>>>> Caused by: java.lang.NullPointerException at
>>>>> org.apache.jena.tdb.sys.EnvTDB.processGlobalSystemProperties(EnvTDB.java:33)
>>>>> 
>>>>> 
>>>>> 
>> at org.apache.jena.tdb.TDB.init(TDB.java:250)
>>>>> at org.apache.jena.tdb.sys.InitTDB.start(InitTDB.java:29) at
>>>>> org.apache.jena.system.JenaSystem.lambda$init$40(JenaSystem.java:114)
>>>>> 
>>>>> 
>> at org.apache.jena.system.JenaSystem$$Lambda$4/661672156.accept(Unknown
>> Source)
>>>>> at java.util.ArrayList.forEach(ArrayList.java:1249) at
>>>>> org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:179) at
>>>>> org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:156) at
>>>>> org.apache.jena.system.JenaSystem.init(JenaSystem.java:111) […]
>>>> 
>>>> What's the rest? In particular, what's causing the initialization
>>>> process to start?
>>>> 
>>>>> 
>>>>> The strange thing is that it looks like ARQ.getContext() returns
>>>>> null in EnvTDB.java:33, meaning it still needs to be initialised.
>>>>> But then I see the call to JenaSystem.init() in a static block
>>>>> inside the ARQ class, that is supposed to be at the bottom of the
>>>>> above stack … Here I got confused.
>>>>> 
>>>>> I also tried to force JenaSystem.init(); in my main class, with
>>>>> the same behaviour. I am using the following maven artefacts:
>>>>> 
>>>>> jena-tdb:3.0.1 jena-core:3.0.1 jena-arq:3.0.1
>>>>> 
>>>>> Maybe I am missing something?
>>>>> 
>>>>> Thank you for any hint!
>>>> 
>>>> Possibly an unexpected way in the system.  Thats' what can cause
>>>> ARQ.getContext() to be null - Java class initialization madness.
>>>> 
>>>> Do you have a complete, minimal example?
>>>> 
>>>>> 
>>>>> Enrico
>>>>> 
>>>>> 
>>>>> — Enrico Daga (enridaga) http://www.enridaga.net Il budda e’ nel
>>>>> parco.


Re: Initializing TDB/JenaSystem properly

Posted by Andy Seaborne <an...@apache.org>.
On 13/04/16 09:56, Andy Seaborne wrote:
> Hi Enrico,
>
> I was hoping to see the rest of the stack trace to see where the first
> entry point that causes initialization in Jena is happening.
>
> Do you have something I can build+run that is smaller? There are 4 maven
> modules there and 42 java files.  There is an environmental factor here
> and I want to be runnign exactly what you are.
>
> A POM file, and code that is minimal (just Application? Does that fail?)
> would be helpful.
>
> Fuseki does:
>
> public void contextInitialized(ServletContextEvent sce) {
>          JenaSystem.init() ;
>
>
>      Andy

PS As the first line in Application.contextInitialized

try putting

      JenaSystem.DEBUG_INIT = true ;

and see what comes out.

	Andy

>
> On 12/04/16 18:44, Enrico Daga (enridaga) wrote:
>> Hi Andy, thank you for you reply. You’re right, I was hoping it was
>> not a class loading issue and I simplified the question :)
>>
>> This happens within a ServletContextListener in a Jetty embedded
>> application [1]. In fact, I do not have any failure when I launch the
>> environment using mvn jetty:run, which I do during development. But
>> when I package the server, and I try to start it programmatically
>> [2], it fails as described in the previous email.
>>
>> However, if I force JenaSystem.init() in any way (included static
>> blocks in Application or Main), it still fails! I understand the app
>> class loader is different from the main one, but this consideration
>> alone does not help me much…
>>
>> Best, Enrico
>>
>>
>> [1]
>> https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/webapp/Application.java
>>
>>
>>
> [2]
> https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/cli/Main.java
>
>>
>>
>> — Enrico Daga (enridaga) http://www.enridaga.net Il budda e’ nel
>> parco.
>>
>>
>>
>>
>>
>>> On 12 Apr 2016, at 18:16, Andy Seaborne <an...@apache.org> wrote:
>>>
>>> On 12/04/16 17:22, Enrico Daga (enridaga) wrote:
>>>> Hi,
>>>>
>>>> I want to use a TDB instance programmatically inside my
>>>> application, but I am having troubles on TDB initialisation.
>>>> Particularly, when I try to TDBFactory.create(…) I get a
>>>> NullPointerException as follows:
>>>>
>>>> Caused by: java.lang.NullPointerException at
>>>> org.apache.jena.tdb.sys.EnvTDB.processGlobalSystemProperties(EnvTDB.java:33)
>>>>
>>>>
>>>>
> at org.apache.jena.tdb.TDB.init(TDB.java:250)
>>>> at org.apache.jena.tdb.sys.InitTDB.start(InitTDB.java:29) at
>>>> org.apache.jena.system.JenaSystem.lambda$init$40(JenaSystem.java:114)
>>>>
>>>>
> at org.apache.jena.system.JenaSystem$$Lambda$4/661672156.accept(Unknown
> Source)
>>>> at java.util.ArrayList.forEach(ArrayList.java:1249) at
>>>> org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:179) at
>>>> org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:156) at
>>>> org.apache.jena.system.JenaSystem.init(JenaSystem.java:111) […]
>>>
>>> What's the rest? In particular, what's causing the initialization
>>> process to start?
>>>
>>>>
>>>> The strange thing is that it looks like ARQ.getContext() returns
>>>> null in EnvTDB.java:33, meaning it still needs to be initialised.
>>>> But then I see the call to JenaSystem.init() in a static block
>>>> inside the ARQ class, that is supposed to be at the bottom of the
>>>> above stack … Here I got confused.
>>>>
>>>> I also tried to force JenaSystem.init(); in my main class, with
>>>> the same behaviour. I am using the following maven artefacts:
>>>>
>>>> jena-tdb:3.0.1 jena-core:3.0.1 jena-arq:3.0.1
>>>>
>>>> Maybe I am missing something?
>>>>
>>>> Thank you for any hint!
>>>
>>> Possibly an unexpected way in the system.  Thats' what can cause
>>> ARQ.getContext() to be null - Java class initialization madness.
>>>
>>> Do you have a complete, minimal example?
>>>
>>>>
>>>> Enrico
>>>>
>>>>
>>>> — Enrico Daga (enridaga) http://www.enridaga.net Il budda e’ nel
>>>> parco.
>>
>


Re: Initializing TDB/JenaSystem properly

Posted by Andy Seaborne <an...@apache.org>.
Hi Enrico,

I was hoping to see the rest of the stack trace to see where the first 
entry point that causes initialization in Jena is happening.

Do you have something I can build+run that is smaller? There are 4 maven 
modules there and 42 java files.  There is an environmental factor here 
and I want to be runnign exactly what you are.

A POM file, and code that is minimal (just Application? Does that fail?) 
would be helpful.

Fuseki does:

public void contextInitialized(ServletContextEvent sce) {
         JenaSystem.init() ;


	Andy

On 12/04/16 18:44, Enrico Daga (enridaga) wrote:
> Hi Andy, thank you for you reply. You’re right, I was hoping it was
> not a class loading issue and I simplified the question :)
>
> This happens within a ServletContextListener in a Jetty embedded
> application [1]. In fact, I do not have any failure when I launch the
> environment using mvn jetty:run, which I do during development. But
> when I package the server, and I try to start it programmatically
> [2], it fails as described in the previous email.
>
> However, if I force JenaSystem.init() in any way (included static
> blocks in Application or Main), it still fails! I understand the app
> class loader is different from the main one, but this consideration
> alone does not help me much…
>
> Best, Enrico
>
>
> [1]
> https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/webapp/Application.java
>
>
[2] 
https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/cli/Main.java
>
>
> — Enrico Daga (enridaga) http://www.enridaga.net Il budda e’ nel
> parco.
>
>
>
>
>
>> On 12 Apr 2016, at 18:16, Andy Seaborne <an...@apache.org> wrote:
>>
>> On 12/04/16 17:22, Enrico Daga (enridaga) wrote:
>>> Hi,
>>>
>>> I want to use a TDB instance programmatically inside my
>>> application, but I am having troubles on TDB initialisation.
>>> Particularly, when I try to TDBFactory.create(…) I get a
>>> NullPointerException as follows:
>>>
>>> Caused by: java.lang.NullPointerException at
>>> org.apache.jena.tdb.sys.EnvTDB.processGlobalSystemProperties(EnvTDB.java:33)
>>>
>>>
at org.apache.jena.tdb.TDB.init(TDB.java:250)
>>> at org.apache.jena.tdb.sys.InitTDB.start(InitTDB.java:29) at
>>> org.apache.jena.system.JenaSystem.lambda$init$40(JenaSystem.java:114)
>>>
>>>
at org.apache.jena.system.JenaSystem$$Lambda$4/661672156.accept(Unknown 
Source)
>>> at java.util.ArrayList.forEach(ArrayList.java:1249) at
>>> org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:179) at
>>> org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:156) at
>>> org.apache.jena.system.JenaSystem.init(JenaSystem.java:111) […]
>>
>> What's the rest? In particular, what's causing the initialization
>> process to start?
>>
>>>
>>> The strange thing is that it looks like ARQ.getContext() returns
>>> null in EnvTDB.java:33, meaning it still needs to be initialised.
>>> But then I see the call to JenaSystem.init() in a static block
>>> inside the ARQ class, that is supposed to be at the bottom of the
>>> above stack … Here I got confused.
>>>
>>> I also tried to force JenaSystem.init(); in my main class, with
>>> the same behaviour. I am using the following maven artefacts:
>>>
>>> jena-tdb:3.0.1 jena-core:3.0.1 jena-arq:3.0.1
>>>
>>> Maybe I am missing something?
>>>
>>> Thank you for any hint!
>>
>> Possibly an unexpected way in the system.  Thats' what can cause
>> ARQ.getContext() to be null - Java class initialization madness.
>>
>> Do you have a complete, minimal example?
>>
>>>
>>> Enrico
>>>
>>>
>>> — Enrico Daga (enridaga) http://www.enridaga.net Il budda e’ nel
>>> parco.
>


Re: Initializing TDB/JenaSystem properly

Posted by "Enrico Daga (enridaga)" <en...@gmail.com>.
Hi Andy,
thank you for you reply.
You’re right, I was hoping it was not a class loading issue and I simplified the question :)

This happens within a ServletContextListener in a Jetty embedded application [1].
In fact, I do not have any failure when I launch the environment using mvn jetty:run, which I do during development.
But when I package the server, and I try to start it programmatically [2], it fails as described in the previous email.

However, if I force JenaSystem.init() in any way (included static blocks in Application or Main), it still fails!
I understand the app class loader is different from the main one, but this consideration alone does not help me much…

Best,
Enrico


[1] https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/webapp/Application.java
[2] https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/cli/Main.java


—
Enrico Daga (enridaga)
http://www.enridaga.net
Il budda e’ nel parco.





> On 12 Apr 2016, at 18:16, Andy Seaborne <an...@apache.org> wrote:
> 
> On 12/04/16 17:22, Enrico Daga (enridaga) wrote:
>> Hi,
>> 
>> I want to use a TDB instance programmatically inside my application, but I am having troubles on TDB initialisation.
>> Particularly, when I try to TDBFactory.create(…) I get a NullPointerException as follows:
>> 
>> Caused by: java.lang.NullPointerException
>> 	at org.apache.jena.tdb.sys.EnvTDB.processGlobalSystemProperties(EnvTDB.java:33)
>> 	at org.apache.jena.tdb.TDB.init(TDB.java:250)
>> 	at org.apache.jena.tdb.sys.InitTDB.start(InitTDB.java:29)
>> 	at org.apache.jena.system.JenaSystem.lambda$init$40(JenaSystem.java:114)
>> 	at org.apache.jena.system.JenaSystem$$Lambda$4/661672156.accept(Unknown Source)
>> 	at java.util.ArrayList.forEach(ArrayList.java:1249)
>> 	at org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:179)
>> 	at org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:156)
>> 	at org.apache.jena.system.JenaSystem.init(JenaSystem.java:111)
>> […]
> 
> What's the rest? In particular, what's causing the initialization process to start?
> 
>> 
>> The strange thing is that it looks like ARQ.getContext() returns null in EnvTDB.java:33, meaning it still needs to be initialised. But then I see the call to JenaSystem.init() in a static block inside the ARQ class, that is supposed to be at the bottom of the above stack … Here I got confused.
>> 
>> I also tried to force JenaSystem.init(); in my main class, with the same behaviour.
>> I am using the following maven artefacts:
>> 
>> jena-tdb:3.0.1
>> jena-core:3.0.1
>> jena-arq:3.0.1
>> 
>> Maybe I am missing something?
>> 
>> Thank you for any hint!
> 
> Possibly an unexpected way in the system.  Thats' what can cause ARQ.getContext() to be null - Java class initialization madness.
> 
> Do you have a complete, minimal example?
> 
>> 
>> Enrico
>> 
>> 
>> —
>> Enrico Daga (enridaga)
>> http://www.enridaga.net
>> Il budda e’ nel parco.


Re: Initializing TDB/JenaSystem properly

Posted by Andy Seaborne <an...@apache.org>.
On 12/04/16 17:22, Enrico Daga (enridaga) wrote:
> Hi,
>
> I want to use a TDB instance programmatically inside my application, but I am having troubles on TDB initialisation.
> Particularly, when I try to TDBFactory.create(…) I get a NullPointerException as follows:
>
> Caused by: java.lang.NullPointerException
> 	at org.apache.jena.tdb.sys.EnvTDB.processGlobalSystemProperties(EnvTDB.java:33)
> 	at org.apache.jena.tdb.TDB.init(TDB.java:250)
> 	at org.apache.jena.tdb.sys.InitTDB.start(InitTDB.java:29)
> 	at org.apache.jena.system.JenaSystem.lambda$init$40(JenaSystem.java:114)
> 	at org.apache.jena.system.JenaSystem$$Lambda$4/661672156.accept(Unknown Source)
> 	at java.util.ArrayList.forEach(ArrayList.java:1249)
> 	at org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:179)
> 	at org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:156)
> 	at org.apache.jena.system.JenaSystem.init(JenaSystem.java:111)
> […]

What's the rest? In particular, what's causing the initialization 
process to start?

>
> The strange thing is that it looks like ARQ.getContext() returns null in EnvTDB.java:33, meaning it still needs to be initialised. But then I see the call to JenaSystem.init() in a static block inside the ARQ class, that is supposed to be at the bottom of the above stack … Here I got confused.
>
> I also tried to force JenaSystem.init(); in my main class, with the same behaviour.
> I am using the following maven artefacts:
>
> jena-tdb:3.0.1
> jena-core:3.0.1
> jena-arq:3.0.1
>
> Maybe I am missing something?
>
> Thank you for any hint!

Possibly an unexpected way in the system.  Thats' what can cause 
ARQ.getContext() to be null - Java class initialization madness.

Do you have a complete, minimal example?

>
> Enrico
>
>
> —
> Enrico Daga (enridaga)
> http://www.enridaga.net
> Il budda e’ nel parco.
>
>
>
>
>