Unable to connect to 127.0.0.1:7687 Neo4j

I have an issue about connection from Android Studio to Neo4j database.
Please can you help?

The error is here:
org.neo4j.driver.exceptions.ServiceUnavailableException: Unable to connect to 127.0.0.1:7687, ensure the database is running and that there is a working network connection to it.

Can you verify the database is up and running using Neo4j Desktop's browser?

Hi,

I'm having the same problem. And yes, via the neo4j desktop browser it works.

all best
Anne

Hi,

could you give any tipps to solve the problem?

thanks!
Anne

can you provide the log/error message, the code to create your driver, and the code queuing the database? Which driver are you using?

Maybe that will help.

Hi,

  • I am using this driver (with gradle dependency):
    implementation 'org.neo4j.driver:neo4j-java-driver:5.7.0'

  • Code in the MainActivity to create the driver (now where I copy the code I am asking myself if the driver should not be initialized when pressing the button (but before, on app start):

protected void onCreate(Bundle savedInstanceState) {
    ...
        Button countNodesBtn = findViewById(R.id.countNodesBtn);
        countNodesBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"Button clicked",Toast.LENGTH_LONG).show();
                countNodes();
            }
        });
...
}
private void countNodes() {
        Driver neoDriver = initDriver();

        try (var session = neoDriver.session()) {
            var query = "MATCH () RETURN count(*) AS count";
            var params = Values.parameters();

            var res = session.run(query, params).single().get("count").asLong();
            Toast.makeText(MainActivity.this, "Found " + res + " nodes", Toast.LENGTH_LONG).show();
        }
    }
static Driver initDriver() {
        // TODO: Create and assign an instance of the driver here
        AuthToken auth = AuthTokens.basic("neo4j", "myPassword");
        Driver driver = GraphDatabase.driver("bolt://localhost:8080", auth);
        driver.verifyConnectivity();
        return driver;
    }
  • I checked the "enable dev mode in neo4j desktop and entered the 8080 port there (but it did not work before neither)

  • the result of the query in neo4j desktop delivers 8 as count

  • and here the error/log:

2023-05-18 08:27:32.638 13202-13202 AndroidRuntime          com.example.beneficialfoods          E  FATAL EXCEPTION: main
                                                                                                    Process: com.example.beneficialfoods, PID: 13202
                                                                                                    org.neo4j.driver.exceptions.ServiceUnavailableException: Unable to connect to localhost:8080, ensure the database is running and that there is a working network connection to it.
                                                                                                    	at org.neo4j.driver.internal.util.ErrorUtil.rethrowAsyncException(ErrorUtil.java:113)
                                                                                                    	at org.neo4j.driver.internal.util.Futures.blockingGet(Futures.java:111)
                                                                                                    	at org.neo4j.driver.internal.util.Futures.blockingGet(Futures.java:89)
                                                                                                    	at org.neo4j.driver.internal.InternalDriver.verifyConnectivity(InternalDriver.java:159)
                                                                                                    	at com.example.beneficialfoods.MainActivity.initDriver(MainActivity.java:125)
                                                                                                    	at com.example.beneficialfoods.MainActivity.countNodes(MainActivity.java:107)
                                                                                                    	at com.example.beneficialfoods.MainActivity.-$$Nest$mcountNodes(Unknown Source:0)
                                                                                                    	at com.example.beneficialfoods.MainActivity$2.onClick(MainActivity.java:77)
                                                                                                    	at android.view.View.performClick(View.java:7506)
                                                                                                    	at android.view.View.performClickInternal(View.java:7483)
                                                                                                    	at android.view.View.-$$Nest$mperformClickInternal(Unknown Source:0)
                                                                                                    	at android.view.View$PerformClick.run(View.java:29334)
                                                                                                    	at android.os.Handler.handleCallback(Handler.java:942)
                                                                                                    	at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                                    	at android.os.Looper.loopOnce(Looper.java:201)
                                                                                                    	at android.os.Looper.loop(Looper.java:288)
                                                                                                    	at android.app.ActivityThread.main(ActivityThread.java:7872)
                                                                                                    	at java.lang.reflect.Method.invoke(Native Method)
                                                                                                    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
                                                                                                    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
                                                                                                    	Suppressed: org.neo4j.driver.internal.util.ErrorUtil$InternalExceptionCause
                                                                                                    		at org.neo4j.driver.internal.async.connection.ChannelConnectedListener.databaseUnavailableError(ChannelConnectedListener.java:72)
                                                                                                    		at org.neo4j.driver.internal.async.connection.ChannelConnectedListener.operationComplete(ChannelConnectedListener.java:66)
                                                                                                    		at org.neo4j.driver.internal.async.connection.ChannelConnectedListener.operationComplete(ChannelConnectedListener.java:36)
                                                                                                    		at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
                                                                                                    		at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:583)
                                                                                                    		at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:559)
                                                                                                    		at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
                                                                                                    		at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636)
                                                                                                    		at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:629)
                                                                                                    		at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:118)
                                                                                                    		at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(AbstractNioChannel.java:321)
                                                                                                    		at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:337)
                                                                                                    		at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
                                                                                                    		at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
                                                                                                    		at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
                                                                                                    		at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
                                                                                                    		at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
                                                                                                    		at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
                                                                                                    		at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
                                                                                                    		at java.lang.Thread.run(Thread.java:1012)
                                                                                                    Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: localhost/127.0.0.1:8080
                                                                                                    Caused by: java.net.ConnectException: Connection refused
                                                                                                    	at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
                                                                                                    	at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:762)
                                                                                                    	at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:337)
                                                                                                    	at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334)
2023-05-18 08:27:32.638 13202-13202 AndroidRuntime          com.example.beneficialfoods          E  	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
                                                                                                    	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
                                                                                                    	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
                                                                                                    	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
                                                                                                    	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
                                                                                                    	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
                                                                                                    	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
                                                                                                    	at java.lang.Thread.run(Thread.java:1012)

Anne

moved the driver init out of the onClickHandler but it is still the same. DB can be accessed via neo4j desktop but in Android Studio it does not work (connection refused error msg) :frowning:

Hi Gary,

could the information I sent last week help to find the problem?

all best
Anne

In your initial code you created your driver with bolt protocol pointing port 8080. The bolt protocol is on 7687.

You should create one driver at application start up and reuse throughout your application. Get a new session from the driver each time you want to interact with the database.