Integrate Neo4j DB with Java and Apache Tomcat

118 views
Skip to first unread message

sd...@njit.edu

unread,
Sep 3, 2014, 9:52:28 PM9/3/14
to ne...@googlegroups.com
Hello,

My name is Shashank. I am currently a Masters student. I am trying to explore new technologies and new to Neo4j. I have basic idea on nodes, relationships and querying the database. I have developed a small database in my laptop. I want to integrate it with Java and implement few algorithms on the data (like apriori algorithm) for my data mining project.

Is it a good idea to use Neo4j for data mining. If so, please let me know any example that can fetch data from Neo4j server using Java. Also, I was wondering whether we can use Tomcat instead of Maven. 

Your help is very much appreciated.

Thanks,
Shashank

Sukaant Chaudhary

unread,
Sep 4, 2014, 5:17:22 AM9/4/14
to ne...@googlegroups.com
Hi Shashank,
Use the code in the following link, it is cypher-jdbc, it will help you to integrate with Java:
http://docs.neo4j.org/chunked/stable/tutorials-cypher-java.html

You need the following dependency:
<dependency>
          <groupId>org.neo4j</groupId>
          <artifactId>neo4j-kernel</artifactId>
          <version>${neo4j.version}</version>
 </dependency>

About Tomcat and Maven
Tomcat is a Server whereas Maven is a build tool both are different things.

Hope this will help.
If you have any further queries please feel free to ask.

-Sukaant Chaudhary



--
You received this message because you are subscribed to the Google Groups "Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email to neo4j+un...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

sd...@njit.edu

unread,
Sep 4, 2014, 3:37:03 PM9/4/14
to ne...@googlegroups.com
Hi Sukaant,

I tried integrating my database with Java. I created a small java application, added neo4j dependency in pom.xml.

Below is the code I wrote.

GraphDatabaseService db = new GraphDatabaseFactory().newEmbeddedDatabase("path of my db");
ExecutionEngine engine = new ExecutionEngine(db, StringLogger.SYSTEM );

ExecutionResult result;
try ( Transaction ignored = db.beginTx() )
{
   result = engine.execute( "match (n) return n" );
}
System.out.print(result);
db.shutdown();

This is throwing the below error. I tried looking for the solution, but that was not successful. Below is the error i received.

Exception in thread "main" org.neo4j.graphdb.TransactionFailureException: Failed to mark transaction as rollback only.
at org.neo4j.kernel.TopLevelTransaction.markAsRollbackOnly(TopLevelTransaction.java:97)
at org.neo4j.kernel.TopLevelTransaction.failure(TopLevelTransaction.java:86)
at org.neo4j.cypher.internal.spi.v2_1.TransactionBoundQueryContext.close(TransactionBoundQueryContext.scala:65)
at org.neo4j.cypher.internal.compiler.v2_1.spi.DelegatingQueryContext.close(DelegatingQueryContext.scala:38)
at org.neo4j.cypher.internal.compiler.v2_1.spi.ExceptionTranslatingQueryContext.org$neo4j$cypher$internal$compiler$v2_1$spi$ExceptionTranslatingQueryContext$$super$close(ExceptionTranslatingQueryContext.scala:34)
at org.neo4j.cypher.internal.compiler.v2_1.spi.ExceptionTranslatingQueryContext$$anonfun$close$1.apply$mcV$sp(ExceptionTranslatingQueryContext.scala:34)
at org.neo4j.cypher.internal.compiler.v2_1.spi.ExceptionTranslatingQueryContext$$anonfun$close$1.apply(ExceptionTranslatingQueryContext.scala:34)
at org.neo4j.cypher.internal.compiler.v2_1.spi.ExceptionTranslatingQueryContext$$anonfun$close$1.apply(ExceptionTranslatingQueryContext.scala:34)
at org.neo4j.cypher.internal.compiler.v2_1.spi.ExceptionTranslatingQueryContext.org$neo4j$cypher$internal$compiler$v2_1$spi$ExceptionTranslatingQueryContext$$translateException(ExceptionTranslatingQueryContext.scala:152)
at org.neo4j.cypher.internal.compiler.v2_1.spi.ExceptionTranslatingQueryContext.close(ExceptionTranslatingQueryContext.scala:34)
at org.neo4j.cypher.internal.compiler.v2_1.spi.DelegatingQueryContext.close(DelegatingQueryContext.scala:38)
at org.neo4j.cypher.internal.compiler.v2_1.executionplan.ExecutionWorkflowBuilder$$anonfun$runWithQueryState$1.apply(ExecutionPlanBuilder.scala:164)
at org.neo4j.cypher.internal.compiler.v2_1.executionplan.ExecutionWorkflowBuilder$$anonfun$runWithQueryState$1.apply(ExecutionPlanBuilder.scala:164)
at org.neo4j.cypher.internal.compiler.v2_1.TaskCloser$$anonfun$1.apply(TaskCloser.scala:43)
at org.neo4j.cypher.internal.compiler.v2_1.TaskCloser$$anonfun$1.apply(TaskCloser.scala:41)
at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
at scala.collection.immutable.List.foreach(List.scala:318)
at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:251)
at scala.collection.AbstractTraversable.flatMap(Traversable.scala:105)
at org.neo4j.cypher.internal.compiler.v2_1.TaskCloser.close(TaskCloser.scala:40)
at org.neo4j.cypher.internal.compiler.v2_1.ClosingIterator$$anonfun$close$1.apply$mcV$sp(ClosingIterator.scala:67)
at org.neo4j.cypher.internal.compiler.v2_1.ClosingIterator$$anonfun$close$1.apply(ClosingIterator.scala:67)
at org.neo4j.cypher.internal.compiler.v2_1.ClosingIterator$$anonfun$close$1.apply(ClosingIterator.scala:67)
at org.neo4j.cypher.internal.compiler.v2_1.ClosingIterator$$anonfun$translateException$1.apply(ClosingIterator.scala:72)
at org.neo4j.cypher.internal.compiler.v2_1.ClosingIterator.decoratedCypherException(ClosingIterator.scala:102)
at org.neo4j.cypher.internal.compiler.v2_1.ClosingIterator.translateException(ClosingIterator.scala:70)
at org.neo4j.cypher.internal.compiler.v2_1.ClosingIterator.close(ClosingIterator.scala:66)
at org.neo4j.cypher.internal.compiler.v2_1.ClosingIterator$$anonfun$failIfThrows$1.apply(ClosingIterator.scala:96)
at org.neo4j.cypher.internal.compiler.v2_1.ClosingIterator.decoratedCypherException(ClosingIterator.scala:102)
at org.neo4j.cypher.internal.compiler.v2_1.ClosingIterator.failIfThrows(ClosingIterator.scala:91)
at org.neo4j.cypher.internal.compiler.v2_1.ClosingIterator.hasNext(ClosingIterator.scala:34)
at org.neo4j.cypher.internal.compiler.v2_1.PipeExecutionResult.hasNext(PipeExecutionResult.scala:167)
at scala.collection.Iterator$class.toString(Iterator.scala:1153)
at org.neo4j.cypher.internal.compiler.v2_1.PipeExecutionResult.toString(PipeExecutionResult.scala:35)
at java.lang.String.valueOf(String.java:2854)
at java.io.PrintStream.print(PrintStream.java:683)
at cricketFun.main(cricketFun.java:25)
Caused by: java.lang.NullPointerException
at org.neo4j.kernel.TopLevelTransaction.markAsRollbackOnly(TopLevelTransaction.java:93)
... 37 more


Why is it failing to fetch the data? Am I doing anything wrong? Also, if I tried running the application second time, it throws me this error.


Exception in thread "main" java.lang.RuntimeException: Error starting org.neo4j.kernel.EmbeddedGraphDatabase, C:\Users\sd482\Documents\Neo4j\default.graphdb
at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:362)
at org.neo4j.kernel.EmbeddedGraphDatabase.<init>(EmbeddedGraphDatabase.java:59)
at org.neo4j.graphdb.factory.GraphDatabaseFactory$1.newDatabase(GraphDatabaseFactory.java:90)
at org.neo4j.graphdb.factory.GraphDatabaseBuilder.newGraphDatabase(GraphDatabaseBuilder.java:199)
at org.neo4j.graphdb.factory.GraphDatabaseFactory.newEmbeddedDatabase(GraphDatabaseFactory.java:70)
at cricketFun.main(cricketFun.java:16)
Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.StoreLockerLifecycleAdapter@f1bb79c' was successfully initialized, but failed to start. Please see attached cause exception.
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:513)
at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115)
at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:339)
... 5 more
Caused by: org.neo4j.kernel.StoreLockException: Unable to obtain lock on store lock file: C:\Users\sd482\Documents\Neo4j\default.graphdb\store_lock. Please ensure no other process is using this database, and that the directory is writable (required even for read-only access)
at org.neo4j.kernel.StoreLocker.checkLock(StoreLocker.java:82)
at org.neo4j.kernel.StoreLockerLifecycleAdapter.start(StoreLockerLifecycleAdapter.java:44)
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:507)
... 7 more
Caused by: java.io.IOException: Couldn't lock lock file C:\Users\sd482\Documents\Neo4j\default.graphdb\lock because another process already holds the lock.
at org.neo4j.kernel.impl.nioneo.store.FileLock.getLockFileBasedFileLock(FileLock.java:120)
at org.neo4j.kernel.impl.nioneo.store.FileLock.getOsSpecificFileLock(FileLock.java:64)
at org.neo4j.kernel.DefaultFileSystemAbstraction.tryLock(DefaultFileSystemAbstraction.java:93)
at org.neo4j.kernel.StoreLocker.checkLock(StoreLocker.java:74)
... 9 more


I know this is due to the locking issue. Though I'm using "db.shutdown();" in my code, it is not unlocking the database when the application is terminated. I had to close the IDE everytime to unlock it. Please let me know where I am making the mistake.

Sorry for the very long question, and thank you so much for your help. :)

Thanks,
Shashank

Michael Hunger

unread,
Sep 4, 2014, 3:44:38 PM9/4/14
to ne...@googlegroups.com
You have the wrong execution-engine, you need the javacompat one.

Your results contain nodes to access them (for printing) you need a transaction.
There is a result.dumpToString() method which you can use within your transaction.

Or just return attributes of the nodes from your query.

Michael

Saishashank Devannagari

unread,
Sep 4, 2014, 5:43:10 PM9/4/14
to ne...@googlegroups.com
Hi Michael,

Thank you for the quick response. It is working now as expected. :)

Milton Yutaka Nishiyama Junior

unread,
Jan 22, 2015, 12:37:13 AM1/22/15
to ne...@googlegroups.com
Hi Everyone,

I have a plataform in Java running with Tomcat, and I want to create a simple interface to access and make some queries in the neo4j graphdb, and I would like to know if there is any simple example on how to create a web interface to acess graphdb based on java and tomcat.
I gave a look in the Spring website, but I didn't find an easy example, and I don't have experience with Spring.

Thank You,

Milton

Sukaant Chaudhary

unread,
Jan 22, 2015, 1:21:56 AM1/22/15
to ne...@googlegroups.com
Please let me know if you need any further help in this.

-Sukaant Chaudhary

Reply all
Reply to author
Forward
0 new messages