You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Glenn TheMan <an...@hotmail.com> on 2020/04/02 07:54:02 UTC
Sv: Sv: Sv: Embed Fuseki in Spring Boot (Jetty 9.4)
>> I'm afraid the computer does not agree with you :-)
True, always trust the machine. Maybe some trolls was borrowing that port on my machine :)
About the access the Fuseki homepage at http://localhost:3330/ and the Error 404: null response. According to the documentation the UI is not included<https://jena.apache.org/documentation/fuseki2/fuseki-main.html> in the embedded SPARQL Fuseki jar, hence the error code 404.
>> The config file has to be loaded: .parseConfigFile("....");
Question -> Where can I find the parse function. Is there a util class for FusekiServer?
//Cheers
________________________________
Från: Andy Seaborne <an...@apache.org>
Skickat: den 31 mars 2020 12:17
Till: users@jena.apache.org <us...@jena.apache.org>
Ämne: Re: Sv: Sv: Embed Fuseki in Spring Boot (Jetty 9.4)
On 31/03/2020 09:24, Glenn TheMan wrote:
> Hi Andy
>
> The Jetty included in Spring Boot runs on 8080 by default, so there shouldn't be ant conflict.
I'm afraid the computer does not agree with you :-)
>> java.io.IOException: Failed to bind to 0.0.0.0/0.0.0.0:3330
>> java.net.BindException: Address already in use
It may be a complete different process on the same machine (same port
space if containers).
> You can configure this with the property in application.properties for Spring: server.port=8081
> I've fix the conflict so the both the RESTful and html/javascript are served on this port now.
>
> When trying to access the Fuseki endpoint: http://localhost:3330/ds/<http://localhost:3330/ds/query>
> I get a HTTP error code 404 and a something that look like a Turtle result wrapped in curly brackets. Is that what is called a named graph
Weird : 404 is not found and if Fuseki returns it, it means the dataset
or graph isn't found at all which means no response body.
If you GET a dataset then you get back the dataset quads, here in TriG,
with a 200.
>
> <http://clearbyte.org/> {
> <http://clearbyte.org/paintingTechnique>
> a <http://www.w3.org/2000/01/rdf-schema#Property> .
> <http://clearbyte.org/guernica>
> a <http://clearbyte.org/Painting> ;
> <http://www.w3.org/2000/01/rdf-schema#label>
> "Guernica" ;
> <http://clearbyte.org/paintingTechnique>
> <http://clearbyte.org/oil> .
>
> I've added a config.ttl and shiro.ini file which is now included in the spring JAR file in the root directory main/resources/.
>
> Question:
>
> 1. Does the creation of Fuseki server = FusekiServer.create().add("/ds", dataset).build(); override the configuration file fuseki:name "ds". Which one take precedent?
The config file has to be loaded: .parseConfigFile("....");
> 2. Is the curly brackets response (using /ds/get or /ds/data) what is called a named graph?
Yes.
> 3. I guess I now have two instances of Jetty running on different ports, which is fine for the moment. Referring to your replay, since the Fuseki-main implementation is a Servlet filter it would be possible to inject it into a Spring MVC servlet since Spring boot uses the DispatcherServlet pattern?
Probably (= "yes, I don't see why not but I haven't tried").
Getting to it isn't easy - you'll have to look a the code of
FusekiServer.Builder.
How it will interact with DispatcherServlet, I don't know.
Andy
>
> Greetings.
>
> ________________________________
> Från: Andy Seaborne <an...@apache.org>
> Skickat: den 30 mars 2020 19:38
> Till: users@jena.apache.org <us...@jena.apache.org>
> Ämne: Re: Sv: Embed Fuseki in Spring Boot (Jetty 9.4)
>
> Hi Glenn,
>
> The error means that something else is already using port.
>
> Have you configured the Spring Boot Jetty server to use port 3330?
>
> FusekiServer...build() will create a new Jetty server but maybe that's
> OK if nothing else is not already listening on the port.
>
> What's hard if you want other application code along side Fuseki on the
> same port. Spring Boot probable wants to be in charge but you can add
> arbitrary servlets to Fuseki itself.
>
>> 1. Can I configure Fuseki to run inside a Spring container which already uses a Jetty 9.4. Or do I need to runt to separate Jetty instances. Please provide code pattern?
>
> Only in theory. the core of Fuseki is server neutral (it's a servlet
> Filter), it is the packaging that choose to use Jetty.
>
> Fuseki-main is Jetty specific. It does not have a means to use an
> external jetty server. I don't use Spring Boot - how does an
> application get a the Jetty server? Maybe injecting a jetty server could
> be done (in a future re;lease of Fuseki).
>
> It is also available as a WAR file which is portable across web
> application servers.
>
> Can you run the war file?
>
>> 2. Where am I suppose to place the configure file (config.ttl). The static web files in Spring Boot is placed under main/resources/static?
>
> It's opened as a file so the "current directory" applies.
>
> Andy
>
> On 30/03/2020 14:07, Glenn TheMan wrote:
>> I use jena version 3.14.0.
>>
>> <dependency>
>> <groupId>org.apache.jena</groupId>
>> <artifactId>apache-jena-libs</artifactId>
>> <type>pom</type>
>> <version>3.14.0</version>
>> </dependency>
>> <dependency>
>> <groupId>org.apache.jena</groupId>
>> <artifactId>jena-fuseki-main</artifactId>
>> <version>3.14.0</version>
>> </dependency>
>> ________________________________
>> Från: Glenn Eriksson <an...@hotmail.com>
>> Skickat: den 30 mars 2020 14:49
>> Till: users@jena.apache.org <us...@jena.apache.org>
>> Ämne: Embed Fuseki in Spring Boot (Jetty 9.4)
>>
>> Hi, in my use-case use the Spring Boot container for handling repository connections (Spring Data), RESTful web services et cetera. I also want to use a embedded Fuseki Servers to provide a SPARQL endpoint.
>>
>> When The Fuseki Servers start it throws a exception saying that the address/port already in use.
>>
>> java.io.IOException: Failed to bind to 0.0.0.0/0.0.0.0:3330
>> java.net.BindException: Address already in use
>>
>> My Spring bean fuseki service:
>>
>> @Service
>> public class FusekiService {
>> ...
>> public void initModel() {
>> model = ModelFactory.createDefaultModel();
>> InputStream in1 = FileManager.get().open(ARTIST_MODEL_FILE);
>> model.read(in1, BASE_URL, "TURTLE");
>> LOGGER.debug("Statements read from file: {}", model.size());
>> }
>>
>> @PostConstruct
>> public void initService() {
>> initModel();
>> Dataset dataset = DatasetFactory.createTxnMem();
>
> You could read it straight into the Dataset, making the model unnecessary.
>
>
> RDFDataMgr.read(dataset.getNamedModel(BASE_URL),
> ARTIST_MODEL_FILE,
> BASE_URL,
> Lang.Turtle);
>
>> dataset.addNamedModel(BASE_URL, model);
>> server = FusekiServer.create().add("/data", dataset).verbose(true).build();
>> server.start();
>> LOGGER.debug("Fuseki service started.");
>> }
>>
>> Questions:
>>
>> 1. Can I configure Fuseki to run inside a Spring container which already uses a Jetty 9.4. Or do I need to runt to separate Jetty instances. Please provide code pattern?
>> 2. Where am I suppose to place the configure file (config.ttl). The static web files in Spring Boot is placed under main/resources/static?
>>
>> Best regards.
>>
>