diff --git a/xml/bundles/org.eclipse.wst.xml.core/src-validation/org/eclipse/wst/xml/core/internal/validation/ValidatorHelper.java b/xml/bundles/org.eclipse.wst.xml.core/src-validation/org/eclipse/wst/xml/core/internal/validation/ValidatorHelper.java
index 38b7cd7..e73f2d9 100644
--- a/xml/bundles/org.eclipse.wst.xml.core/src-validation/org/eclipse/wst/xml/core/internal/validation/ValidatorHelper.java
+++ b/xml/bundles/org.eclipse.wst.xml.core/src-validation/org/eclipse/wst/xml/core/internal/validation/ValidatorHelper.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2017 IBM Corporation and others.
+ * Copyright (c) 2001, 2023 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
  * which accompanies this distribution, and is available at
@@ -17,6 +17,7 @@
 import java.io.InputStream;
 import java.io.Reader;
 import java.net.URL;
+import java.net.URLConnection;
 import java.time.Duration;
 import java.util.HashMap;
 import java.util.Map;
@@ -48,6 +49,7 @@
  */
 public class ValidatorHelper
 {
+  private static final int TWO_MINUTES = (int) Duration.ofMinutes(2).toMillis();
   public boolean isGrammarEncountered = false;
   public boolean isDTDEncountered = false;
   public boolean isNamespaceEncountered = false;
@@ -388,10 +390,12 @@
     return string;
   }
 
-  private static boolean checkGrammarImpl(String location) {
+  private static boolean doCheckGrammar(String location) {
     try {
       URL url = new URL(location);
-      try (InputStream is = url.openStream()) {
+      URLConnection connection = url.openConnection();
+      connection.setConnectTimeout(TWO_MINUTES);
+      try (InputStream is = connection.getInputStream()) {
         return true;
       }
     } catch (Exception e) {
@@ -400,11 +404,13 @@
     return false;
   }
 
-  private synchronized static boolean checkGrammar(String location) {
+  private static boolean checkGrammar(String location) {
     GrammarEncounteredResult result = grammarCheckerCache.get(location);
-    if (result == null || (System.currentTimeMillis() - result.timestamp) > Duration.ofMinutes(10).toMillis()) {
-      result = new GrammarEncounteredResult(checkGrammarImpl(location));
-      grammarCheckerCache.put(location, result);
+    if (result == null || (System.currentTimeMillis() - result.timestamp) > TWO_MINUTES) {
+      result = new GrammarEncounteredResult(doCheckGrammar(location));
+      synchronized (grammarCheckerCache) {
+    	  grammarCheckerCache.put(location, result);
+      }
     }
     return result.result;
   }
