diff --git a/samples/misc/hazelcast/src/main/java/sample/Initializer.java b/samples/misc/hazelcast/src/main/java/sample/Initializer.java index e117eb39..36d3227f 100644 --- a/samples/misc/hazelcast/src/main/java/sample/Initializer.java +++ b/samples/misc/hazelcast/src/main/java/sample/Initializer.java @@ -23,15 +23,11 @@ import java.util.Map; import javax.servlet.DispatcherType; import javax.servlet.FilterRegistration.Dynamic; -import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; import com.hazelcast.config.Config; -import com.hazelcast.config.MapConfig; -import com.hazelcast.config.NetworkConfig; -import com.hazelcast.config.SerializerConfig; import com.hazelcast.core.Hazelcast; import com.hazelcast.core.HazelcastInstance; @@ -43,31 +39,20 @@ import org.springframework.session.web.http.SessionRepositoryFilter; @WebListener public class Initializer implements ServletContextListener { + + private static final String SESSION_MAP_NAME = "spring:session:sessions"; + private HazelcastInstance instance; public void contextInitialized(ServletContextEvent sce) { - String sessionMapName = "spring:session:sessions"; - ServletContext sc = sce.getServletContext(); - - Config cfg = new Config(); - NetworkConfig netConfig = new NetworkConfig(); - netConfig.setPort(getAvailablePort()); - cfg.setNetworkConfig(netConfig); - SerializerConfig serializer = new SerializerConfig().setTypeClass(Object.class) - .setImplementation(new ObjectStreamSerializer()); - cfg.getSerializationConfig().addSerializerConfig(serializer); - MapConfig mc = new MapConfig(); - mc.setName(sessionMapName); - mc.setTimeToLiveSeconds(MapSession.DEFAULT_MAX_INACTIVE_INTERVAL_SECONDS); - cfg.addMapConfig(mc); - - this.instance = Hazelcast.newHazelcastInstance(cfg); - Map sessions = this.instance.getMap(sessionMapName); + this.instance = createHazelcastInstance(); + Map sessions = this.instance.getMap(SESSION_MAP_NAME); SessionRepository sessionRepository = new MapSessionRepository(sessions); SessionRepositoryFilter filter = new SessionRepositoryFilter<>( sessionRepository); - Dynamic fr = sc.addFilter("springSessionFilter", filter); + + Dynamic fr = sce.getServletContext().addFilter("springSessionFilter", filter); fr.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/*"); } @@ -75,6 +60,17 @@ public class Initializer implements ServletContextListener { this.instance.shutdown(); } + private HazelcastInstance createHazelcastInstance() { + Config config = new Config(); + + config.getNetworkConfig().setPort(getAvailablePort()); + + config.getMapConfig(SESSION_MAP_NAME) + .setTimeToLiveSeconds(MapSession.DEFAULT_MAX_INACTIVE_INTERVAL_SECONDS); + + return Hazelcast.newHazelcastInstance(config); + } + private static int getAvailablePort() { ServerSocket socket = null; try { @@ -92,4 +88,5 @@ public class Initializer implements ServletContextListener { } } } + } diff --git a/samples/misc/hazelcast/src/main/java/sample/ObjectStreamSerializer.java b/samples/misc/hazelcast/src/main/java/sample/ObjectStreamSerializer.java deleted file mode 100644 index 1e9149f3..00000000 --- a/samples/misc/hazelcast/src/main/java/sample/ObjectStreamSerializer.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2014-2016 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package sample; - -import java.io.IOException; -import java.io.InputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.io.OutputStream; - -import com.hazelcast.nio.ObjectDataInput; -import com.hazelcast.nio.ObjectDataOutput; -import com.hazelcast.nio.serialization.StreamSerializer; - -/** - * A {@link StreamSerializer} that uses Java serialization to persist the session. This is - * certainly not the most efficient way to persist sessions, but the example is intended - * to demonstrate using minimal dependencies. For better serialization methods try using - * Kryo. - * - * @author Rob Winch - * - */ -public class ObjectStreamSerializer implements StreamSerializer { - public int getTypeId() { - return 2; - } - - public void write(ObjectDataOutput objectDataOutput, Object object) - throws IOException { - ObjectOutputStream out = new ObjectOutputStream((OutputStream) objectDataOutput); - out.writeObject(object); - out.flush(); - } - - public Object read(ObjectDataInput objectDataInput) throws IOException { - ObjectInputStream in = new ObjectInputStream((InputStream) objectDataInput); - try { - return in.readObject(); - } - catch (ClassNotFoundException e) { - throw new IOException(e); - } - } - - public void destroy() { - } - -}