Hazelcast REST API

8
我无法使用 Hazelcast 的 REST API 工作,一直收到以下信息:
  1. at client side : ERR_EMPTY_RESPONSE via Browser or java.net.SocketException: Unexpected end of file from server via a Java Test Program.
  2. at hazelcast node:

    INFO: [myIP]:5701 [dev] [3.6] Established socket connection between /127.0.0.1:5701 and /127.0.0.1:62816
    06-may-2016 13:04:20 com.hazelcast.nio.tcp.TcpIpConnection
    INFO: [myIP]:5701 [dev] [3.6] Connection [/127.0.0.1:62816] lost. Reason: Socket explicitly closed
    

所使用的代码只是Hazelcast的multimap示例: 而REST API URI为http://localhost:5701/hazelcast/rest/maps/my-distributed-map/key


你是否尝试访问multimap?Multimap是不被支持的,只支持集群信息、映射和队列。 - noctarius
只是一个地图,就像示例程序一样:ConcurrentMap<String, String> map = h.getMap("my-distributed-map"),还有IMap、Multimap...始终是相同的响应。 - Azimuts
1
REST可用吗?默认情况下,在3.6之后应该禁用它。 - Murat Ayan
@Murat,你没问题。相同的示例在3.5.2版本中运行良好...我不知道如何启用。我尝试了"hazelcast.mc.rest.enabled",但没有任何效果。 - Azimuts
2
启用REST的正确属性是:-Dhazelcast.rest.enabled=true。此方法适用于3.6版本之后。 - Azimuts
“Cheers. hazelcast.mc.rest.enabled 是用于管理中心 REST 的,我个人认为。” - Murat Ayan
4个回答

10

我认为在某个版本之前,REST接口默认是禁用的。你需要为你的应用程序添加JVM参数。

-Dhazelcast.rest.enabled=true

在从Hazelcast 3.5升级到3.7后,遇到了类似的问题。 - Chikipowpow

4
如果您想通过编程方式实现,例如使用Spring Boot @Configuration Bean,使用以下方法在返回的com.hazelcast.config.Config类上进行操作:
.setProperty("hazelcast.rest.enabled", "true")

4
您可以在hazelcast.xml配置文件中添加hazelcast.rest.enabled。
<hazelcast>
   ...
  <properties>
    ...
    <property name="hazelcast.rest.enabled">true</property>
  </properties> 
</hazelcast>

3

hazelcast.rest.enabled属性已在Hazelcast 4中删除。

如果你希望在Hazelcast 4中以编程方式实现此功能,可以使用REST端点组。

RestApiConfig restApiConfig = new RestApiConfig()
        .setEnabled(true)
        .enableGroups(RestEndpointGroup.DATA);
config.getNetworkConfig().setRestApiConfig(restApiConfig);

在声明式配置中。
<hazelcast>
    ...
    <network>
        <rest-api enabled="true">
            <endpoint-group name="DATA" enabled="true"/>
        </rest-api>
    </network>
</hazelcast>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接