java - GridDB JAVA API 中的异常

标签 java database iot in-memory-database griddb

我已经在 Ubuntu 上安装了 GridDB。我使用两台计算机:第一台计算机用作 GridDB 服务器,第二台计算机用作 java 客户端,当我尝试从第二台计算机连接到 GridDB 时,它会抛出异常,但是当我在服务器端运行 java 代码时,它工作得很好。有什么问题?我用这个tutorial .

这里是简单的java代码:

import java.util.Arrays;
import java.util.Properties;

import com.toshiba.mwcloud.gs.Collection;
import com.toshiba.mwcloud.gs.GSException;
import com.toshiba.mwcloud.gs.GridStore;
import com.toshiba.mwcloud.gs.GridStoreFactory;
import com.toshiba.mwcloud.gs.Query;
import com.toshiba.mwcloud.gs.RowKey;
import com.toshiba.mwcloud.gs.RowSet;


// Operaton on Collection data
public class Sample1 {

    static class Person {
        @RowKey String name;
        boolean status;
        long count;
        byte[] lob;
    }

    public static void main(String[] args) throws GSException {

        // Get a GridStore instance
        Properties props = new Properties();
        props.setProperty("notificationAddress", "239.0.0.1");
        props.setProperty("notificationPort", "31999");
        props.setProperty("clusterName", "defaultCluster");
        props.setProperty("user", "admin");
        props.setProperty("password", "admin");
        GridStore store = GridStoreFactory.getInstance().getGridStore(props);

        // Create a Collection (Delete if schema setting is NULL)
        Collection<String, Person> col = store.putCollection("col01", Person.class);


    }

}

当我尝试从第二台计算机连接时,出现异常:

com.toshiba.mwcloud.gs.common.GSConnectionException: [145028:JC_BAD_CONNECTION] Failed to connect (address=/127.0.1.1:10001, reason=Connection refused: connect)
    at com.toshiba.mwcloud.gs.subnet.NodeConnection.<init>(NodeConnection.java:142)
    at com.toshiba.mwcloud.gs.subnet.NodeConnectionPool.resolve(NodeConnectionPool.java:163)
    at com.toshiba.mwcloud.gs.subnet.NodeResolver.updateConnectionAndClusterInfo(NodeResolver.java:644)
    at com.toshiba.mwcloud.gs.subnet.NodeResolver.prepareConnectionAndClusterInfo(NodeResolver.java:529)
    at com.toshiba.mwcloud.gs.subnet.NodeResolver.getPartitionCount(NodeResolver.java:205)
    at com.toshiba.mwcloud.gs.subnet.GridStoreChannel$5.execute(GridStoreChannel.java:2106)
    at com.toshiba.mwcloud.gs.subnet.GridStoreChannel.executeStatement(GridStoreChannel.java:1675)
    at com.toshiba.mwcloud.gs.subnet.GridStoreChannel.executeResolver(GridStoreChannel.java:1912)
    at com.toshiba.mwcloud.gs.subnet.GridStoreChannel.resolvePartitionId(GridStoreChannel.java:2103)
    at com.toshiba.mwcloud.gs.subnet.SubnetGridStore.putContainer(SubnetGridStore.java:968)
    at com.toshiba.mwcloud.gs.subnet.SubnetGridStore.putCollection(SubnetGridStore.java:1024)
    at com.toshiba.mwcloud.gs.subnet.SubnetGridStore.putCollection(SubnetGridStore.java:787)
    at com.toshiba.mwcloud.gs.subnet.SubnetGridStore.putCollection(SubnetGridStore.java:98)
    at pac.Main.main(Main.java:39)
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at com.toshiba.mwcloud.gs.subnet.NodeConnection.<init>(NodeConnection.java:129)
    ... 13 more

最佳答案

Caused by: java.net.ConnectException: Connection refused: connect

问题是服务器不接受来自第二台计算机的连接。这可能是由于多种原因造成的。最有可能的是:

  • 您的服务器未监听其外部 IP 地址上的请求。 (例如,数据库可能仅监听 127.0.0.1。)在服务器上,检查哪些服务正在监听服务器的外部 IP 地址;例如https://www.tecmint.com/find-listening-ports-linux/ .

  • 您的客户端可能配置为与错误的服务器通信,或使用错误的端口。

  • 防火墙。 (尽管正常的防火墙行为是丢弃连接数据包,从而导致不同的异常。)

还有其他可能性,但以上内容应该足以让您开始。

<小时/>

如果上述方法未能确定问题,您将需要采取以下措施:

  • 检查使用 TCP 诊断工具连接到该数据库服务器/端口时会发生什么情况。它是否在 TCP 级别连接?

  • 使用网络数据包嗅探器来查看当客户端尝试连接到数据库时 TCP 数据包发生了什么。

  • 检查路由表和 IP 表中是否存在奇怪的路由规则。如果您使用的是虚拟机,也请检查虚拟机管理程序级别。

关于java - GridDB JAVA API 中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59741508/

相关文章:

java - Java十进制转二进制方法

java - executeUpdate 失败原因 ("INSERT...");

SQL为每个用户获取最近修改的帖子

mysql - 带有 "LIMIT 1"的 MySQL SELECT 查询是否可能返回一个集合而不是单个值?

tcp - MQTT连接耗电少

Azure IoT 将文件上传到 Blob

java - java中的正则表达式删除csv中的第一个值

java - 如何为 Eclipse 配置 tomcat java?

django - 如何设计数据库中的用户表?

azure - Azure IoT Hub的多个接收器,如何设置Azure函数的Epoch值?