From 5bde40d9418c2585c2b0674ffc4abc8e3b40c7a5 Mon Sep 17 00:00:00 2001 From: mm Date: Tue, 13 Aug 2019 13:39:08 +0200 Subject: [PATCH] ATS-13 update Mongo Java Driver --- pom.xml | 2 +- .../mongo/MongoSessionTrackerValve.java | 4 +--- .../tomcat/session/mongo/MongoStore.java | 22 +++++++++---------- 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/pom.xml b/pom.xml index 5fe0307..5fe6c38 100644 --- a/pom.xml +++ b/pom.xml @@ -200,7 +200,7 @@ org.mongodb mongo-java-driver - 3.5.0 + 3.10.2 provided diff --git a/src/main/java/org/appng/tomcat/session/mongo/MongoSessionTrackerValve.java b/src/main/java/org/appng/tomcat/session/mongo/MongoSessionTrackerValve.java index 12f0ea8..a2e36e3 100644 --- a/src/main/java/org/appng/tomcat/session/mongo/MongoSessionTrackerValve.java +++ b/src/main/java/org/appng/tomcat/session/mongo/MongoSessionTrackerValve.java @@ -39,9 +39,7 @@ public void invoke(Request request, Response response) throws IOException, Servl getNext().invoke(request, response); } finally { long start = System.currentTimeMillis(); - if (!Utils.isTemplateRequest(request)) { - storeSession(request, response); - } + storeSession(request, response); long duration = System.currentTimeMillis() - start; if (log.isDebugEnabled() && duration > 0) { log.debug(String.format("handling session for %s took %sms", request.getServletPath(), duration)); diff --git a/src/main/java/org/appng/tomcat/session/mongo/MongoStore.java b/src/main/java/org/appng/tomcat/session/mongo/MongoStore.java index db5753b..60cfdb5 100644 --- a/src/main/java/org/appng/tomcat/session/mongo/MongoStore.java +++ b/src/main/java/org/appng/tomcat/session/mongo/MongoStore.java @@ -60,7 +60,7 @@ public class MongoStore extends StoreBase { private final Log log = Utils.getLog(MongoStore.class); /** Property used to store the Session's ID */ - private static final String idProperty = "_id"; + private static final String idProperty = "session_id"; /** Property used to store the Session's context name */ protected static final String appContextProperty = "app"; @@ -174,7 +174,7 @@ public class MongoStore extends StoreBase { /** The {@link ReadPreference}, using {@link ReadPreference#primary()} for maximum consistency by default */ protected ReadPreference readPreference = ReadPreference.primary(); - /** The {@link ReadConcern}, using {@link ReadConcern#MAJORITY} for maximum consistency by default */ + /** The {@link ReadConcern}, using {@link ReadConcern#DEFAULT} for maximum consistency by default */ protected ReadConcern readConcern = ReadConcern.DEFAULT; /** Should a TTL index be used to expire sessions ? */ @@ -461,26 +461,24 @@ private void getConnection() throws LifecycleException { } MongoClientOptions options = MongoClientOptions.builder().connectTimeout(connectionTimeoutMs) .maxWaitTime(connectionWaitTimeoutMs).connectionsPerHost(maxPoolSize).writeConcern(writeConcern) - .readPreference(readPreference).readConcern(readConcern).build(); + .readPreference(readPreference).readConcern(readConcern).requiredReplicaSetName(replicaSet).build(); List hosts = new ArrayList(); - String[] dbHosts = this.hosts.split(","); - for (String dbHost : dbHosts) { + for (String dbHost : this.hosts.split(",")) { String[] hostInfo = dbHost.split(":"); - ServerAddress address = new ServerAddress(hostInfo[0], Integer.parseInt(hostInfo[1])); - hosts.add(address); + hosts.add(new ServerAddress(hostInfo[0], Integer.parseInt(hostInfo[1]))); } info("%s [%s]: Connecting to MongoDB [%s]", getStoreName(), this.getName(), this.hosts); - List credentials = new ArrayList(); if (this.username != null || this.password != null) { info("%s [%s]: Authenticating using [%s]", getStoreName(), this.getName(), this.username); - for (int i = 0; i < hosts.size(); i++) { - credentials.add(MongoCredential.createCredential(username, dbName, password.toCharArray())); - } + MongoCredential credential = MongoCredential.createCredential(username, dbName, + password.toCharArray()); + this.mongoClient = new MongoClient(hosts, credential, options); + } else { + this.mongoClient = new MongoClient(hosts, options); } - this.mongoClient = new MongoClient(hosts, credentials, options); } info("%s [%s]: Using Database [%s]", getStoreName(), this.getName(), this.dbName);