带有spring命名空间的Hazelcast - 在加载上下文时初始化节点

时间:2015-02-25 16:47:27

标签: spring hazelcast

我使用hazelcast名称空间和其中的地图定义了hazelcast实例。还使用spring cache abstraction来定义cacheManager。

<bean name="siteAdminPropertyPlaceHolderConfigurer"
      class="org.sample.SiteAdminPropertyPlaceHolderConfigurer">
    <property name="order" value="1000"/>
    <!-- last one-->
</bean>

<!-- hazelcast cache manager -->
<hz:hazelcast id="instance" lazy-init="true">
    <hz:config>
        <hz:group name="${HAZEL_GROUP_NAME}" password="${HAZEL_GROUP_PASSWORD}"/>
        <hz:network port="${HAZEL_NETWORK_PORT}" port-auto-increment="true">
            <hz:join>
                <hz:multicast enabled="${HAZEL_MULTICAST_ENABLED}"
                              multicast-group="224.2.2.3"
                              multicast-port="54327"/>
                <hz:tcp-ip enabled="${HAZEL_TCP_ENABLED}">
                    <hz:members>${HAZEL_TCP_MEMBERS}</hz:members>
                </hz:tcp-ip>
            </hz:join>
        </hz:network>
        <hz:map name="oauthClientDetailsCache"
                backup-count="1"
                max-size="0"
                eviction-percentage="30"
                read-backup-data="true"
                eviction-policy="NONE"
                merge-policy="com.hazelcast.map.merge.PassThroughMergePolicy"/>
    </hz:config>
</hz:hazelcast>

<bean id="hazelcastCacheManager" class="com.hazelcast.spring.cache.HazelcastCacheManager" lazy-init="true"
      depends-on="instance">
    <constructor-arg ref="instance"/>
</bean>

问题在于,这个spring上下文还用于我们除了服务器之外的其他工具,并且hazelcast开始监听端口并且工具实际上永远不会退出。 我试图禁用所有网络连接(enabled = false),我只是在服务器启动时以编程方式启用它们。但它不起作用hazelcast仍然开始。

我不想放弃弹簧名称空间,因为它非常方便开发人员定义新地图(弹簧缓存)。我也希望那里的榛子代码很少。

任何想法如何实现这一目标? 谢谢 施洛米

1 个答案:

答案 0 :(得分:2)

除了在每个工具运行结束时告诉hazecast关闭之外,我没有办法做到这一点。

我还将上面的定义移到了分离的XML上下文文件中,因此工具不会加载它(至少不是所有这些文件) Hazelcase.shutdownAll();