【发布时间】:2018-07-06 21:44:44
【问题描述】:
我在 Hazelcast 文档的第 24 章之后创建了一个用户定义的服务,但他们从未提及使客户端能够使用 Hazelcast 客户端实例的 getDistributedObject 方法访问分布式对象所必需的。我的 xml 配置只是添加了序列化的默认(非常空白)xml。这是我的服务使用 hazelcast 节点配置的配置:
<services enable-defaults="true">
<service enabled="true">
<name>MapManagerService</name>
<class-name>com.ctl.hzl.service.MapManagerService</class-name>
</service>
</services>
我正在使用 Hazelcast-client-3.10.1 和 Java 1.8。除了 xsi 文档之外,我找不到任何格式指南,该文档很有用,但并没有真正向我展示支持我的服务需要包含的内容。我在一次尝试中收到一条错误消息,其中提到了某种服务工厂,我认为这一定是我需要的,但我一直无法找出需要什么。这是架构位置,如果有帮助的话。提前致谢。
xsi:schemaLocation="http://www.hazelcast.com/schema/client-config
http://www.hazelcast.com/schema/config/hazelcast-client-config-3.10.xsd">
【问题讨论】:
-
您是否让您的服务实现了 com.hazelcast.spi.RemoteService,因为这对于让客户可以访问服务至关重要?查看文档:docs.hazelcast.org/docs/3.10.2/manual/html-single/…
-
是的,该服务以文档中描述的方式及其 CounterService 示例实现了 ManagedService 和 RemoteService。它可以跨实例正常工作,但不能跨客户端工作。我认为我的问题是我没有为我的客户定义一个工厂类型来使用我的服务,我目前正在寻找一种方法。如果我没有在客户端 xml 中定义我的服务就运行,我会收到此错误:“没有为服务注册工厂:MapManagerService”
-
我相信我的问题是这个的部分重复:stackoverflow.com/questions/30839563/…,但他们没有显示如何定义客户端服务方法请求,也没有显示如何通过 xml 配置服务,这是我需要做的两件事。