
com.guicedee.guicedhazelcast.implementations.HazelcastClientProvider Maven / Gradle / Ivy
package com.guicedee.guicedhazelcast.implementations;
import com.google.inject.Provider;
import com.guicedee.guicedhazelcast.HazelcastProperties;
import com.guicedee.guicedhazelcast.services.HazelcastPreStartup;
import com.guicedee.guicedhazelcast.services.IGuicedHazelcastClientConfig;
import com.guicedee.guicedinjection.GuiceContext;
import com.guicedee.guicedinjection.interfaces.IGuicePreDestroy;
import com.guicedee.logger.LogFactory;
import com.hazelcast.client.HazelcastClient;
import com.hazelcast.client.config.ClientConfig;
import com.hazelcast.client.config.ClientNetworkConfig;
import com.hazelcast.config.GroupConfig;
import com.hazelcast.core.HazelcastInstance;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ServiceLoader;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
public class HazelcastClientProvider
implements Provider, IGuicePreDestroy
{
private static final Logger log = LogFactory.getLog("HazelcastClientProvider");
private static HazelcastInstance clientInstance;
@Override
public HazelcastInstance get()
{
if (HazelcastPreStartup.instance != null)
{
return HazelcastPreStartup.instance;
}
if(clientInstance != null)
return clientInstance;
ClientConfig config = new ClientConfig();
Set configSet = GuiceContext.instance()
.getLoader(IGuicedHazelcastClientConfig.class, true, ServiceLoader.load(IGuicedHazelcastClientConfig.class));
for (IGuicedHazelcastClientConfig iGuicedHazelcastClientConfig : configSet)
{
config = iGuicedHazelcastClientConfig.buildConfig(config);
}
log.config("Final Hazelcast Client Configuration - " + config.toString());
try
{
config.addLabel(InetAddress.getLocalHost()
.getHostAddress());
}
catch (UnknownHostException e)
{
log.log(Level.SEVERE, "Unable to make an inet address from localhost", e);
}
ClientNetworkConfig clientNetworkConfig = new ClientNetworkConfig();
clientNetworkConfig.addAddress(HazelcastProperties.getAddress());
GroupConfig groupConfig = new GroupConfig();
groupConfig.setName(HazelcastProperties.getGroupName());
config.setGroupConfig(groupConfig);
config.setInstanceName(HazelcastProperties.getInstanceName());
return clientInstance = HazelcastClient.newHazelcastClient(config);
}
@Override
public void onDestroy()
{
if(clientInstance != null)
{
clientInstance.shutdown();
clientInstance = null;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy