Skip to content

Commit

Permalink
Issue #6118 Warn if hazelcast cfg file is missing SessionDataSerializ…
Browse files Browse the repository at this point in the history
…er (#6321)

* Issue #6118 Warn if hazelcast cfg file is missing SessionDataSerializer

Signed-off-by: Jan Bartel <janb@webtide.com>
  • Loading branch information
janbartel committed Jun 2, 2021
1 parent 8f0bb81 commit b6f5490
Showing 1 changed file with 16 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import com.hazelcast.client.config.XmlClientConfigBuilder;
import com.hazelcast.config.Config;
import com.hazelcast.config.MapConfig;
import com.hazelcast.config.SerializationConfig;
import com.hazelcast.config.SerializerConfig;
import com.hazelcast.config.XmlConfigBuilder;
import com.hazelcast.core.Hazelcast;
Expand All @@ -36,6 +37,8 @@
import org.eclipse.jetty.server.session.SessionDataStoreFactory;
import org.eclipse.jetty.server.session.SessionHandler;
import org.eclipse.jetty.util.StringUtil;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;

/**
* Factory to construct {@link HazelcastSessionDataStore}
Expand All @@ -44,7 +47,8 @@ public class HazelcastSessionDataStoreFactory
extends AbstractSessionDataStoreFactory
implements SessionDataStoreFactory
{

private static final Logger LOG = Log.getLogger(HazelcastSessionDataStoreFactory.class);

private String hazelcastInstanceName = "JETTY_DISTRIBUTED_SESSION_INSTANCE";

private boolean onlyClient;
Expand Down Expand Up @@ -82,9 +86,10 @@ public SessionDataStore getSessionDataStore(SessionHandler handler)
{
if (onlyClient)
{
ClientConfig config;
if (StringUtil.isEmpty(configurationLocation))
{
ClientConfig config = new ClientConfig();
config = new ClientConfig();

if (addresses != null && !addresses.isEmpty())
{
Expand All @@ -95,20 +100,22 @@ public SessionDataStore getSessionDataStore(SessionHandler handler)
.setImplementation(new SessionDataSerializer())
.setTypeClass(SessionData.class);
config.getSerializationConfig().addSerializerConfig(sc);
hazelcastInstance = HazelcastClient.newHazelcastClient(config);
}
else
{
hazelcastInstance = HazelcastClient.newHazelcastClient(
new XmlClientConfigBuilder(configurationLocation).build());
config = new XmlClientConfigBuilder(configurationLocation).build();
if (config.getSerializationConfig().getSerializerConfigs().stream().noneMatch(s ->
SessionData.class.getName().equals(s.getTypeClassName()) && s.getImplementation() instanceof SessionDataSerializer))
LOG.warn("Hazelcast xml config is missing org.eclipse.jetty.hazelcast.session.SessionDataSerializer - sessions may not serialize correctly");
}

hazelcastInstance = HazelcastClient.newHazelcastClient(config);
}
else
{
Config config;
if (StringUtil.isEmpty(configurationLocation))
{

SerializerConfig sc = new SerializerConfig()
.setImplementation(new SessionDataSerializer())
.setTypeClass(SessionData.class);
Expand All @@ -130,6 +137,9 @@ public SessionDataStore getSessionDataStore(SessionHandler handler)
else
{
config = new XmlConfigBuilder(configurationLocation).build();
if (config.getSerializationConfig().getSerializerConfigs().stream().noneMatch(s ->
SessionData.class.getName().equals(s.getTypeClassName()) && s.getImplementation() instanceof SessionDataSerializer))
LOG.warn("Hazelcast xml config is missing org.eclipse.jetty.hazelcast.session.SessionDataSerializer - sessions may not serialize correctly");
}
config.setInstanceName(hazelcastInstanceName);
hazelcastInstance = Hazelcast.getOrCreateHazelcastInstance(config);
Expand Down

0 comments on commit b6f5490

Please sign in to comment.