131.3. 将 hazelcast 实例作为 OSGI 服务发布
如果在 OSGI 容器中操作,您希望在同一容器中的所有捆绑包中使用一个 hazelcast 实例。您可以使用缓存需求将实例作为 OSGI 服务和捆绑包发布,以引用 hazelcast 端点中的服务。
131.3.1. 捆绑包 A 创建实例并将其发布为 OSGI 服务 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
<bean id="config" class="com.hazelcast.config.FileSystemXmlConfig"> <argument type="java.lang.String" value="${hazelcast.config}"/> </bean> <bean id="hazelcastInstance" class="com.hazelcast.core.Hazelcast" factory-method="newHazelcastInstance"> <argument type="com.hazelcast.config.Config" ref="config"/> </bean> <!-- publishing the hazelcastInstance as a service --> <service ref="hazelcastInstance" interface="com.hazelcast.core.HazelcastInstance" />
<bean id="config" class="com.hazelcast.config.FileSystemXmlConfig">
<argument type="java.lang.String" value="${hazelcast.config}"/>
</bean>
<bean id="hazelcastInstance" class="com.hazelcast.core.Hazelcast" factory-method="newHazelcastInstance">
<argument type="com.hazelcast.config.Config" ref="config"/>
</bean>
<!-- publishing the hazelcastInstance as a service -->
<service ref="hazelcastInstance" interface="com.hazelcast.core.HazelcastInstance" />
131.3.2. 捆绑包 B 使用实例 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
<!-- referencing the hazelcastInstance as a service --> <reference ref="hazelcastInstance" interface="com.hazelcast.core.HazelcastInstance" /> <camelContext xmlns="http://camel.apache.org/schema/blueprint"> <route id="testHazelcastInstanceBeanRefPut"> <from uri="direct:testHazelcastInstanceBeanRefPut"/> <setHeader headerName="CamelHazelcastOperationType"> <constant>put</constant> </setHeader> <to uri="hazelcast-map:testmap?hazelcastInstance=#hazelcastInstance"/> </route> <route id="testHazelcastInstanceBeanRefGet"> <from uri="direct:testHazelcastInstanceBeanRefGet" /> <setHeader headerName="CamelHazelcastOperationType"> <constant>get</constant> </setHeader> <to uri="hazelcast-map:testmap?hazelcastInstance=#hazelcastInstance"/> <to uri="seda:out" /> </route> </camelContext>
<!-- referencing the hazelcastInstance as a service -->
<reference ref="hazelcastInstance" interface="com.hazelcast.core.HazelcastInstance" />
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route id="testHazelcastInstanceBeanRefPut">
<from uri="direct:testHazelcastInstanceBeanRefPut"/>
<setHeader headerName="CamelHazelcastOperationType">
<constant>put</constant>
</setHeader>
<to uri="hazelcast-map:testmap?hazelcastInstance=#hazelcastInstance"/>
</route>
<route id="testHazelcastInstanceBeanRefGet">
<from uri="direct:testHazelcastInstanceBeanRefGet" />
<setHeader headerName="CamelHazelcastOperationType">
<constant>get</constant>
</setHeader>
<to uri="hazelcast-map:testmap?hazelcastInstance=#hazelcastInstance"/>
<to uri="seda:out" />
</route>
</camelContext>