因此,我正在使用Hazelcast创建服务器和客户端。 原来,尝试运行客户端时出现以下异常。
WARNING: hz.client_0 [56086-56015-56176] [3.7.8] Exception during initial connection to /192.168.1.112:5706
com.hazelcast.client.AuthenticationException: Invalid credentials!
at com.hazelcast.client.connection.nio.ClientConnectionManagerImpl$2.onResponse(ClientConnectionManagerImpl.java:530)
at com.hazelcast.client.connection.nio.ClientConnectionManagerImpl$2.onResponse(ClientConnectionManagerImpl.java:513)
at com.hazelcast.spi.impl.AbstractInvocationFuture$1.run(AbstractInvocationFuture.java:251)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
at com.hazelcast.util.executor.HazelcastManagedThread.executeRun(HazelcastManagedThread.java:76)
at com.hazelcast.util.executor.HazelcastManagedThread.run(HazelcastManagedThread.java:92)
错误来自:
ClientConfig hzConfig = getHzConfig();
hz = HazelcastClient.newHazelcastClient(hzConfig);
getHzConfig:
private static ClientConfig getHzConfig() {
String addresses = Optional.ofNullable(System.getProperty("addresses")).orElseThrow(IllegalArgumentException::new);
String addressList[] = addresses.split(";");
ClientConfig clientConfig = new ClientConfig();
clientConfig.setGroupConfig(new GroupConfig("56086-56015-56176", "56086-56015-56176"));
ClientNetworkConfig networkConfig = clientConfig.getNetworkConfig();
for (String address : addressList) {
networkConfig.addAddress(address);
}
return clientConfig;
}
这是我的hazelcast.xml
答案 0 :(得分:1)
您的服务器的组名称为56015-56086-56176
。
您的客户具有组名56086-56015-56176
。
三重奏的前两个部分被移调。
与密码相同。另请注意,从3.8版开始不推荐使用该密码,请参见here
答案 1 :(得分:1)
您的客户端配置使用密码"56086-56015-56176"
,但是您的成员配置包含组密码"56015-56086-56176"
。即第一部分和第二部分(破折号)被交换。
这是正确的客户端配置:
clientConfig.setGroupConfig(new GroupConfig("56015-56086-56176", "56015-56086-56176"));
更新:
确保Hazelcast成员在服务器端获取正确的配置文件。默认情况下,它在当前目录中搜索hazelcast.xml
。您可以显式提供路径-可以使用编程方式:
Config config = new XmlConfigBuilder("/path/to/hazelcast.xml").build();
HazelcastInstance hz = Hazelcast.newHazelcastInstance(config);
或者,如果您使用简单的Hazelcast.newHazelcastInstance()
,则可以通过hazelcast.config
系统属性对其进行控制:
java -Dhazelcast.config=/path/to/hazelcast.xml ...