UpdateValve needs to execute manager.store only once at the end of the request #2084

pull/2085/head
Zhelyazko Chobantonov 6 years ago
parent d3acc0249b
commit c281910669

@ -31,6 +31,7 @@ import org.apache.catalina.valves.ValveBase;
*/ */
public class UpdateValve extends ValveBase { public class UpdateValve extends ValveBase {
private static final String ALREADY_FILTERED_NOTE = UpdateValve.class.getName() + ".ALREADY_FILTERED_NOTE";
private final RedissonSessionManager manager; private final RedissonSessionManager manager;
public UpdateValve(RedissonSessionManager manager) { public UpdateValve(RedissonSessionManager manager) {
@ -40,9 +41,13 @@ public class UpdateValve extends ValveBase {
@Override @Override
public void invoke(Request request, Response response) throws IOException, ServletException { public void invoke(Request request, Response response) throws IOException, ServletException {
//check if we already filtered/processed this request
if (request.getNote(ALREADY_FILTERED_NOTE) == null) {
request.setNote(ALREADY_FILTERED_NOTE, Boolean.TRUE);
try { try {
getNext().invoke(request, response); getNext().invoke(request, response);
} finally { } finally {
request.removeNote(ALREADY_FILTERED_NOTE);
final ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); final ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
try { try {
ClassLoader applicationClassLoader = request.getContext().getLoader().getClassLoader(); ClassLoader applicationClassLoader = request.getContext().getLoader().getClassLoader();
@ -52,6 +57,9 @@ public class UpdateValve extends ValveBase {
Thread.currentThread().setContextClassLoader(classLoader); Thread.currentThread().setContextClassLoader(classLoader);
} }
} }
} else {
getNext().invoke(request, response);
}
} }
} }

@ -31,6 +31,7 @@ import org.apache.catalina.valves.ValveBase;
*/ */
public class UpdateValve extends ValveBase { public class UpdateValve extends ValveBase {
private static final String ALREADY_FILTERED_NOTE = UpdateValve.class.getName() + ".ALREADY_FILTERED_NOTE";
private final RedissonSessionManager manager; private final RedissonSessionManager manager;
public UpdateValve(RedissonSessionManager manager) { public UpdateValve(RedissonSessionManager manager) {
@ -40,9 +41,13 @@ public class UpdateValve extends ValveBase {
@Override @Override
public void invoke(Request request, Response response) throws IOException, ServletException { public void invoke(Request request, Response response) throws IOException, ServletException {
//check if we already filtered/processed this request
if (request.getNote(ALREADY_FILTERED_NOTE) == null) {
request.setNote(ALREADY_FILTERED_NOTE, Boolean.TRUE);
try { try {
getNext().invoke(request, response); getNext().invoke(request, response);
} finally { } finally {
request.removeNote(ALREADY_FILTERED_NOTE);
final ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); final ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
try { try {
ClassLoader applicationClassLoader = request.getContext().getLoader().getClassLoader(); ClassLoader applicationClassLoader = request.getContext().getLoader().getClassLoader();
@ -52,6 +57,9 @@ public class UpdateValve extends ValveBase {
Thread.currentThread().setContextClassLoader(classLoader); Thread.currentThread().setContextClassLoader(classLoader);
} }
} }
} else {
getNext().invoke(request, response);
}
} }
} }

@ -31,6 +31,7 @@ import org.apache.catalina.valves.ValveBase;
*/ */
public class UpdateValve extends ValveBase { public class UpdateValve extends ValveBase {
private static final String ALREADY_FILTERED_NOTE = UpdateValve.class.getName() + ".ALREADY_FILTERED_NOTE";
private final RedissonSessionManager manager; private final RedissonSessionManager manager;
public UpdateValve(RedissonSessionManager manager) { public UpdateValve(RedissonSessionManager manager) {
@ -40,9 +41,13 @@ public class UpdateValve extends ValveBase {
@Override @Override
public void invoke(Request request, Response response) throws IOException, ServletException { public void invoke(Request request, Response response) throws IOException, ServletException {
//check if we already filtered/processed this request
if (request.getNote(ALREADY_FILTERED_NOTE) == null) {
request.setNote(ALREADY_FILTERED_NOTE, Boolean.TRUE);
try { try {
getNext().invoke(request, response); getNext().invoke(request, response);
} finally { } finally {
request.removeNote(ALREADY_FILTERED_NOTE);
final ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); final ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
try { try {
ClassLoader applicationClassLoader = request.getContext().getLoader().getClassLoader(); ClassLoader applicationClassLoader = request.getContext().getLoader().getClassLoader();
@ -52,6 +57,9 @@ public class UpdateValve extends ValveBase {
Thread.currentThread().setContextClassLoader(classLoader); Thread.currentThread().setContextClassLoader(classLoader);
} }
} }
} else {
getNext().invoke(request, response);
}
} }
} }

@ -31,6 +31,7 @@ import org.apache.catalina.valves.ValveBase;
*/ */
public class UpdateValve extends ValveBase { public class UpdateValve extends ValveBase {
private static final String ALREADY_FILTERED_NOTE = UpdateValve.class.getName() + ".ALREADY_FILTERED_NOTE";
private final RedissonSessionManager manager; private final RedissonSessionManager manager;
public UpdateValve(RedissonSessionManager manager) { public UpdateValve(RedissonSessionManager manager) {
@ -40,9 +41,13 @@ public class UpdateValve extends ValveBase {
@Override @Override
public void invoke(Request request, Response response) throws IOException, ServletException { public void invoke(Request request, Response response) throws IOException, ServletException {
//check if we already filtered/processed this request
if (request.getNote(ALREADY_FILTERED_NOTE) == null) {
request.setNote(ALREADY_FILTERED_NOTE, Boolean.TRUE);
try { try {
getNext().invoke(request, response); getNext().invoke(request, response);
} finally { } finally {
request.removeNote(ALREADY_FILTERED_NOTE);
final ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); final ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
try { try {
ClassLoader applicationClassLoader = request.getContext().getLoader().getClassLoader(); ClassLoader applicationClassLoader = request.getContext().getLoader().getClassLoader();
@ -52,6 +57,9 @@ public class UpdateValve extends ValveBase {
Thread.currentThread().setContextClassLoader(classLoader); Thread.currentThread().setContextClassLoader(classLoader);
} }
} }
} else {
getNext().invoke(request, response);
}
} }
} }

Loading…
Cancel
Save