This is an automated email from the ASF dual-hosted git repository. remm pushed a commit to branch 8.5.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/8.5.x by this push: new c3e62032d5 Localization for debug strings c3e62032d5 is described below commit c3e62032d5928b8951b0742ca02eb87d9a546b9b Author: remm <r...@apache.org> AuthorDate: Mon Feb 12 11:19:54 2024 +0100 Localization for debug strings Since debug is now more significant. --- .../catalina/authenticator/AuthenticatorBase.java | 33 +++++++++--------- .../catalina/authenticator/FormAuthenticator.java | 40 +++++++++++----------- .../catalina/authenticator/LocalStrings.properties | 12 +++++++ .../authenticator/NonLoginAuthenticator.java | 4 +-- .../catalina/authenticator/SSLAuthenticator.java | 8 ++--- .../apache/catalina/connector/CoyoteAdapter.java | 4 +-- java/org/apache/catalina/core/ContainerBase.java | 2 +- .../apache/catalina/core/LocalStrings.properties | 6 ++++ .../catalina/core/NamingContextListener.java | 16 +++++---- .../core/ThreadLocalLeakPreventionListener.java | 4 ++- .../catalina/filters/CsrfPreventionFilter.java | 40 ++++++++++------------ .../catalina/filters/LocalStrings.properties | 4 +++ .../catalina/ha/session/ClusterManagerBase.java | 4 ++- .../catalina/ha/session/LocalStrings.properties | 2 ++ .../apache/catalina/ha/tcp/LocalStrings.properties | 3 ++ .../apache/catalina/ha/tcp/SimpleTcpCluster.java | 8 ++--- .../mbeans/GlobalResourcesLifecycleListener.java | 2 +- .../apache/catalina/mbeans/LocalStrings.properties | 1 + .../catalina/realm/JAASMemoryLoginModule.java | 2 +- java/org/apache/catalina/realm/JNDIRealm.java | 8 ++--- .../apache/catalina/realm/LocalStrings.properties | 2 ++ java/org/apache/catalina/realm/RealmBase.java | 2 +- java/org/apache/catalina/session/FileStore.java | 2 +- .../catalina/session/LocalStrings.properties | 3 ++ java/org/apache/catalina/session/ManagerBase.java | 8 ++--- .../apache/catalina/session/StandardManager.java | 4 +-- java/org/apache/catalina/startup/Catalina.java | 6 ++-- .../org/apache/catalina/startup/ContextConfig.java | 7 ++-- .../startup/CopyParentClassLoaderRule.java | 4 +-- java/org/apache/catalina/startup/HostConfig.java | 4 +-- .../catalina/startup/LocalStrings.properties | 4 +++ .../group/interceptors/LocalStrings.properties | 1 + .../group/interceptors/TcpFailureDetector.java | 2 +- .../group/interceptors/TcpPingInterceptor.java | 4 +-- .../tribes/membership/LocalStrings.properties | 6 ++++ .../tribes/membership/McastServiceImpl.java | 18 ++++++---- .../tribes/tipis/AbstractReplicatedMap.java | 12 +++---- .../catalina/tribes/tipis/LocalStrings.properties | 6 +++- .../catalina/tribes/tipis/ReplicatedMap.java | 2 +- .../tribes/transport/LocalStrings.properties | 1 + .../catalina/tribes/transport/ReceiverBase.java | 2 +- .../tribes/transport/nio/LocalStrings.properties | 3 ++ .../catalina/tribes/transport/nio/NioReceiver.java | 10 +++--- .../tribes/transport/nio/NioReplicationTask.java | 2 +- .../apache/catalina/valves/ErrorReportValve.java | 2 +- .../catalina/valves/ExtendedAccessLogValve.java | 4 +-- .../catalina/valves/JsonErrorReportValve.java | 2 +- .../catalina/valves/LoadBalancerDrainingValve.java | 5 ++- .../apache/catalina/valves/LocalStrings.properties | 7 ++++ .../catalina/valves/ProxyErrorReportValve.java | 2 +- .../catalina/valves/StuckThreadDetectionValve.java | 2 +- .../valves/rewrite/LocalStrings.properties | 2 ++ .../catalina/valves/rewrite/RewriteValve.java | 7 ++-- java/org/apache/coyote/AbstractProcessor.java | 2 +- java/org/apache/coyote/LocalStrings.properties | 1 + java/org/apache/coyote/ajp/AjpProcessor.java | 4 +-- java/org/apache/coyote/ajp/LocalStrings.properties | 2 ++ .../coyote/http11/filters/GzipOutputFilter.java | 4 ++- .../coyote/http11/filters/LocalStrings.properties | 2 ++ java/org/apache/jasper/JspC.java | 11 +++--- java/org/apache/jasper/compiler/AntCompiler.java | 3 +- java/org/apache/jasper/compiler/Compiler.java | 3 +- java/org/apache/jasper/compiler/JDTCompiler.java | 3 +- java/org/apache/jasper/compiler/JspReader.java | 2 +- .../optimizations/ELInterpreterTagSetters.java | 19 +++++----- .../jasper/resources/LocalStrings.properties | 9 +++++ .../apache/tomcat/util/buf/LocalStrings.properties | 3 ++ java/org/apache/tomcat/util/buf/StringCache.java | 6 ++-- .../tomcat/util/http/LocalStrings.properties | 1 + .../tomcat/util/http/Rfc6265CookieProcessor.java | 2 +- .../tomcat/util/threads/LocalStrings.properties | 2 ++ .../org/apache/tomcat/util/threads/TaskThread.java | 4 ++- 72 files changed, 262 insertions(+), 172 deletions(-) diff --git a/java/org/apache/catalina/authenticator/AuthenticatorBase.java b/java/org/apache/catalina/authenticator/AuthenticatorBase.java index 5c4f533eca..b4eb94ebfd 100644 --- a/java/org/apache/catalina/authenticator/AuthenticatorBase.java +++ b/java/org/apache/catalina/authenticator/AuthenticatorBase.java @@ -442,8 +442,8 @@ public abstract class AuthenticatorBase extends ValveBase implements Authenticat @Override public void invoke(Request request, Response response) throws IOException, ServletException { - if (log.isDebugEnabled()) { - log.debug("Security checking request " + request.getMethod() + " " + request.getRequestURI()); + if (log.isTraceEnabled()) { + log.trace("Security checking request " + request.getMethod() + " " + request.getRequestURI()); } // Have we got a cached authenticated Principal to record? @@ -454,8 +454,8 @@ public abstract class AuthenticatorBase extends ValveBase implements Authenticat if (session != null) { principal = session.getPrincipal(); if (principal != null) { - if (log.isDebugEnabled()) { - log.debug("We have cached auth type " + session.getAuthType() + " for principal " + + if (log.isTraceEnabled()) { + log.trace("We have cached auth type " + session.getAuthType() + " for principal " + principal); } request.setAuthType(session.getAuthType()); @@ -477,8 +477,8 @@ public abstract class AuthenticatorBase extends ValveBase implements Authenticat } if (constraints == null && !context.getPreemptiveAuthentication() && !authRequired) { - if (log.isDebugEnabled()) { - log.debug("Not subject to any constraint"); + if (log.isTraceEnabled()) { + log.trace("Not subject to any constraint"); } getNext().invoke(request, response); return; @@ -504,7 +504,7 @@ public abstract class AuthenticatorBase extends ValveBase implements Authenticat } if (!realm.hasUserDataPermission(request, response, constraints)) { if (log.isDebugEnabled()) { - log.debug("Failed hasUserDataPermission() test"); + log.debug(sm.getString("authenticator.userDataPermissionFail")); } /* * ASSERT: Authenticator already set the appropriate HTTP status code, so we do not have to do anything @@ -543,7 +543,7 @@ public abstract class AuthenticatorBase extends ValveBase implements Authenticat if ((authRequired || constraints != null) && allowCorsPreflightBypass(request)) { if (log.isDebugEnabled()) { - log.debug("CORS Preflight request bypassing authentication"); + log.debug(sm.getString("authenticator.corsBypass")); } getNext().invoke(request, response); return; @@ -564,7 +564,7 @@ public abstract class AuthenticatorBase extends ValveBase implements Authenticat if (jaspicProvider == null && !doAuthenticate(request, response) || jaspicProvider != null && !authenticateJaspic(request, response, jaspicState, false)) { if (log.isDebugEnabled()) { - log.debug("Failed authenticate() test"); + log.debug(sm.getString("authenticator.authenticationFail")); } /* * ASSERT: Authenticator already set the appropriate HTTP status code, so we do not have to do anything @@ -581,7 +581,7 @@ public abstract class AuthenticatorBase extends ValveBase implements Authenticat } if (!realm.hasResourcePermission(request, response, constraints, this.context)) { if (log.isDebugEnabled()) { - log.debug("Failed accessControl() test"); + log.debug(sm.getString("authenticator.userPermissionFail", request.getUserPrincipal().getName())); } /* * ASSERT: AccessControl method has already set the appropriate HTTP status code, so we do not have to @@ -814,8 +814,8 @@ public abstract class AuthenticatorBase extends ValveBase implements Authenticat if (authStatus == AuthStatus.SUCCESS) { GenericPrincipal principal = getPrincipal(client); - if (log.isDebugEnabled()) { - log.debug("Authenticated user: " + principal); + if (log.isTraceEnabled()) { + log.trace("Authenticated user: " + principal); } if (principal == null) { request.setUserPrincipal(null); @@ -976,8 +976,7 @@ public abstract class AuthenticatorBase extends ValveBase implements Authenticat associate(ssoId, request.getSessionInternal(true)); if (log.isDebugEnabled()) { - log.debug("Reauthenticated cached principal '" + request.getUserPrincipal().getName() + - "' with auth type '" + request.getAuthType() + "'"); + log.debug(sm.getString("authenticator.reauthentication", request.getUserPrincipal().getName(), request.getAuthType())); } } @@ -1019,7 +1018,7 @@ public abstract class AuthenticatorBase extends ValveBase implements Authenticat if (log.isDebugEnabled()) { String name = (principal == null) ? "none" : principal.getName(); - log.debug("Authenticated '" + name + "' with type '" + authType + "'"); + log.debug(sm.getString("authenticator.authentication", name, authType)); } // Cache the authentication information in our request @@ -1219,9 +1218,9 @@ public abstract class AuthenticatorBase extends ValveBase implements Authenticat } if (log.isDebugEnabled()) { if (sso != null) { - log.debug("Found SingleSignOn Valve at " + sso); + log.debug(sm.getString("authenticator.sso", sso)); } else { - log.debug("No SingleSignOn Valve is present"); + log.trace("No SingleSignOn Valve is present"); } } diff --git a/java/org/apache/catalina/authenticator/FormAuthenticator.java b/java/org/apache/catalina/authenticator/FormAuthenticator.java index 52b76ea398..fc449abd5f 100644 --- a/java/org/apache/catalina/authenticator/FormAuthenticator.java +++ b/java/org/apache/catalina/authenticator/FormAuthenticator.java @@ -165,14 +165,14 @@ public class FormAuthenticator extends AuthenticatorBase { // Have we authenticated this user before but have caching disabled? if (!cache) { session = request.getSessionInternal(true); - if (log.isDebugEnabled()) { - log.debug("Checking for reauthenticate in session " + session); + if (log.isTraceEnabled()) { + log.trace("Checking for reauthenticate in session " + session); } String username = (String) session.getNote(Constants.SESS_USERNAME_NOTE); String password = (String) session.getNote(Constants.SESS_PASSWORD_NOTE); if (username != null && password != null) { - if (log.isDebugEnabled()) { - log.debug("Reauthenticating username '" + username + "'"); + if (log.isTraceEnabled()) { + log.trace("Reauthenticating username '" + username + "'"); } principal = context.getRealm().authenticate(username, password); if (principal != null) { @@ -182,7 +182,7 @@ public class FormAuthenticator extends AuthenticatorBase { } } if (log.isDebugEnabled()) { - log.debug("Reauthentication failed, proceed normally"); + log.debug(sm.getString("formAuthenticator.reauthFailed")); } } } @@ -191,17 +191,17 @@ public class FormAuthenticator extends AuthenticatorBase { // authentication? If so, forward the *original* request instead. if (matchRequest(request)) { session = request.getSessionInternal(true); - if (log.isDebugEnabled()) { - log.debug("Restore request from session '" + session.getIdInternal() + "'"); + if (log.isTraceEnabled()) { + log.trace("Restore request from session '" + session.getIdInternal() + "'"); } if (restoreRequest(request, session)) { - if (log.isDebugEnabled()) { - log.debug("Proceed to restored request"); + if (log.isTraceEnabled()) { + log.trace("Proceed to restored request"); } return true; } else { if (log.isDebugEnabled()) { - log.debug("Restore of original request failed"); + log.debug(sm.getString("formAuthenticator.restoreFailed")); } response.sendError(HttpServletResponse.SC_BAD_REQUEST); return false; @@ -240,13 +240,13 @@ public class FormAuthenticator extends AuthenticatorBase { } session = request.getSessionInternal(true); - if (log.isDebugEnabled()) { - log.debug("Save request in session '" + session.getIdInternal() + "'"); + if (log.isTraceEnabled()) { + log.trace("Save request in session '" + session.getIdInternal() + "'"); } try { saveRequest(request, session); } catch (IOException ioe) { - log.debug("Request body too big to save during authentication"); + log.debug(sm.getString("authenticator.requestBodyTooBig")); response.sendError(HttpServletResponse.SC_FORBIDDEN, sm.getString("authenticator.requestBodyTooBig")); return false; } @@ -263,8 +263,8 @@ public class FormAuthenticator extends AuthenticatorBase { } String username = request.getParameter(Constants.FORM_USERNAME); String password = request.getParameter(Constants.FORM_PASSWORD); - if (log.isDebugEnabled()) { - log.debug("Authenticating username '" + username + "'"); + if (log.isTraceEnabled()) { + log.trace("Authenticating username '" + username + "'"); } principal = realm.authenticate(username, password); if (principal == null) { @@ -272,8 +272,8 @@ public class FormAuthenticator extends AuthenticatorBase { return false; } - if (log.isDebugEnabled()) { - log.debug("Authentication of '" + username + "' was successful"); + if (log.isTraceEnabled()) { + log.trace("Authentication of '" + username + "' was successful"); } if (session == null) { @@ -292,7 +292,7 @@ public class FormAuthenticator extends AuthenticatorBase { } if (session == null) { if (containerLog.isDebugEnabled()) { - containerLog.debug("User took so long to log on the session expired"); + containerLog.debug(sm.getString("formAuthenticator.sessionExpired")); } if (landingPage == null) { response.sendError(HttpServletResponse.SC_REQUEST_TIMEOUT, @@ -316,8 +316,8 @@ public class FormAuthenticator extends AuthenticatorBase { // Redirect the user to the original request URI (which will cause // the original request to be restored) requestURI = savedRequestURL(session); - if (log.isDebugEnabled()) { - log.debug("Redirecting to original '" + requestURI + "'"); + if (log.isTraceEnabled()) { + log.trace("Redirecting to original '" + requestURI + "'"); } if (requestURI == null) { if (landingPage == null) { diff --git a/java/org/apache/catalina/authenticator/LocalStrings.properties b/java/org/apache/catalina/authenticator/LocalStrings.properties index d66d2f2492..4909ee1967 100644 --- a/java/org/apache/catalina/authenticator/LocalStrings.properties +++ b/java/org/apache/catalina/authenticator/LocalStrings.properties @@ -13,12 +13,15 @@ # See the License for the specific language governing permissions and # limitations under the License. +authenticator.authentication=Authenticated principal [{0}] with authentication type [{1}] +authenticator.authenticationFail=User authentication failure authenticator.certificates=No client certificate chain in this request authenticator.changeSessionId=Session ID changed on authentication from [{0}] to [{1}] authenticator.check.authorize=User name [{0}] obtained from the Connector and trusted to be valid. Obtaining roles for this user from the Tomcat Realm. authenticator.check.authorizeFail=Realm did not recognise user [{0}]. Creating a Principal with that name and no roles. authenticator.check.found=Already authenticated [{0}] authenticator.check.sso=Not authenticated but SSO session ID [{0}] found. Attempting re-authentication. +authenticator.corsBypass=CORS Preflight request bypassing authentication authenticator.formlogin=Invalid direct reference to form login page authenticator.jaspicCleanSubjectFail=Failed to clean JASPIC subject authenticator.jaspicSecureResponseFail=Failed to secure response during JASPIC processing @@ -27,10 +30,14 @@ authenticator.loginFail=Login failed authenticator.manager=Exception initializing trust managers authenticator.noAuthHeader=No authorization header sent by client authenticator.notContext=Configuration error: Must be attached to a Context +authenticator.reauthentication=Reauthenticated cached principal [{0}] with authentication type [{1}] authenticator.requestBodyTooBig=The request body was too large to be cached during the authentication process authenticator.sessionExpired=The time allowed for the login process has been exceeded. If you wish to continue you must either click back twice and re-click the link you requested or close and re-open your browser +authenticator.sso=Found SSO [{0}] authenticator.tomcatPrincipalLogoutFail=Logout with TomcatPrincipal instance has failed authenticator.unauthorized=Cannot authenticate with the provided credentials +authenticator.userDataPermissionFail=User data does not comply with the constraints of the resource +authenticator.userPermissionFail=User [{0}] does not have authorization to access the resource basicAuthenticator.invalidAuthorization=Invalid Authorization: [{0}] basicAuthenticator.invalidCharset=The only permitted values are null, the empty string or UTF-8 @@ -47,6 +54,9 @@ formAuthenticator.forwardLogin=Forwarding request for [{0}] made with method [{1 formAuthenticator.forwardLoginFail=Unexpected error forwarding to login page formAuthenticator.noErrorPage=No error page was defined for FORM authentication in context [{0}] formAuthenticator.noLoginPage=No login page was defined for FORM authentication in context [{0}] +formAuthenticator.reauthFailed=Reauthentication failed, proceeding with regular authentication +formAuthenticator.restoreFailed=Restoring the original request failed +formAuthenticator.sessionExpired=Client inactivity caused the session to expire during authentication formAuthenticator.sessionIdMismatch=Current session ID is [{0}] but FORM authenticator was expecting [{1}] singleSignOn.debug.associate=SSO associating application session [{1}] with SSO session [{0}] @@ -79,4 +89,6 @@ spnegoAuthenticator.serviceLoginFail=Unable to login as the service principal spnegoAuthenticator.ticketValidateFail=Failed to validate client supplied ticket sslAuthenticatorValve.http2=The context [{0}] in virtual host [{1}] is configured to use CLIENT-CERT authentication and [{2}] is configured to support HTTP/2. Use of CLIENT-CERT authentication is not compatible with the use of HTTP/2. +sslAuthenticatorValve.noCertificates=No certificates are included with this request +sslAuthenticatorValve.authFailed=Authentication with the provided certificates failed sslAuthenticatorValve.tls13=The context [{0}] in virtual host [{1}] is configured to use CLIENT-CERT authentication and [{2}] is configured to support TLS 1.3 using JSSE. Use of CLIENT-CERT authentication is not compatible with the use of TLS 1.3 and JSSE. diff --git a/java/org/apache/catalina/authenticator/NonLoginAuthenticator.java b/java/org/apache/catalina/authenticator/NonLoginAuthenticator.java index ba836c20e9..2d31b7432d 100644 --- a/java/org/apache/catalina/authenticator/NonLoginAuthenticator.java +++ b/java/org/apache/catalina/authenticator/NonLoginAuthenticator.java @@ -90,8 +90,8 @@ public final class NonLoginAuthenticator extends AuthenticatorBase { // to say the user is now authenticated because access to // protected resources will only be allowed with a matching role. // i.e. SC_FORBIDDEN (403 status) will be generated later. - if (containerLog.isDebugEnabled()) { - containerLog.debug("User authenticated without any roles"); + if (containerLog.isTraceEnabled()) { + containerLog.trace("User authenticated without any roles"); } return true; } diff --git a/java/org/apache/catalina/authenticator/SSLAuthenticator.java b/java/org/apache/catalina/authenticator/SSLAuthenticator.java index ba2e11ca70..bb47775eff 100644 --- a/java/org/apache/catalina/authenticator/SSLAuthenticator.java +++ b/java/org/apache/catalina/authenticator/SSLAuthenticator.java @@ -73,15 +73,15 @@ public class SSLAuthenticator extends AuthenticatorBase { } // Retrieve the certificate chain for this client - if (containerLog.isDebugEnabled()) { - containerLog.debug(" Looking up certificates"); + if (containerLog.isTraceEnabled()) { + containerLog.trace(" Looking up certificates"); } X509Certificate certs[] = getRequestCertificates(request); if ((certs == null) || (certs.length < 1)) { if (containerLog.isDebugEnabled()) { - containerLog.debug(" No certificates included with this request"); + containerLog.debug(sm.getString("sslAuthenticatorValve.noCertificates")); } response.sendError(HttpServletResponse.SC_UNAUTHORIZED, sm.getString("authenticator.certificates")); return false; @@ -91,7 +91,7 @@ public class SSLAuthenticator extends AuthenticatorBase { Principal principal = context.getRealm().authenticate(certs); if (principal == null) { if (containerLog.isDebugEnabled()) { - containerLog.debug(" Realm.authenticate() returned false"); + containerLog.debug(sm.getString("sslAuthenticatorValve.authFailed")); } response.sendError(HttpServletResponse.SC_UNAUTHORIZED, sm.getString("authenticator.unauthorized")); return false; diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java index 49ddf7c8c1..b781cf61e2 100644 --- a/java/org/apache/catalina/connector/CoyoteAdapter.java +++ b/java/org/apache/catalina/connector/CoyoteAdapter.java @@ -1017,8 +1017,8 @@ public class CoyoteAdapter implements Adapter { request.setRequestedSessionId(scookie.getValue().toString()); request.setRequestedSessionCookie(true); request.setRequestedSessionURL(false); - if (log.isDebugEnabled()) { - log.debug(" Requested cookie session id is " + request.getRequestedSessionId()); + if (log.isTraceEnabled()) { + log.trace(" Requested cookie session id is " + request.getRequestedSessionId()); } } else { if (!request.isRequestedSessionIdValid()) { diff --git a/java/org/apache/catalina/core/ContainerBase.java b/java/org/apache/catalina/core/ContainerBase.java index d767e30fce..62dd863d7b 100644 --- a/java/org/apache/catalina/core/ContainerBase.java +++ b/java/org/apache/catalina/core/ContainerBase.java @@ -691,7 +691,7 @@ public abstract class ContainerBase extends LifecycleMBeanBase implements Contai private void addChildInternal(Container child) { if (log.isDebugEnabled()) { - log.debug("Add child " + child + " " + this); + log.debug(sm.getString("containerBase.child.add", child, this)); } synchronized (children) { diff --git a/java/org/apache/catalina/core/LocalStrings.properties b/java/org/apache/catalina/core/LocalStrings.properties index 2be22cd18b..b37ba91370 100644 --- a/java/org/apache/catalina/core/LocalStrings.properties +++ b/java/org/apache/catalina/core/LocalStrings.properties @@ -118,6 +118,7 @@ containerBase.backgroundProcess.error=Exception processing background thread containerBase.backgroundProcess.realm=Exception processing realm [{0}] background process containerBase.backgroundProcess.unexpectedThreadDeath=Unexpected death of background thread [{0}] containerBase.backgroundProcess.valve=Exception processing valve [{0}] background process +containerBase.child.add=Add container child [{0}] to container [{1}] containerBase.child.destroy=Error destroying child containerBase.child.notUnique=Child name [{0}] is not unique containerBase.child.start=Error starting child @@ -163,6 +164,11 @@ listener.notServer=This listener must only be nested within Server elements, but naming.addEnvEntry=Adding environment entry [{0}] naming.addResourceEnvRef=Adding resource env ref [{0}] +naming.addResourceLink=Adding resource link [{0}] +naming.addResourceRef=Adding resource reference [{0}] at [{1}] +naming.addService=Adding service reference [{0}] at [{1}] +naming.addSlash=Changing service URL to [/{0}] +naming.bind=Bind naming context to container [{0}] naming.bindFailed=Failed to bind object: [{0}] naming.invalidEnvEntryType=Environment entry [{0}] has an invalid type naming.invalidEnvEntryValue=Environment entry [{0}] has an invalid value diff --git a/java/org/apache/catalina/core/NamingContextListener.java b/java/org/apache/catalina/core/NamingContextListener.java index d9a1e4dd88..c638c65947 100644 --- a/java/org/apache/catalina/core/NamingContextListener.java +++ b/java/org/apache/catalina/core/NamingContextListener.java @@ -230,7 +230,7 @@ public class NamingContextListener implements LifecycleListener, ContainerListen ContextAccessController.setSecurityToken(container, token); ContextBindings.bindContext(container, namingContext, token); if (log.isDebugEnabled()) { - log.debug("Bound " + container); + log.debug(sm.getString("naming.bind", container)); } // Configure write when read-only behaviour @@ -844,7 +844,9 @@ public class NamingContextListener implements LifecycleListener, ContainerListen if (wsdlURL == null) { try { wsdlURL = ((Context) container).getServletContext().getResource("/" + service.getWsdlfile()); - log.debug(" Changing service ref wsdl file for /" + service.getWsdlfile()); + if (log.isDebugEnabled()) { + log.debug(sm.getString("naming.addSlash", service.getWsdlfile())); + } } catch (MalformedURLException e) { log.error(sm.getString("naming.wsdlFailed", e)); } @@ -877,7 +879,9 @@ public class NamingContextListener implements LifecycleListener, ContainerListen try { jaxrpcURL = ((Context) container).getServletContext() .getResource("/" + service.getJaxrpcmappingfile()); - log.debug(" Changing service ref jaxrpc file for /" + service.getJaxrpcmappingfile()); + if (log.isDebugEnabled()) { + log.debug(sm.getString("naming.addSlash", service.getJaxrpcmappingfile())); + } } catch (MalformedURLException e) { log.error(sm.getString("naming.wsdlFailed", e)); } @@ -935,7 +939,7 @@ public class NamingContextListener implements LifecycleListener, ContainerListen try { if (log.isDebugEnabled()) { - log.debug(" Adding service ref " + service.getName() + " " + ref); + log.debug(sm.getString("naming.addService", ref, service.getName())); } createSubcontexts(envCtx, service.getName()); envCtx.bind(service.getName(), ref); @@ -970,7 +974,7 @@ public class NamingContextListener implements LifecycleListener, ContainerListen try { if (log.isDebugEnabled()) { - log.debug(" Adding resource ref " + resource.getName() + " " + ref); + log.debug(sm.getString("naming.addResourceRef", ref, resource.getName())); } createSubcontexts(envCtx, resource.getName()); envCtx.bind(resource.getName(), ref); @@ -1054,7 +1058,7 @@ public class NamingContextListener implements LifecycleListener, ContainerListen javax.naming.Context ctx = "UserTransaction".equals(resourceLink.getName()) ? compCtx : envCtx; try { if (log.isDebugEnabled()) { - log.debug(" Adding resource link " + resourceLink.getName()); + log.debug(sm.getString("naming.addResourceLink", resourceLink.getName())); } createSubcontexts(envCtx, resourceLink.getName()); ctx.bind(resourceLink.getName(), ref); diff --git a/java/org/apache/catalina/core/ThreadLocalLeakPreventionListener.java b/java/org/apache/catalina/core/ThreadLocalLeakPreventionListener.java index d342b558c4..aba84f1ff1 100644 --- a/java/org/apache/catalina/core/ThreadLocalLeakPreventionListener.java +++ b/java/org/apache/catalina/core/ThreadLocalLeakPreventionListener.java @@ -175,7 +175,9 @@ public class ThreadLocalLeakPreventionListener implements LifecycleListener, Con if (!(context instanceof StandardContext) || !((StandardContext) context).getRenewThreadsWhenStoppingContext()) { - log.debug("Not renewing threads when the context is stopping. " + "It is not configured to do it."); + if (log.isTraceEnabled()) { + log.trace("Not renewing threads when the context is stopping. It is not configured to do it."); + } return; } diff --git a/java/org/apache/catalina/filters/CsrfPreventionFilter.java b/java/org/apache/catalina/filters/CsrfPreventionFilter.java index 6640c1c3a5..6e74617aee 100644 --- a/java/org/apache/catalina/filters/CsrfPreventionFilter.java +++ b/java/org/apache/catalina/filters/CsrfPreventionFilter.java @@ -358,17 +358,16 @@ public class CsrfPreventionFilter extends CsrfPreventionFilterBase { if (previousNonce == null) { if (enforce(req, requestedPath)) { if (log.isDebugEnabled()) { - log.debug("Rejecting request for " + getRequestedPath(req) + ", session " + - (null == session ? "(none)" : session.getId()) + - " with no CSRF nonce found in request"); + log.debug(sm.getString("csrfPrevention.rejectNoNonce", getRequestedPath(req), + (null == session ? "(null)" : session.getId()))); } res.sendError(getDenyStatus()); return; } else { - if (log.isDebugEnabled()) { - log.debug("Would have rejected request for " + getRequestedPath(req) + ", session " + - (null == session ? "(none)" : session.getId()) + + if (log.isTraceEnabled()) { + log.trace("Would have rejected request for " + getRequestedPath(req) + ", session " + + (null == session ? "(null)" : session.getId()) + " with no CSRF nonce found in request"); } } @@ -377,32 +376,31 @@ public class CsrfPreventionFilter extends CsrfPreventionFilterBase { if (nonceCache == null) { if (enforce(req, requestedPath)) { if (log.isDebugEnabled()) { - log.debug("Rejecting request for " + getRequestedPath(req) + ", session " + - (null == session ? "(none)" : session.getId()) + " due to empty / missing nonce cache"); + log.debug(sm.getString("csrfPrevention.rejectNoCache", getRequestedPath(req), + (null == session ? "(null)" : session.getId()))); } res.sendError(getDenyStatus()); return; } else { - if (log.isDebugEnabled()) { - log.debug("Would have rejecting request for " + getRequestedPath(req) + ", session " + - (null == session ? "(none)" : session.getId()) + " due to empty / missing nonce cache"); + if (log.isTraceEnabled()) { + log.trace("Would have rejecting request for " + getRequestedPath(req) + ", session " + + (null == session ? "(null)" : session.getId()) + " due to empty / missing nonce cache"); } } } else if (!nonceCache.contains(previousNonce)) { if (enforce(req, requestedPath)) { if (log.isDebugEnabled()) { - log.debug("Rejecting request for " + getRequestedPath(req) + ", session " + - (null == session ? "(none)" : session.getId()) + " due to invalid nonce " + - previousNonce); + log.debug(sm.getString("csrfPrevention.rejectInvalidNonce", getRequestedPath(req), + (null == session ? "(null)" : session.getId()), previousNonce)); } res.sendError(getDenyStatus()); return; } else { - if (log.isDebugEnabled()) { - log.debug("Would have rejecting request for " + getRequestedPath(req) + ", session " + - (null == session ? "(none)" : session.getId()) + " due to invalid nonce " + + if (log.isTraceEnabled()) { + log.trace("Would have rejecting request for " + getRequestedPath(req) + ", session " + + (null == session ? "(null)" : session.getId()) + " due to invalid nonce " + previousNonce); } } @@ -422,13 +420,13 @@ public class CsrfPreventionFilter extends CsrfPreventionFilterBase { } if (nonceCache == null) { if (log.isDebugEnabled()) { - log.debug("Creating new CSRF nonce cache with size=" + nonceCacheSize + " for session " + - (null == session ? "(will create)" : session.getId())); + log.debug(sm.getString("csrfPrevention.createCache", Integer.valueOf(nonceCacheSize), + (null == session ? "(null)" : session.getId()))); } if (session == null) { - if (log.isDebugEnabled()) { - log.debug("Creating new session to store CSRF nonce cache"); + if (log.isTraceEnabled()) { + log.trace("Creating new session to store CSRF nonce cache"); } session = req.getSession(true); diff --git a/java/org/apache/catalina/filters/LocalStrings.properties b/java/org/apache/catalina/filters/LocalStrings.properties index 5c5da1559e..be56650ae2 100644 --- a/java/org/apache/catalina/filters/LocalStrings.properties +++ b/java/org/apache/catalina/filters/LocalStrings.properties @@ -23,7 +23,11 @@ corsFilter.onlyHttp=CORS doesn't support non-HTTP request or response corsFilter.wrongType1=Expects an HttpServletRequest object of type [{0}] corsFilter.wrongType2=Expects an HttpServletRequest object of type [{0}] or [{1}] +csrfPrevention.createCache=Creating new CSRF nonce cache with size [{0}] for session [{1}] (it will be created if null) csrfPrevention.invalidRandomClass=Unable to create Random source using class [{0}] +csrfPrevention.rejectInvalidNonce=Rejecting request for [{0}] with session [{1}] due to invalid nonce [{2}] +csrfPrevention.rejectNoCache=Rejecting request for [{0}] with session [{1}] due to empty or missing nonce cache +csrfPrevention.rejectNoNonce=Rejecting request for [{0}] with session [{1}] because no CSRF nonce was found csrfPrevention.unsupportedPattern=Unsupported pattern [{0}] expiresFilter.exceptionProcessingParameter=Exception processing configuration parameter [{0}]:[{1}] diff --git a/java/org/apache/catalina/ha/session/ClusterManagerBase.java b/java/org/apache/catalina/ha/session/ClusterManagerBase.java index 4169f81c7e..b642178f4b 100644 --- a/java/org/apache/catalina/ha/session/ClusterManagerBase.java +++ b/java/org/apache/catalina/ha/session/ClusterManagerBase.java @@ -33,9 +33,11 @@ import org.apache.catalina.tribes.io.ReplicationStream; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; import org.apache.tomcat.util.collections.SynchronizedStack; +import org.apache.tomcat.util.res.StringManager; public abstract class ClusterManagerBase extends ManagerBase implements ClusterManager { + protected static final StringManager sm = StringManager.getManager(ClusterManagerBase.class); private final Log log = LogFactory.getLog(ClusterManagerBase.class); // must not be static /** @@ -191,7 +193,7 @@ public abstract class ClusterManagerBase extends ManagerBase implements ClusterM } // for if (replicationValve == null && log.isDebugEnabled()) { - log.debug("no ReplicationValve found for CrossContext Support"); + log.debug(sm.getString("clusterManager.noValve")); } // endif } // end if } // endif diff --git a/java/org/apache/catalina/ha/session/LocalStrings.properties b/java/org/apache/catalina/ha/session/LocalStrings.properties index d894dd3c64..0b6a7b39fb 100644 --- a/java/org/apache/catalina/ha/session/LocalStrings.properties +++ b/java/org/apache/catalina/ha/session/LocalStrings.properties @@ -18,6 +18,8 @@ backupManager.startFailed=Failed to start BackupManager: [{0}] backupManager.startUnable=Unable to start BackupManager: [{0}] backupManager.stopped=Manager [{0}] is stopping +clusterManager.noValve=No ReplicationValve found for cross context support + clusterSessionListener.noManager=Context manager doesn''t exist:[{0}] deltaManager.createMessage.access=Manager [{0}]: create session access message for session [{1}] diff --git a/java/org/apache/catalina/ha/tcp/LocalStrings.properties b/java/org/apache/catalina/ha/tcp/LocalStrings.properties index 2214450e08..e8525482bb 100644 --- a/java/org/apache/catalina/ha/tcp/LocalStrings.properties +++ b/java/org/apache/catalina/ha/tcp/LocalStrings.properties @@ -31,10 +31,13 @@ ReplicationValve.stats=Average request time=[{0}] ms with cluster overhead time= simpleTcpCluster.clustermanager.cloneFailed=Unable to clone cluster manager, defaulting to org.apache.catalina.ha.session.DeltaManager simpleTcpCluster.clustermanager.notImplement=Manager [{0}] does not implement ClusterManager, addition to cluster has been aborted. +simpleTcpCluster.createManager=Creating ClusterManager for context [{0}] using class [{1}] simpleTcpCluster.member.addFailed=Unable to connect to replication system. simpleTcpCluster.member.added=Replication member added:[{0}] simpleTcpCluster.member.disappeared=Received member disappeared:[{0}] simpleTcpCluster.member.removeFailed=Unable remove cluster node from replication system. +simpleTcpCluster.noListener=Message [{0}] from type [{1}] transferred but no listener registered +simpleTcpCluster.noMembers=No members in cluster, ignoring message [{0}] simpleTcpCluster.sendFailed=Unable to send message through cluster sender. simpleTcpCluster.start=Cluster is about to start simpleTcpCluster.startUnable=Unable to start cluster. diff --git a/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java b/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java index a33aff856c..883942f2ce 100644 --- a/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java +++ b/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java @@ -396,8 +396,7 @@ public class SimpleTcpCluster extends LifecycleMBeanBase @Override public synchronized Manager createManager(String name) { if (log.isDebugEnabled()) { - log.debug("Creating ClusterManager for context " + name + " using class " + - getManagerTemplate().getClass().getName()); + log.debug(sm.getString("simpleTcpCluster.createManager", name, getManagerTemplate().getClass().getName())); } ClusterManager manager = null; try { @@ -697,7 +696,7 @@ public class SimpleTcpCluster extends LifecycleMBeanBase if (destmembers.length > 0) { channel.send(destmembers, msg, sendOptions); } else if (log.isDebugEnabled()) { - log.debug("No members in cluster, ignoring message:" + msg); + log.debug(sm.getString("simpleTcpCluster.noMembers", msg)); } } } catch (Exception x) { @@ -796,8 +795,7 @@ public class SimpleTcpCluster extends LifecycleMBeanBase // Notify our interested LifecycleListeners fireLifecycleEvent(RECEIVE_MESSAGE_FAILURE_EVENT, new SendMessageData(message, dest, null)); if (log.isDebugEnabled()) { - log.debug("Message " + message.toString() + " from type " + message.getClass().getName() + - " transferred but no listener registered"); + log.debug(sm.getString("simpleTcpCluster.noListener", message, message.getClass().getName())); } } } diff --git a/java/org/apache/catalina/mbeans/GlobalResourcesLifecycleListener.java b/java/org/apache/catalina/mbeans/GlobalResourcesLifecycleListener.java index 0c2b778aa9..a3e1cfab99 100644 --- a/java/org/apache/catalina/mbeans/GlobalResourcesLifecycleListener.java +++ b/java/org/apache/catalina/mbeans/GlobalResourcesLifecycleListener.java @@ -128,7 +128,7 @@ public class GlobalResourcesLifecycleListener implements LifecycleListener { protected void createMBeans(String prefix, Context context) throws NamingException { if (log.isDebugEnabled()) { - log.debug("Creating MBeans for Global JNDI Resources in Context '" + prefix + "'"); + log.debug(sm.getString("globalResources.create", prefix)); } try { diff --git a/java/org/apache/catalina/mbeans/LocalStrings.properties b/java/org/apache/catalina/mbeans/LocalStrings.properties index 19ea1dc1c5..d9eb992b46 100644 --- a/java/org/apache/catalina/mbeans/LocalStrings.properties +++ b/java/org/apache/catalina/mbeans/LocalStrings.properties @@ -13,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +globalResources.create=Creating MBeans for Global JNDI Resources in Context [{0}] globalResources.createError=Exception processing global JNDI Resources globalResources.createError.operation=Operation not supported error creating MBeans globalResources.createError.runtime=Unexpected error creating MBeans diff --git a/java/org/apache/catalina/realm/JAASMemoryLoginModule.java b/java/org/apache/catalina/realm/JAASMemoryLoginModule.java index 91953b1c75..213a349a33 100644 --- a/java/org/apache/catalina/realm/JAASMemoryLoginModule.java +++ b/java/org/apache/catalina/realm/JAASMemoryLoginModule.java @@ -292,7 +292,7 @@ public class JAASMemoryLoginModule extends MemoryRealm implements LoginModule { } if (log.isDebugEnabled()) { - log.debug("login " + username + " " + principal); + log.debug(sm.getString("jaasMemoryLoginModule.login", username, principal)); } // Report results based on success or failure diff --git a/java/org/apache/catalina/realm/JNDIRealm.java b/java/org/apache/catalina/realm/JNDIRealm.java index fd85bda078..c1895d3255 100644 --- a/java/org/apache/catalina/realm/JNDIRealm.java +++ b/java/org/apache/catalina/realm/JNDIRealm.java @@ -1208,8 +1208,8 @@ public class JNDIRealm extends RealmBase { closePooledConnections(); // Return "not authenticated" for this request - if (containerLog.isDebugEnabled()) { - containerLog.debug("Returning null principal."); + if (containerLog.isTraceEnabled()) { + containerLog.trace("Returning null principal."); } return null; } finally { @@ -1236,8 +1236,8 @@ public class JNDIRealm extends RealmBase { throws NamingException { if (username == null || username.equals("") || credentials == null || credentials.equals("")) { - if (containerLog.isDebugEnabled()) { - containerLog.debug("username null or empty: returning null principal."); + if (containerLog.isTraceEnabled()) { + containerLog.trace("username null or empty: returning null principal."); } return null; } diff --git a/java/org/apache/catalina/realm/LocalStrings.properties b/java/org/apache/catalina/realm/LocalStrings.properties index aeb49cde38..6ee36b31f5 100644 --- a/java/org/apache/catalina/realm/LocalStrings.properties +++ b/java/org/apache/catalina/realm/LocalStrings.properties @@ -38,6 +38,7 @@ jaasCallback.username=Returned username [{0}] jaasMemoryLoginModule.callbackHandlerError=Error invoking callback handler: [{0}] jaasMemoryLoginModule.invalidCredentials=User name or password is incorrect +jaasMemoryLoginModule.login=Login for user [{0}] as principal [{1}] jaasMemoryLoginModule.noCallbackHandler=No CallbackHandler specified jaasMemoryLoginModule.noCatalinaBase=Unable to determine Catalina base to load file [{0}] jaasMemoryLoginModule.noConfig=Cannot load configuration file [{0}] @@ -117,6 +118,7 @@ realmBase.hasRoleFailure=Username [{0}] does NOT have role [{1}] realmBase.hasRoleSuccess=Username [{0}] has role [{1}] realmBase.invalidDigestEncoding=Invalid digest encoding [{0}] realmBase.unknownAllRolesMode=Unknown mode [{0}], must be one of: strict, authOnly, strictAuthOnly +realmBase.validity=Error checking certificate validity userDatabaseRealm.lookup=Exception looking up UserDatabase under key [{0}] userDatabaseRealm.noDatabase=No UserDatabase component found under key [{0}] diff --git a/java/org/apache/catalina/realm/RealmBase.java b/java/org/apache/catalina/realm/RealmBase.java index 952e558705..afd195d021 100644 --- a/java/org/apache/catalina/realm/RealmBase.java +++ b/java/org/apache/catalina/realm/RealmBase.java @@ -452,7 +452,7 @@ public abstract class RealmBase extends LifecycleMBeanBase implements org.apache cert.checkValidity(); } catch (Exception e) { if (log.isDebugEnabled()) { - log.debug(" Validity exception", e); + log.debug(sm.getString("realmBase.validity"), e); } return null; } diff --git a/java/org/apache/catalina/session/FileStore.java b/java/org/apache/catalina/session/FileStore.java index c899a49190..45baefde3b 100644 --- a/java/org/apache/catalina/session/FileStore.java +++ b/java/org/apache/catalina/session/FileStore.java @@ -233,7 +233,7 @@ public final class FileStore extends StoreBase { return session; } catch (FileNotFoundException e) { if (contextLog.isDebugEnabled()) { - contextLog.debug("No persisted data file found"); + contextLog.debug(sm.getString("fileStore.noFile", id, file.getAbsolutePath())); } return null; } finally { diff --git a/java/org/apache/catalina/session/LocalStrings.properties b/java/org/apache/catalina/session/LocalStrings.properties index 8f0e54e846..18657f83f7 100644 --- a/java/org/apache/catalina/session/LocalStrings.properties +++ b/java/org/apache/catalina/session/LocalStrings.properties @@ -33,6 +33,7 @@ fileStore.deleteFailed=Unable to delete file [{0}] which is preventing the creat fileStore.deleteSessionFailed=Unable to delete file [{0}] which is no longer required fileStore.invalid=Invalid persistence file [{0}] for session ID [{1}] fileStore.loading=Loading Session [{0}] from file [{1}] +fileStore.noFile=Persistence file [{1}] for session ID [{0}] was not found fileStore.removing=Removing Session [{0}] at file [{1}] fileStore.saving=Saving Session [{0}] to file [{1}] @@ -66,10 +67,12 @@ persistentManager.tooManyActive=Too many active sessions, [{0}], looking for idl persistentManager.unloading=Saving [{0}] persisted sessions standardManager.deletePersistedFileFail=Unable to delete [{0}] after reading the persisted sessions. The continued presence of this file may cause future attempts to persist sessions to fail. +standardManager.expiringSessions=Expiring [{0}] persisted sessions standardManager.loading=Loading persisted sessions from [{0}] standardManager.loading.exception=Exception while loading persisted sessions standardManager.managerLoad=Exception loading sessions from persistent storage standardManager.managerUnload=Exception unloading sessions to persistent storage +standardManager.noFile=Persisted data file [{0}] was not found standardManager.unloading=Saving persisted sessions to [{0}] standardManager.unloading.debug=Unloading persisted sessions standardManager.unloading.nosessions=No persisted sessions to unload diff --git a/java/org/apache/catalina/session/ManagerBase.java b/java/org/apache/catalina/session/ManagerBase.java index 3a58ac1a87..240d71f527 100644 --- a/java/org/apache/catalina/session/ManagerBase.java +++ b/java/org/apache/catalina/session/ManagerBase.java @@ -630,12 +630,12 @@ public abstract class ManagerBase extends LifecycleMBeanBase implements Manager ((Lifecycle) sessionIdGenerator).start(); } else { // Force initialization of the random number generator - if (log.isDebugEnabled()) { - log.debug("Force random number initialization starting"); + if (log.isTraceEnabled()) { + log.trace("Force random number initialization starting"); } sessionIdGenerator.generateSessionId(); - if (log.isDebugEnabled()) { - log.debug("Force random number initialization completed"); + if (log.isTraceEnabled()) { + log.trace("Force random number initialization completed"); } } } diff --git a/java/org/apache/catalina/session/StandardManager.java b/java/org/apache/catalina/session/StandardManager.java index be5a7dff27..67514fe1d7 100644 --- a/java/org/apache/catalina/session/StandardManager.java +++ b/java/org/apache/catalina/session/StandardManager.java @@ -230,7 +230,7 @@ public class StandardManager extends ManagerBase { } } catch (FileNotFoundException e) { if (log.isDebugEnabled()) { - log.debug("No persisted data file found"); + log.debug(sm.getString("standardManager.noFile", file.getAbsolutePath())); } return; } @@ -311,7 +311,7 @@ public class StandardManager extends ManagerBase { // Expire all the sessions we just wrote if (log.isDebugEnabled()) { - log.debug("Expiring " + list.size() + " persisted sessions"); + log.debug(sm.getString("standardManager.expiringSessions", list.size())); } for (StandardSession session : list) { try { diff --git a/java/org/apache/catalina/startup/Catalina.java b/java/org/apache/catalina/startup/Catalina.java index 91c28ce3f5..991d2228c3 100644 --- a/java/org/apache/catalina/startup/Catalina.java +++ b/java/org/apache/catalina/startup/Catalina.java @@ -648,7 +648,7 @@ public class Catalina { try { getServer().destroy(); } catch (LifecycleException e1) { - log.debug("destroy() failed for failed Server ", e1); + log.debug(sm.getString("catalina.destroyFail"), e1); } return; } @@ -772,14 +772,14 @@ public class Catalina { } System.setProperty(javax.naming.Context.URL_PKG_PREFIXES, value); if (log.isDebugEnabled()) { - log.debug("Setting naming prefix=" + value); + log.debug(sm.getString("catalina.namingPrefix", value)); } value = System.getProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY); if (value == null) { System.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY, "org.apache.naming.java.javaURLContextFactory"); } else { - log.debug("INITIAL_CONTEXT_FACTORY already set " + value); + log.debug(sm.getString("catalina.initialContextFactory", value)); } } } diff --git a/java/org/apache/catalina/startup/ContextConfig.java b/java/org/apache/catalina/startup/ContextConfig.java index 26c73d6a50..0fe0ea3983 100644 --- a/java/org/apache/catalina/startup/ContextConfig.java +++ b/java/org/apache/catalina/startup/ContextConfig.java @@ -476,7 +476,7 @@ public class ContextConfig implements LifecycleListener { protected void processContextConfig(Digester digester, URL contextXml) { if (log.isDebugEnabled()) { - log.debug("Processing context [" + context.getName() + "] configuration file [" + contextXml + "]"); + log.debug(sm.getString("contextConfig.processContext", context.getName(), contextXml)); } InputSource source = null; @@ -680,8 +680,7 @@ public class ContextConfig implements LifecycleListener { antiLockingDocBase = antiLockingDocBase.getAbsoluteFile(); if (log.isDebugEnabled()) { - log.debug("Anti locking context[" + context.getName() + "] setting docBase to " + - antiLockingDocBase.getPath()); + log.debug(sm.getString("contextConfig.antiLocking", context.getName(), antiLockingDocBase.getPath())); } // Cleanup just in case an old deployment is lying around @@ -1315,7 +1314,7 @@ public class ContextConfig implements LifecycleListener { } else { if (log.isDebugEnabled()) { for (String urlPattern : jspPropertyGroup.getUrlPatterns()) { - log.debug("Skipping " + urlPattern + " , no servlet " + jspServletName); + log.debug(sm.getString("contextConfig.noJsp", urlPattern, jspServletName)); } } } diff --git a/java/org/apache/catalina/startup/CopyParentClassLoaderRule.java b/java/org/apache/catalina/startup/CopyParentClassLoaderRule.java index ddcf406535..ba9f43d730 100644 --- a/java/org/apache/catalina/startup/CopyParentClassLoaderRule.java +++ b/java/org/apache/catalina/startup/CopyParentClassLoaderRule.java @@ -56,8 +56,8 @@ public class CopyParentClassLoaderRule extends Rule { @Override public void begin(String namespace, String name, Attributes attributes) throws Exception { - if (digester.getLogger().isDebugEnabled()) { - digester.getLogger().debug("Copying parent class loader"); + if (digester.getLogger().isTraceEnabled()) { + digester.getLogger().trace("Copying parent class loader"); } Container child = (Container) digester.peek(0); Object parent = digester.peek(1); diff --git a/java/org/apache/catalina/startup/HostConfig.java b/java/org/apache/catalina/startup/HostConfig.java index 246eadbb35..d001f9c0a5 100644 --- a/java/org/apache/catalina/startup/HostConfig.java +++ b/java/org/apache/catalina/startup/HostConfig.java @@ -1459,7 +1459,7 @@ public class HostConfig implements LifecycleListener { // host's configBase if (isDeletableResource(app, current)) { if (log.isDebugEnabled()) { - log.debug("Delete " + current); + log.debug(sm.getString("hostConfig.delete", current)); } ExpandWar.delete(current); } @@ -1478,7 +1478,7 @@ public class HostConfig implements LifecycleListener { // configBase if (isDeletableResource(app, current)) { if (log.isDebugEnabled()) { - log.debug("Delete " + current); + log.debug(sm.getString("hostConfig.delete", current)); } ExpandWar.delete(current); } diff --git a/java/org/apache/catalina/startup/LocalStrings.properties b/java/org/apache/catalina/startup/LocalStrings.properties index fdf5246f4e..1a5ef4774d 100644 --- a/java/org/apache/catalina/startup/LocalStrings.properties +++ b/java/org/apache/catalina/startup/LocalStrings.properties @@ -27,6 +27,7 @@ connector.noSetSSLImplementationName=Connector [{0}] does not support changing t contextConfig.altDDNotFound=alt-dd file [{0}] not found contextConfig.annotationsStackOverflow=Unable to complete the scan for annotations for web application [{0}] due to a StackOverflowError. Possible root causes include a too low setting for -Xss and illegal cyclic inheritance dependencies. The class hierarchy being processed was [{1}] +contextConfig.antiLocking=Anti locking for context [{0}] setting docBase to [{1}] contextConfig.applicationMissing=Missing application web.xml, using defaults only contextConfig.applicationParse=Parse error in application web.xml file at [{0}] contextConfig.applicationPosition=Occurred at line [{0}] column [{1}] @@ -60,9 +61,11 @@ contextConfig.jspFile.error=JSP file [{0}] must start with a ''/'' contextConfig.jspFile.warning=WARNING: JSP file [{0}] must start with a ''/'' in Servlet 2.4 contextConfig.missingRealm=No Realm has been configured to authenticate against contextConfig.noAntiLocking=The value [{0}] configured for java.io.tmpdir does not point to a valid directory. The antiResourceLocking setting for the web application [{1}] will be ignored. +contextConfig.noJsp=Skipping JSP property group for URL [{0}], no JSP Servlet found for name [{1}] contextConfig.processAnnotationsDir.debug=Scanning directory for class files with annotations [{0}] contextConfig.processAnnotationsJar.debug=Scanning jar file for class files with annotations [{0}] contextConfig.processAnnotationsWebDir.debug=Scanning web application directory for class files with annotations [{0}] +contextConfig.processContext=Processing context [{0}] with configuration [{1}] contextConfig.resourceJarFail=Failed to process JAR found at URL [{0}] for static resources to be included in context with name [{1}] contextConfig.role.auth=Security role name [{0}] used in an <auth-constraint> without being defined in a <security-role> contextConfig.role.link=Security role name [{0}] used in a <role-link> without being defined in a <security-role> @@ -98,6 +101,7 @@ hostConfig.cce=Lifecycle event data object [{0}] is not a Host hostConfig.context.remove=Error while removing context [{0}] hostConfig.context.restart=Error during context [{0}] restart hostConfig.createDirs=Unable to create directory for deployment: [{0}] +hostConfig.delete=Delete resource [{0}] during application reload hostConfig.deploy.error=Exception while deploying web application directory [{0}] hostConfig.deployDescriptor=Deploying deployment descriptor [{0}] hostConfig.deployDescriptor.blocked=The web application with context path [{0}] was not deployed because it contained a deployment descriptor [{1}] which may include configuration necessary for the secure deployment of the application but processing of deployment descriptors is prevented by the deployXML setting of this host. An appropriate descriptor should be created at [{2}] to deploy this application. diff --git a/java/org/apache/catalina/tribes/group/interceptors/LocalStrings.properties b/java/org/apache/catalina/tribes/group/interceptors/LocalStrings.properties index 35c2f6c2c4..7f47ef2dba 100644 --- a/java/org/apache/catalina/tribes/group/interceptors/LocalStrings.properties +++ b/java/org/apache/catalina/tribes/group/interceptors/LocalStrings.properties @@ -59,6 +59,7 @@ tcpFailureDetector.heartbeat.failed=Unable to perform heartbeat on the TcpFailur tcpFailureDetector.member.disappeared=Verification complete. Member disappeared[{0}] tcpFailureDetector.memberDisappeared.verify=Received memberDisappeared[{0}] message. Will verify. tcpFailureDetector.performBasicCheck.memberAdded=Member added, even though we weren''t notified:[{0}] +tcpFailureDetector.recievedPacket=Received a failure detector packet [{0}] tcpFailureDetector.still.alive=Verification complete. Member still alive[{0}] tcpFailureDetector.suspectMember.alive=Suspect member, confirmed alive.[{0}] tcpFailureDetector.suspectMember.dead=Suspect member, confirmed dead.[{0}] diff --git a/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java b/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java index 8c20b26965..fec2241032 100644 --- a/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java +++ b/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java @@ -113,7 +113,7 @@ public class TcpFailureDetector extends ChannelInterceptorBase implements TcpFai if ( process ) { super.messageReceived(msg); } else if ( log.isDebugEnabled() ) { - log.debug("Received a failure detector packet:"+msg); + log.debug(sm.getString("tcpFailureDetector.recievedPacket", msg)); } }//messageReceived diff --git a/java/org/apache/catalina/tribes/group/interceptors/TcpPingInterceptor.java b/java/org/apache/catalina/tribes/group/interceptors/TcpPingInterceptor.java index e1a9302ba0..06a21c5540 100644 --- a/java/org/apache/catalina/tribes/group/interceptors/TcpPingInterceptor.java +++ b/java/org/apache/catalina/tribes/group/interceptors/TcpPingInterceptor.java @@ -179,8 +179,8 @@ public class TcpPingInterceptor extends ChannelInterceptorBase implements TcpPin //ignore the message, it doesn't have the flag set if ( process ) { super.messageReceived(msg); - } else if ( log.isDebugEnabled() ) { - log.debug("Received a TCP ping packet:"+msg); + } else if ( log.isTraceEnabled() ) { + log.trace("Received a TCP ping packet:" + msg); } }//messageReceived diff --git a/java/org/apache/catalina/tribes/membership/LocalStrings.properties b/java/org/apache/catalina/tribes/membership/LocalStrings.properties index 2142f878a1..94344ccc0e 100644 --- a/java/org/apache/catalina/tribes/membership/LocalStrings.properties +++ b/java/org/apache/catalina/tribes/membership/LocalStrings.properties @@ -26,9 +26,15 @@ mcastService.noStart=Multicast send is not started or enabled. mcastServiceImpl.bind=Attempting to bind the multicast socket to [{0}:{1}] mcastServiceImpl.bind.failed=Binding to multicast address, failed. Binding to port only. mcastServiceImpl.error.receiving=Error receiving mcast package. Sleeping 500ms +mcastServiceImpl.error.receivingNoSleep=Error receiving multicast package mcastServiceImpl.invalid.startLevel=Invalid start level. Only acceptable levels are Channel.MBR_RX_SEQ and Channel.MBR_TX_SEQ mcastServiceImpl.invalid.stopLevel=Invalid stop level. Only acceptable levels are Channel.MBR_RX_SEQ and Channel.MBR_TX_SEQ +mcastServiceImpl.invalidMemberPackage=Invalid member multicast package +mcastServiceImpl.memberAdd=Add member [{0}] mcastServiceImpl.memberDisappeared.failed=Unable to process member disappeared message. +mcastServiceImpl.memberExpire=Expire member [{0}] +mcastServiceImpl.memberShutdown=Member [{0}] has shutdown +mcastServiceImpl.messageError=Unable to decode message mcastServiceImpl.packet.tooLong=Multicast packet received was too long, dropping package:[{0}] mcastServiceImpl.receive.running=McastService.receive already running. mcastServiceImpl.recovery=Tribes membership running recovery thread. Multicasting is not functional. diff --git a/java/org/apache/catalina/tribes/membership/McastServiceImpl.java b/java/org/apache/catalina/tribes/membership/McastServiceImpl.java index fdaa140b01..e3f05d423d 100644 --- a/java/org/apache/catalina/tribes/membership/McastServiceImpl.java +++ b/java/org/apache/catalina/tribes/membership/McastServiceImpl.java @@ -401,7 +401,7 @@ public class McastServiceImpl { final Thread currentThread = Thread.currentThread(); if (Arrays.equals(m.getCommand(), Member.SHUTDOWN_PAYLOAD)) { if (log.isDebugEnabled()) { - log.debug("Member has shutdown:" + m); + log.debug(sm.getString("mcastServiceImpl.memberShutdown", m)); } membership.removeMember(m); t = new Runnable() { @@ -418,7 +418,7 @@ public class McastServiceImpl { }; } else if (membership.memberAlive(m)) { if (log.isDebugEnabled()) { - log.debug("Mcast add member " + m); + log.debug(sm.getString("mcastServiceImpl.memberAdd", m)); } t = new Runnable() { @Override @@ -449,8 +449,8 @@ public class McastServiceImpl { for (int i=0; i<count; i++) { try { data[i] = buffer.extractPackage(true); - }catch (IllegalStateException ise) { - log.debug("Unable to decode message.",ise); + } catch (IllegalStateException ise) { + log.debug(sm.getString("mcastServiceImpl.messageError"), ise); } } Runnable t = new Runnable() { @@ -490,7 +490,7 @@ public class McastServiceImpl { Member[] expired = membership.expire(timeToExpiration); for (final Member member : expired) { if (log.isDebugEnabled()) { - log.debug("Mcast expire member " + member); + log.debug(sm.getString("mcastServiceImpl.memberExpire", member)); } try { Runnable t = new Runnable() { @@ -594,13 +594,17 @@ public class McastServiceImpl { //we can ignore this, as it means we have an invalid package //but we will log it to debug if ( log.isDebugEnabled() ) { - log.debug("Invalid member mcast package.",ax); + log.debug(sm.getString("mcastServiceImpl.invalidMemberPackage"), ax); } } catch ( Exception x ) { if (errorCounter==0 && doRunReceiver) { log.warn(sm.getString("mcastServiceImpl.error.receiving"),x); } else if (log.isDebugEnabled()) { - log.debug("Error receiving mcast package"+(doRunReceiver?". Sleeping 500ms":"."),x); + if (doRunReceiver) { + log.debug(sm.getString("mcastServiceImpl.error.receiving"), x); + } else { + log.warn(sm.getString("mcastServiceImpl.error.receivingNoSleep"), x); + } } if (doRunReceiver) { try { diff --git a/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java b/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java index 3b91ac0290..9e1b6f78b5 100644 --- a/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java +++ b/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java @@ -895,13 +895,13 @@ public abstract class AbstractReplicatedMap<K,V> removed = (mapMembers.remove(member) != null ); if (!removed) { if (log.isDebugEnabled()) { - log.debug("Member["+member+"] disappeared, but was not present in the map."); + log.debug(sm.getString("replicatedMap.member.disappeared.unknown", member)); } return; //the member was not part of our map. } } if (log.isInfoEnabled()) { - log.info(sm.getString("abstractReplicatedMap.member.disappeared", member)); + log.info(sm.getString("replicatedMap.member.disappeared", member)); } long start = System.currentTimeMillis(); Iterator<Map.Entry<K,MapEntry<K,V>>> i = innerMap.entrySet().iterator(); @@ -913,7 +913,7 @@ public abstract class AbstractReplicatedMap<K,V> } if (entry.isPrimary() && inSet(member,entry.getBackupNodes())) { if (log.isDebugEnabled()) { - log.debug("[1] Primary choosing a new backup"); + log.debug(sm.getString("abstractReplicatedMap.newBackup")); } try { Member[] backup = publishEntryInfo(entry.getKey(), entry.getValue()); @@ -924,7 +924,7 @@ public abstract class AbstractReplicatedMap<K,V> } } else if (member.equals(entry.getPrimary())) { if (log.isDebugEnabled()) { - log.debug("[2] Primary disappeared"); + log.debug(sm.getString("abstractReplicatedMap.primaryDisappeared")); } entry.setPrimary(null); } //end if @@ -936,7 +936,7 @@ public abstract class AbstractReplicatedMap<K,V> entry.getBackupNodes()[0].equals(member) ) { //remove proxies that have no backup nor primaries if (log.isDebugEnabled()) { - log.debug("[3] Removing orphaned proxy"); + log.debug(sm.getString("abstractReplicatedMap.removeOrphan")); } i.remove(); } else if ( entry.getPrimary() == null && @@ -946,7 +946,7 @@ public abstract class AbstractReplicatedMap<K,V> entry.getBackupNodes()[0].equals(channel.getLocalMember(false)) ) { try { if (log.isDebugEnabled()) { - log.debug("[4] Backup becoming primary"); + log.debug(sm.getString("abstractReplicatedMap.newPrimary")); } entry.setPrimary(channel.getLocalMember(false)); entry.setBackup(false); diff --git a/java/org/apache/catalina/tribes/tipis/LocalStrings.properties b/java/org/apache/catalina/tribes/tipis/LocalStrings.properties index 604c31b899..b85b37c8a4 100644 --- a/java/org/apache/catalina/tribes/tipis/LocalStrings.properties +++ b/java/org/apache/catalina/tribes/tipis/LocalStrings.properties @@ -22,10 +22,13 @@ abstractReplicatedMap.leftOver.pingMsg=PING message has been received beyond the abstractReplicatedMap.mapMember.unavailable=Member[{0}] is not available yet. abstractReplicatedMap.mapMemberAdded.added=Map member added:[{0}] abstractReplicatedMap.mapMemberAdded.nullMember=Notified member is not registered in the membership:[{0}]. -abstractReplicatedMap.member.disappeared=Member[{0}] disappeared. Related map entries will be relocated to the new node. +abstractReplicatedMap.newBackup=Primary choosing a new backup +abstractReplicatedMap.newPrimary=Backup becoming primary abstractReplicatedMap.ping.stateTransferredMember=Member[{0}] is state transferred but not available yet. abstractReplicatedMap.ping.timeout=Member[{0}] in the Map[{1}] has timed-out in the ping processing. +abstractReplicatedMap.primaryDisappeared=Primary disappeared abstractReplicatedMap.relocate.complete=Relocation of map entries was complete in [{0}] ms. +abstractReplicatedMap.removeOrphan=Removing orphaned proxy abstractReplicatedMap.transferState.noReplies=Transfer state, 0 replies, probably a timeout. abstractReplicatedMap.unable.deserialize.MapMessage=Unable to deserialize MapMessage. abstractReplicatedMap.unable.diffObject=Unable to diff object. Will replicate the entire object instead. @@ -48,6 +51,7 @@ mapMessage.deserialize.error.key=Failed to deserialize MapMessage key mapMessage.deserialize.error.value=Failed to deserialize MapMessage value replicatedMap.member.disappeared=Member[{0}] disappeared. Related map entries will be relocated to the new node. +replicatedMap.member.disappeared.unknown=Member[{0}] disappeared, but was not present in the map. replicatedMap.relocate.complete=Relocation of map entries was complete in [{0}] ms. replicatedMap.unable.relocate=Unable to relocate[{0}] to a new backup node replicatedMap.unableReplicate.completely=Unable to replicate backup key:[{0}]. Success nodes:[{1}]. Failed nodes:[{2}]. diff --git a/java/org/apache/catalina/tribes/tipis/ReplicatedMap.java b/java/org/apache/catalina/tribes/tipis/ReplicatedMap.java index ff4a867dfd..dfd3b959cf 100644 --- a/java/org/apache/catalina/tribes/tipis/ReplicatedMap.java +++ b/java/org/apache/catalina/tribes/tipis/ReplicatedMap.java @@ -191,7 +191,7 @@ public class ReplicatedMap<K,V> extends AbstractReplicatedMap<K,V> { removed = (mapMembers.remove(member) != null ); if (!removed) { if (log.isDebugEnabled()) { - log.debug("Member["+member+"] disappeared, but was not present in the map."); + log.debug(sm.getString("replicatedMap.member.disappeared.unknown", member)); } return; //the member was not part of our map. } diff --git a/java/org/apache/catalina/tribes/transport/LocalStrings.properties b/java/org/apache/catalina/tribes/transport/LocalStrings.properties index 2d09e7d751..e2d64970a2 100644 --- a/java/org/apache/catalina/tribes/transport/LocalStrings.properties +++ b/java/org/apache/catalina/tribes/transport/LocalStrings.properties @@ -19,6 +19,7 @@ pooledSender.closed.queue=Queue is closed receiverBase.bind.failed=Failed bind replication listener on address:[{0}] receiverBase.socket.bind=Receiver Server Socket bound to:[{0}] +receiverBase.start=Starting replication listener on address [{0}] receiverBase.udp.bind=UDP Receiver Server Socket bound to:[{0}] receiverBase.unable.bind=Unable to bind server socket to:[{0}] throwing error. receiverBase.unable.bind.udp=Unable to bind UDP socket to:[{0}] throwing error. diff --git a/java/org/apache/catalina/tribes/transport/ReceiverBase.java b/java/org/apache/catalina/tribes/transport/ReceiverBase.java index efc194a172..507865cd7a 100644 --- a/java/org/apache/catalina/tribes/transport/ReceiverBase.java +++ b/java/org/apache/catalina/tribes/transport/ReceiverBase.java @@ -183,7 +183,7 @@ public abstract class ReceiverBase implements ChannelReceiver, ListenCallback, R host = InetAddress.getLocalHost().getHostAddress(); } if (log.isDebugEnabled()) { - log.debug("Starting replication listener on address:"+ host); + log.debug(sm.getString("receiverBase.start", host)); } bind = InetAddress.getByName(host); } catch (IOException ioe) { diff --git a/java/org/apache/catalina/tribes/transport/nio/LocalStrings.properties b/java/org/apache/catalina/tribes/transport/nio/LocalStrings.properties index d59e0d77dc..31fda7d8d0 100644 --- a/java/org/apache/catalina/tribes/transport/nio/LocalStrings.properties +++ b/java/org/apache/catalina/tribes/transport/nio/LocalStrings.properties @@ -16,6 +16,9 @@ nioReceiver.alreadyStarted=ServerSocketChannel already started nioReceiver.cleanup.fail=Unable to cleanup on selector close nioReceiver.clientDisconnect=Replication client disconnected, error when polling key. Ignoring client. +nioReceiver.closeError=Close error +nioReceiver.eventsError=Error processing events +nioReceiver.noThread=No TcpReplicationThread available nioReceiver.requestError=Unable to process request in NioReceiver nioReceiver.run.fail=Unable to run replication listener nioReceiver.start.fail=Unable to start cluster receiver diff --git a/java/org/apache/catalina/tribes/transport/nio/NioReceiver.java b/java/org/apache/catalina/tribes/transport/nio/NioReceiver.java index 6660a57496..53ccc6d58b 100644 --- a/java/org/apache/catalina/tribes/transport/nio/NioReceiver.java +++ b/java/org/apache/catalina/tribes/transport/nio/NioReceiver.java @@ -191,16 +191,16 @@ public class NioReceiver extends ReceiverBase implements Runnable, NioReceiverMB key.attach(null); if (key.channel() instanceof SocketChannel) { try { ((SocketChannel)key.channel()).socket().close(); } catch (IOException e) { if (log.isDebugEnabled()) { - log.debug("", e); + log.debug(sm.getString("nioReceiver.closeError"), e); } } } if (key.channel() instanceof DatagramChannel) { try { ((DatagramChannel)key.channel()).socket().close(); } catch (Exception e) { if (log.isDebugEnabled()) { - log.debug("", e); + log.debug(sm.getString("nioReceiver.closeError"), e); } } } try { key.channel().close(); } catch (IOException e) { if (log.isDebugEnabled()) { - log.debug("", e); + log.debug(sm.getString("nioReceiver.closeError"), e); } } } @@ -347,7 +347,7 @@ public class NioReceiver extends ReceiverBase implements Runnable, NioReceiverMB datagramChannel.close(); }catch (Exception iox) { if (log.isDebugEnabled()) { - log.debug("Unable to close datagram channel.",iox); + log.debug(sm.getString("nioReceiver.closeError"), iox); } } datagramChannel=null; @@ -474,7 +474,7 @@ public class NioReceiver extends ReceiverBase implements Runnable, NioReceiverMB // thread becomes available, the thread pool itself has a waiting mechanism // so we will not wait here. if (log.isDebugEnabled()) { - log.debug("No TcpReplicationThread available"); + log.debug(sm.getString("nioReceiver.noThread")); } } else { // invoking this wakes up the worker thread then returns diff --git a/java/org/apache/catalina/tribes/transport/nio/NioReplicationTask.java b/java/org/apache/catalina/tribes/transport/nio/NioReplicationTask.java index a354458158..7edf36b9ed 100644 --- a/java/org/apache/catalina/tribes/transport/nio/NioReplicationTask.java +++ b/java/org/apache/catalina/tribes/transport/nio/NioReplicationTask.java @@ -110,7 +110,7 @@ public class NioReplicationTask extends AbstractRxTask { } else if ( e instanceof IOException ) { //don't spew out stack traces for IO exceptions unless debug is enabled. if (log.isDebugEnabled()) { - log.debug ("IOException in replication worker, unable to drain channel. Probable cause: Keep alive socket closed["+e.getMessage()+"].", e); + log.debug(sm.getString("nioReplicationTask.unable.drainChannel.ioe", e.getMessage()), e); } else { log.warn (sm.getString("nioReplicationTask.unable.drainChannel.ioe", e.getMessage())); } diff --git a/java/org/apache/catalina/valves/ErrorReportValve.java b/java/org/apache/catalina/valves/ErrorReportValve.java index 4c55b81be2..6fd08a9700 100644 --- a/java/org/apache/catalina/valves/ErrorReportValve.java +++ b/java/org/apache/catalina/valves/ErrorReportValve.java @@ -329,7 +329,7 @@ public class ErrorReportValve extends ValveBase { } catch (Throwable t) { ExceptionUtils.handleThrowable(t); if (container.getLogger().isDebugEnabled()) { - container.getLogger().debug("Failure to set the content-type of response", t); + container.getLogger().debug(sm.getString("errorReportValve.contentTypeFail"), t); } } Writer writer = response.getReporter(); diff --git a/java/org/apache/catalina/valves/ExtendedAccessLogValve.java b/java/org/apache/catalina/valves/ExtendedAccessLogValve.java index 4ed97e9fa2..59d1e07d54 100644 --- a/java/org/apache/catalina/valves/ExtendedAccessLogValve.java +++ b/java/org/apache/catalina/valves/ExtendedAccessLogValve.java @@ -491,8 +491,8 @@ public class ExtendedAccessLogValve extends AccessLogValve { @Override protected AccessLogElement[] createLogElements() { - if (log.isDebugEnabled()) { - log.debug("decodePattern, pattern =" + pattern); + if (log.isTraceEnabled()) { + log.trace("decodePattern, pattern =" + pattern); } List<AccessLogElement> list = new ArrayList<>(); diff --git a/java/org/apache/catalina/valves/JsonErrorReportValve.java b/java/org/apache/catalina/valves/JsonErrorReportValve.java index c698ca3ce5..c073783150 100644 --- a/java/org/apache/catalina/valves/JsonErrorReportValve.java +++ b/java/org/apache/catalina/valves/JsonErrorReportValve.java @@ -93,7 +93,7 @@ public class JsonErrorReportValve extends ErrorReportValve { } catch (Throwable t) { ExceptionUtils.handleThrowable(t); if (container.getLogger().isDebugEnabled()) { - container.getLogger().debug("Failure to set the content-type of response", t); + container.getLogger().debug(sm.getString("errorReportValve.contentTypeFail"), t); } } Writer writer = response.getReporter(); diff --git a/java/org/apache/catalina/valves/LoadBalancerDrainingValve.java b/java/org/apache/catalina/valves/LoadBalancerDrainingValve.java index 17c3e0a295..7d4378c642 100644 --- a/java/org/apache/catalina/valves/LoadBalancerDrainingValve.java +++ b/java/org/apache/catalina/valves/LoadBalancerDrainingValve.java @@ -157,7 +157,7 @@ public class LoadBalancerDrainingValve extends ValveBase { !request.isRequestedSessionIdValid()) { if (containerLog.isDebugEnabled()) { - containerLog.debug("Load-balancer is in DISABLED state; draining this node"); + containerLog.debug(sm.getString("loadBalancerDrainingValve.draining")); } boolean ignoreRebalance = false; @@ -187,8 +187,7 @@ public class LoadBalancerDrainingValve extends ValveBase { if (ignoreRebalance) { if (containerLog.isDebugEnabled()) { - containerLog.debug("Client is presenting a valid " + _ignoreCookieName + - " cookie, re-balancing is being skipped"); + containerLog.debug(sm.getString("loadBalancerDrainingValve.skip", _ignoreCookieName)); } getNext().invoke(request, response); diff --git a/java/org/apache/catalina/valves/LocalStrings.properties b/java/org/apache/catalina/valves/LocalStrings.properties index 247139f0f1..13466d2f12 100644 --- a/java/org/apache/catalina/valves/LocalStrings.properties +++ b/java/org/apache/catalina/valves/LocalStrings.properties @@ -31,6 +31,7 @@ errorReportValve.errorPageIOException=Unable to display error page at [{0}] due errorReportValve.errorPageNotFound=Unable to find a static error page at [{0}] errorReportValve.exception=Exception errorReportValve.exceptionReport=Exception Report +errorReportValve.contentTypeFail=Failure to set the content-type of response errorReportValve.message=Message errorReportValve.noDescription=No description available errorReportValve.note=Note @@ -128,6 +129,9 @@ http.511.reason=Network Authentication Required jdbcAccessLogValve.close=Failed to close database jdbcAccessLogValve.exception=Exception performing insert access entry +loadBalancerDrainingValve.draining=Load-balancer is in DISABLED state, draining this node +loadBalancerDrainingValve.skip=Client is presenting a valid [{0}] cookie, re-balancing is being skipped + patternTokenizer.unexpectedParenthesis=Unexpected ')' in pattern persistentValve.acquireFailed=The request for [{0}] did not obtain the per session Semaphore as no permit was available @@ -137,6 +141,8 @@ persistentValve.requestIgnore=The request for [{0}] was ignored by this Valve as persistentValve.requestProcess=The request for [{0}] will be processed by this Valve as it does not match the configured filter persistentValve.sessionLoadFail=Loading session [{0}] from the store failed +proxyErrorReportValve.error=Proxy error to [{0}] + remoteCidrValve.invalid=Invalid configuration provided for [{0}]. See previous messages for details. remoteCidrValve.noPort=Request does not contain a valid server port. Request denied. remoteCidrValve.noRemoteIp=Client does not have an IP address. Request denied. @@ -153,6 +159,7 @@ requestFilterValve.deny=Denied request for [{0}] based on property [{1}] sslValve.certError=Failed to process certificate string [{0}] to create a java.security.cert.X509Certificate object sslValve.invalidProvider=The SSL provider specified on the connector associated with this request of [{0}] is invalid. The certificate data could not be processed. +stuckThreadDetectionValve.interrupted=Thread interrupted after the request is finished, ignoring stuckThreadDetectionValve.notifyStuckThreadCompleted=Thread [{0}] (id=[{3}]) was previously reported to be stuck but has completed. It was active for approximately [{1}] milliseconds.{2,choice,0#|0< There is/are still [{2}] thread(s) that are monitored by this Valve and may be stuck.} stuckThreadDetectionValve.notifyStuckThreadDetected=Thread [{0}] (id=[{6}]) has been active for [{1}] milliseconds (since [{2}]) to serve the same request for [{4}] and may be stuck (configured threshold for this StuckThreadDetectionValve is [{5}] seconds). There is/are [{3}] thread(s) in total that are monitored by this Valve and may be stuck. stuckThreadDetectionValve.notifyStuckThreadInterrupted=Thread [{0}] (id=[{5}]) has been interrupted because it was active for [{1}] milliseconds (since [{2}]) to serve the same request for [{3}] and was probably stuck (configured interruption threshold for this StuckThreadDetectionValve is [{4}] seconds). diff --git a/java/org/apache/catalina/valves/ProxyErrorReportValve.java b/java/org/apache/catalina/valves/ProxyErrorReportValve.java index 175ae8e330..37e0d58342 100644 --- a/java/org/apache/catalina/valves/ProxyErrorReportValve.java +++ b/java/org/apache/catalina/valves/ProxyErrorReportValve.java @@ -221,7 +221,7 @@ public class ProxyErrorReportValve extends ErrorReportValve { IOTools.flow(inputStream, outputStream); } catch (URISyntaxException | IOException | IllegalArgumentException e) { if (log.isDebugEnabled()) { - log.debug("Proxy error to " + urlString, e); + log.debug(sm.getString("proxyErrorReportValve.error", urlString), e); } // Ignore } finally { diff --git a/java/org/apache/catalina/valves/StuckThreadDetectionValve.java b/java/org/apache/catalina/valves/StuckThreadDetectionValve.java index cb1880e04d..e02a4ab1b7 100644 --- a/java/org/apache/catalina/valves/StuckThreadDetectionValve.java +++ b/java/org/apache/catalina/valves/StuckThreadDetectionValve.java @@ -321,7 +321,7 @@ public class StuckThreadDetectionValve extends ValveBase { // going out from here, maybe already serving a new request this.interruptionSemaphore.acquire(); } catch (InterruptedException e) { - log.debug("thread interrupted after the request is finished, ignoring", e); + log.debug(sm.getString("stuckThreadDetectionValve.interrupted"), e); } // no need to release the semaphore, it will be GCed } diff --git a/java/org/apache/catalina/valves/rewrite/LocalStrings.properties b/java/org/apache/catalina/valves/rewrite/LocalStrings.properties index 34e6248834..db07290ebb 100644 --- a/java/org/apache/catalina/valves/rewrite/LocalStrings.properties +++ b/java/org/apache/catalina/valves/rewrite/LocalStrings.properties @@ -23,4 +23,6 @@ rewriteValve.closeError=Error closing configuration rewriteValve.invalidFlags=Invalid flag in [{0}] flags [{1}] rewriteValve.invalidLine=Invalid line [{0}] rewriteValve.invalidMapClassName=Invalid map class name [{0}] +rewriteValve.noConfiguration=No configuration resource found [{0}] +rewriteValve.readConfiguration=Read configuration from [/WEB-INF/{0}] rewriteValve.readError=Error reading configuration diff --git a/java/org/apache/catalina/valves/rewrite/RewriteValve.java b/java/org/apache/catalina/valves/rewrite/RewriteValve.java index 32e986514c..1277397483 100644 --- a/java/org/apache/catalina/valves/rewrite/RewriteValve.java +++ b/java/org/apache/catalina/valves/rewrite/RewriteValve.java @@ -144,13 +144,14 @@ public class RewriteValve extends ValveBase { // Process configuration file for this valve if (getContainer() instanceof Context) { context = true; + String webInfResourcePath = "/WEB-INF/" + resourcePath; is = ((Context) getContainer()).getServletContext() - .getResourceAsStream("/WEB-INF/" + resourcePath); + .getResourceAsStream(webInfResourcePath); if (containerLog.isDebugEnabled()) { if (is == null) { - containerLog.debug("No configuration resource found: /WEB-INF/" + resourcePath); + containerLog.debug(sm.getString("rewriteValve.noConfiguration", webInfResourcePath)); } else { - containerLog.debug("Read configuration from: /WEB-INF/" + resourcePath); + containerLog.debug(sm.getString("rewriteValve.readConfiguration", webInfResourcePath)); } } } else if (getContainer() instanceof Host) { diff --git a/java/org/apache/coyote/AbstractProcessor.java b/java/org/apache/coyote/AbstractProcessor.java index efe3b3c035..5d10ae0f8b 100644 --- a/java/org/apache/coyote/AbstractProcessor.java +++ b/java/org/apache/coyote/AbstractProcessor.java @@ -212,7 +212,7 @@ public abstract class AbstractProcessor extends AbstractProcessorLight implement } } catch (IOException ioe) { if (getLog().isDebugEnabled()) { - getLog().debug("Unable to write async data.", ioe); + getLog().debug(sm.getString("abstractProcessor.asyncFail"), ioe); } status = SocketEvent.ERROR; request.setAttribute(RequestDispatcher.ERROR_EXCEPTION, ioe); diff --git a/java/org/apache/coyote/LocalStrings.properties b/java/org/apache/coyote/LocalStrings.properties index b44d97efab..d62168541e 100644 --- a/java/org/apache/coyote/LocalStrings.properties +++ b/java/org/apache/coyote/LocalStrings.properties @@ -25,6 +25,7 @@ abstractConnectionHandler.protocolexception.debug=ProtocolExceptions are normal, abstractConnectionHandler.socketexception.debug=SocketExceptions are normal, ignored abstractConnectionHandler.upgradeCreate=Created upgrade processor [{0}] for socket wrapper [{1}] +abstractProcessor.asyncFail=Unable to write async data abstractProcessor.fallToDebug=\n\ \ Note: further occurrences of request parsing errors will be logged at DEBUG level. abstractProcessor.hostInvalid=The host [{0}] is not valid diff --git a/java/org/apache/coyote/ajp/AjpProcessor.java b/java/org/apache/coyote/ajp/AjpProcessor.java index 76930461ca..5c071ef1b9 100644 --- a/java/org/apache/coyote/ajp/AjpProcessor.java +++ b/java/org/apache/coyote/ajp/AjpProcessor.java @@ -480,7 +480,7 @@ public class AjpProcessor extends AbstractProcessor { socketWrapper.flush(true); } catch (IOException e) { if (getLog().isDebugEnabled()) { - getLog().debug("Pong message failed", e); + getLog().debug(sm.getString("ajpprocessor.pongFail"), e); } setErrorState(ErrorState.CLOSE_CONNECTION_NOW, e); } @@ -490,7 +490,7 @@ public class AjpProcessor extends AbstractProcessor { // Unexpected packet type. Unread body packets should have // been swallowed in finish(). if (getLog().isDebugEnabled()) { - getLog().debug("Unexpected message: " + type); + getLog().debug(sm.getString("ajpprocessor.unexpectedMessage", type)); } setErrorState(ErrorState.CLOSE_CONNECTION_NOW, null); break; diff --git a/java/org/apache/coyote/ajp/LocalStrings.properties b/java/org/apache/coyote/ajp/LocalStrings.properties index 54cd1da219..135820acfa 100644 --- a/java/org/apache/coyote/ajp/LocalStrings.properties +++ b/java/org/apache/coyote/ajp/LocalStrings.properties @@ -26,10 +26,12 @@ ajpnioprotocol.releaseStart=Iterating through our connections to release a socke ajpprocessor.certs.fail=Certificate conversion failed ajpprocessor.header.error=Header message parsing failed ajpprocessor.header.tooLong=Header message of length [{0}] received but the packetSize is only [{1}] +ajpprocessor.pongFail=Pong message failed ajpprocessor.readtimeout=Timeout attempting to read data from the socket ajpprocessor.request.prepare=Error preparing request ajpprocessor.request.process=Error processing request ajpprocessor.response.invalidHeader=The HTTP response header [{0}] with value [{1}] has been removed from the response because it is invalid +ajpprocessor.unexpectedMessage=Unexpected message type [{0}] ajpprocessor.unknownAttribute=Rejecting request due to unknown request attribute [{0}] received from reverse proxy ajpprotocol.noBio=The AJP BIO connector has been removed in Tomcat 8.5.x onwards. The AJP BIO connector configuration has been automatically switched to use the AJP NIO connector instead. diff --git a/java/org/apache/coyote/http11/filters/GzipOutputFilter.java b/java/org/apache/coyote/http11/filters/GzipOutputFilter.java index 2f82aa7ce3..16b28203c1 100644 --- a/java/org/apache/coyote/http11/filters/GzipOutputFilter.java +++ b/java/org/apache/coyote/http11/filters/GzipOutputFilter.java @@ -27,6 +27,7 @@ import org.apache.coyote.http11.OutputFilter; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; import org.apache.tomcat.util.buf.ByteChunk; +import org.apache.tomcat.util.res.StringManager; /** * Gzip output filter. @@ -36,6 +37,7 @@ import org.apache.tomcat.util.buf.ByteChunk; public class GzipOutputFilter implements OutputFilter { protected static final Log log = LogFactory.getLog(GzipOutputFilter.class); + private static final StringManager sm = StringManager.getManager(GzipOutputFilter.class); // ----------------------------------------------------- Instance Variables @@ -115,7 +117,7 @@ public class GzipOutputFilter implements OutputFilter { compressionStream.flush(); } catch (IOException e) { if (log.isDebugEnabled()) { - log.debug("Ignored exception while flushing gzip filter", e); + log.debug(sm.getString("gzipOutputFilter.flushFail"), e); } } } diff --git a/java/org/apache/coyote/http11/filters/LocalStrings.properties b/java/org/apache/coyote/http11/filters/LocalStrings.properties index 3114a87d0a..3650316b88 100644 --- a/java/org/apache/coyote/http11/filters/LocalStrings.properties +++ b/java/org/apache/coyote/http11/filters/LocalStrings.properties @@ -29,4 +29,6 @@ chunkedInputFilter.invalidTrailerHeaderValue=Invalid trailer header value (contr chunkedInputFilter.maxExtension=maxExtensionSize exceeded chunkedInputFilter.maxTrailer=maxTrailerSize exceeded +gzipOutputFilter.flushFail=Ignored exception while flushing gzip filter + inputFilter.maxSwallow=maxSwallowSize exceeded diff --git a/java/org/apache/jasper/JspC.java b/java/org/apache/jasper/JspC.java index b15be65481..655942d34a 100644 --- a/java/org/apache/jasper/JspC.java +++ b/java/org/apache/jasper/JspC.java @@ -1062,8 +1062,7 @@ public class JspC extends Task implements Options { throws IOException { if (log.isDebugEnabled()) { - log.debug("Generating web mapping for file " + file - + " using compilation context " + clctxt); + log.debug(Localizer.getMessage("jspc.generatingMapping", file, clctxt)); } String className = clctxt.getServletClassName(); @@ -1227,7 +1226,7 @@ public class JspC extends Task implements Options { protected void processFile(String file) throws JasperException { if (log.isDebugEnabled()) { - log.debug("Processing file: " + file); + log.debug(Localizer.getMessage("jspc.processing", file)); } ClassLoader originalClassLoader = null; @@ -1270,7 +1269,7 @@ public class JspC extends Task implements Options { // the .java file if( clc.isOutDated(compile) ) { if (log.isDebugEnabled()) { - log.debug(jspUri + " is out dated, compiling..."); + log.debug(Localizer.getMessage("jspc.outdated", jspUri)); } clc.compile(compile, true); @@ -1279,7 +1278,7 @@ public class JspC extends Task implements Options { // Generate mapping generateWebMapping( file, clctxt ); if ( showSuccess ) { - log.info( "Built File: " + file ); + log.info(Localizer.getMessage("jspc.built", file)); } } catch (JasperException je) { @@ -1359,7 +1358,7 @@ public class JspC extends Task implements Options { @Override public void execute() { if(log.isDebugEnabled()) { - log.debug("execute() starting for " + pages.size() + " pages."); + log.debug(Localizer.getMessage("jspc.start", pages.size())); } try { diff --git a/java/org/apache/jasper/compiler/AntCompiler.java b/java/org/apache/jasper/compiler/AntCompiler.java index d22983d21a..e80d9b0290 100644 --- a/java/org/apache/jasper/compiler/AntCompiler.java +++ b/java/org/apache/jasper/compiler/AntCompiler.java @@ -271,8 +271,7 @@ public class AntCompiler extends Compiler { if( log.isDebugEnabled() ) { long t2 = System.currentTimeMillis(); - log.debug("Compiled " + ctxt.getServletJavaFileName() + " " - + (t2-t1) + "ms"); + log.debug(Localizer.getMessage("jsp.compiled", ctxt.getServletJavaFileName(), Long.valueOf(t2 - t1))); } logger = null; diff --git a/java/org/apache/jasper/compiler/Compiler.java b/java/org/apache/jasper/compiler/Compiler.java index e0c1a5c766..f3d8bcd82e 100644 --- a/java/org/apache/jasper/compiler/Compiler.java +++ b/java/org/apache/jasper/compiler/Compiler.java @@ -534,8 +534,7 @@ public abstract class Compiler { } } catch (Exception e) { if (log.isDebugEnabled()) { - log.debug("Problem accessing resource. Treat as outdated.", - e); + log.debug(Localizer.getMessage("jsp.error.compiler.missingResource"), e); } return true; } diff --git a/java/org/apache/jasper/compiler/JDTCompiler.java b/java/org/apache/jasper/compiler/JDTCompiler.java index 671d324fe9..8ab753b541 100644 --- a/java/org/apache/jasper/compiler/JDTCompiler.java +++ b/java/org/apache/jasper/compiler/JDTCompiler.java @@ -602,8 +602,7 @@ public class JDTCompiler extends org.apache.jasper.compiler.Compiler { if( log.isDebugEnabled() ) { long t2=System.currentTimeMillis(); - log.debug("Compiled " + ctxt.getServletJavaFileName() + " " - + (t2-t1) + "ms"); + log.debug(Localizer.getMessage("jsp.compiled", ctxt.getServletJavaFileName(), Long.valueOf(t2 - t1))); } if (ctxt.isPrototypeMode()) { diff --git a/java/org/apache/jasper/compiler/JspReader.java b/java/org/apache/jasper/compiler/JspReader.java index 20efad478a..df3ee8a0f4 100644 --- a/java/org/apache/jasper/compiler/JspReader.java +++ b/java/org/apache/jasper/compiler/JspReader.java @@ -127,7 +127,7 @@ class JspReader { reader.close(); } catch (Exception any) { if(log.isDebugEnabled()) { - log.debug("Exception closing reader: ", any); + log.debug(Localizer.getMessage("jsp.error.file.close"), any); } } } diff --git a/java/org/apache/jasper/optimizations/ELInterpreterTagSetters.java b/java/org/apache/jasper/optimizations/ELInterpreterTagSetters.java index 9a15292b42..de6b954d40 100644 --- a/java/org/apache/jasper/optimizations/ELInterpreterTagSetters.java +++ b/java/org/apache/jasper/optimizations/ELInterpreterTagSetters.java @@ -26,6 +26,7 @@ import javax.el.ELResolver; import org.apache.jasper.JspCompilationContext; import org.apache.jasper.compiler.ELInterpreter; import org.apache.jasper.compiler.JspUtil; +import org.apache.jasper.compiler.Localizer; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; @@ -110,7 +111,7 @@ public class ELInterpreterTagSetters implements ELInterpreter { BigDecimal unused = new BigDecimal(m.group(2)); result = "new java.math.BigDecimal(\"" + m.group(2) + "\")"; } catch (NumberFormatException e) { - log.debug("Failed to convert [" + m.group(2) + "] to BigDecimal", e); + log.debug(Localizer.getMessage("jsp.error.typeConversion", m.group(2), "BigDecimal"), e); // Continue and resolve the value at runtime } } @@ -128,7 +129,7 @@ public class ELInterpreterTagSetters implements ELInterpreter { result = "Long.valueOf(\"" + m.group(2) + "\")"; } } catch (NumberFormatException e) { - log.debug("Failed to convert [" + m.group(2) + "] to Long", e); + log.debug(Localizer.getMessage("jsp.error.typeConversion", m.group(2), "Long"), e); // Continue and resolve the value at runtime } } @@ -145,7 +146,7 @@ public class ELInterpreterTagSetters implements ELInterpreter { result = "Integer.valueOf(\"" + m.group(2) + "\")"; } } catch (NumberFormatException e) { - log.debug("Failed to convert [" + m.group(2) + "] to Integer", e); + log.debug(Localizer.getMessage("jsp.error.typeConversion", m.group(2), "Integer"), e); // Continue and resolve the value at runtime } } @@ -163,7 +164,7 @@ public class ELInterpreterTagSetters implements ELInterpreter { result = "Short.valueOf(\"" + m.group(2) + "\")"; } } catch (NumberFormatException e) { - log.debug("Failed to convert [" + m.group(2) + "] to Short", e); + log.debug(Localizer.getMessage("jsp.error.typeConversion", m.group(2), "Short"), e); // Continue and resolve the value at runtime } } @@ -181,7 +182,7 @@ public class ELInterpreterTagSetters implements ELInterpreter { result = "Byte.valueOf(\"" + m.group(2) + "\")"; } } catch (NumberFormatException e) { - log.debug("Failed to convert [" + m.group(2) + "] to Byte", e); + log.debug(Localizer.getMessage("jsp.error.typeConversion", m.group(2), "Byte"), e); // Continue and resolve the value at runtime } } @@ -198,7 +199,7 @@ public class ELInterpreterTagSetters implements ELInterpreter { result = "Double.valueOf(\"" + m.group(2) + "\")"; } } catch (NumberFormatException e) { - log.debug("Failed to convert [" + m.group(2) + "] to Double", e); + log.debug(Localizer.getMessage("jsp.error.typeConversion", m.group(2), "Double"), e); // Continue and resolve the value at runtime } } @@ -216,7 +217,7 @@ public class ELInterpreterTagSetters implements ELInterpreter { result = "Float.valueOf(\"" + m.group(2) + "\")"; } } catch (NumberFormatException e) { - log.debug("Failed to convert [" + m.group(2) + "] to Float", e); + log.debug(Localizer.getMessage("jsp.error.typeConversion", m.group(2), "Float"), e); // Continue and resolve the value at runtime } } @@ -229,7 +230,7 @@ public class ELInterpreterTagSetters implements ELInterpreter { BigInteger unused = new BigInteger(m.group(2)); result = "new java.math.BigInteger(\"" + m.group(2) + "\")"; } catch (NumberFormatException e) { - log.debug("Failed to convert [" + m.group(2) + "] to BigInteger", e); + log.debug(Localizer.getMessage("jsp.error.typeConversion", m.group(2), "BigInteger"), e); // Continue and resolve the value at runtime } } @@ -242,7 +243,7 @@ public class ELInterpreterTagSetters implements ELInterpreter { Enum<?> enumValue = Enum.valueOf((Class<? extends Enum>) expectedType, m.group(2)); result = expectedType.getName() + "." + enumValue.name(); } catch (IllegalArgumentException iae) { - log.debug("Failed to convert [" + m.group(2) + "] to Enum type [" + expectedType.getName() + "]", iae); + log.debug(Localizer.getMessage("jsp.error.typeConversion", m.group(2), "Enum[" + expectedType.getName() + "]"), iae); // Continue and resolve the value at runtime } } diff --git a/java/org/apache/jasper/resources/LocalStrings.properties b/java/org/apache/jasper/resources/LocalStrings.properties index d3d3a1ac77..516f3980cc 100644 --- a/java/org/apache/jasper/resources/LocalStrings.properties +++ b/java/org/apache/jasper/resources/LocalStrings.properties @@ -15,6 +15,7 @@ jasper.error.emptybodycontent.nonempty=According to TLD, tag [{0}] must be empty, but is not +jsp.compiled=Compiled [{0}] {1}ms jsp.engine.info=Jasper JSP {0} Engine jsp.error.URLMustStartWithSlash=Path [{0}] must start with a slash character jsp.error.action.isnottagfile=[{0}] action can be used in tag files only @@ -55,6 +56,7 @@ jsp.error.compilation.jdtProblemError=Error processing JDT problems list jsp.error.compilation.source=Error loading source file [{0}] jsp.error.compiler=No Java compiler available jsp.error.compiler.config=No Java compiler available for configuration options compilerClassName: [{0}] and compiler: [{1}] +jsp.error.compiler.missingResource=Problem accessing resource, treat as outdated jsp.error.config_pagedir_encoding_mismatch=Page-encoding specified in jsp-property-group [{0}] is different from that specified in page directive [{1}] jsp.error.corresponding.servlet=Generated servlet error:\n jsp.error.could.not.add.taglibraries=Could not add one or more tag libraries. @@ -75,6 +77,7 @@ jsp.error.el_interpreter_class.instantiation=Failed to load or instantiate ELInt jsp.error.fallback.invalidUse=jsp:fallback must be a direct child of jsp:plugin jsp.error.file.already.registered=Recursive include of file [{0}] jsp.error.file.cannot.read=Cannot read file: [{0}] +jsp.error.file.close=Exception closing reader jsp.error.file.not.found=JSP file [{0}] not found jsp.error.flush=Exception occurred when flushing data jsp.error.fragmentwithtype=Cannot specify both ''fragment'' and ''type'' attributes. If ''fragment'' is present, ''type'' is fixed as ''{0}'' @@ -226,6 +229,7 @@ jsp.error.tld.missing_jar=Missing JAR resource [{0}] containing TLD jsp.error.tld.unable_to_get_jar=Unable to get JAR resource [{0}] containing TLD: [{1}] jsp.error.tlv.invalid.page=Validation error messages from TagLibraryValidator for [{0}] in [{1}] jsp.error.tlvclass.instantiation=Failed to load or instantiate TagLibraryValidator class: [{0}] +jsp.error.typeConversion=Failed to convert [{0}] to {1} jsp.error.unable.compile=Unable to compile class for JSP jsp.error.unable.deleteClassFile=Unable to delete class file [{0}] jsp.error.unable.getType=Unable to extract type from [{0}] @@ -328,6 +332,7 @@ jsp.warning.unsupported.sourceVM=Unsupported source VM [{0}] requested, using [{ jsp.warning.unsupported.targetVM=Unsupported target VM [{0}] requested, using [{1}] jsp.warning.xpoweredBy=Warning: Invalid value for the initParam xpoweredBy. Will use the default value of "false" +jspc.built=Built file [{0}] jspc.delete.fail=Failed to delete file [{0}] jspc.error.compilation=Compilation error jspc.error.fileDoesNotExist=The file argument [{0}] does not exist @@ -338,8 +343,12 @@ jspc.error.minThreadCount=There must be at least one thread [{0}] jspc.error.parseThreadCount=Cannot parse thread count [{0}] jspc.error.unknownOption=Unrecognized option [{0}]. Use -help for help. jspc.errorCount=Error count: [{0}] +jspc.generatingMapping=Generating web mapping for file [{0}] using compilation context [{1}] jspc.generation.result=Generation completed with [{0}] errors in [{1}] milliseconds jspc.implicit.uriRoot=uriRoot implicitly set to [{0}] +jspc.outdated=[{0}] is outdated and is compiled +jspc.processing=Processing file [{0}] +jspc.start=Execute starting for {0} pages jspc.usage=Usage: jspc <options> [--] <jsp files>\n\ where jsp files is\n\ \ -webapp <dir> A directory containing a web-app, whose JSP pages\n\ diff --git a/java/org/apache/tomcat/util/buf/LocalStrings.properties b/java/org/apache/tomcat/util/buf/LocalStrings.properties index 381dc26d5c..eabc61360a 100644 --- a/java/org/apache/tomcat/util/buf/LocalStrings.properties +++ b/java/org/apache/tomcat/util/buf/LocalStrings.properties @@ -32,6 +32,9 @@ hexUtils.fromHex.oddDigits=The input must consist of an even number of hex digit messageBytes.illegalCharacter=The Unicode character [{0}] at code point [{1}] cannot be encoded as it is outside the permitted range of 0 to 255 +stringCache.byteTime=ByteCache generation time: {0}ms +stringCache.charTime=CharCache generation time: {0}ms + uDecoder.eof=End of file (EOF) uDecoder.isHexDigit=The hexadecimal encoding is invalid uDecoder.noSlash=The encoded slash character is not allowed diff --git a/java/org/apache/tomcat/util/buf/StringCache.java b/java/org/apache/tomcat/util/buf/StringCache.java index 929ec58607..332690320a 100644 --- a/java/org/apache/tomcat/util/buf/StringCache.java +++ b/java/org/apache/tomcat/util/buf/StringCache.java @@ -27,6 +27,7 @@ import java.util.TreeMap; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; +import org.apache.tomcat.util.res.StringManager; /** * This class implements a String cache for ByteChunk and CharChunk. @@ -37,6 +38,7 @@ public class StringCache { private static final Log log = LogFactory.getLog(StringCache.class); + private static final StringManager sm = StringManager.getManager(StringCache.class); // ------------------------------------------------------- Static Variables @@ -289,7 +291,7 @@ public class StringCache { bcCache = tempbcCache; if (log.isDebugEnabled()) { long t2 = System.currentTimeMillis(); - log.debug("ByteCache generation time: " + (t2 - t1) + "ms"); + log.debug(sm.getString("stringCache.byteTime", Long.valueOf(t2 - t1))); } } else { bcCount++; @@ -402,7 +404,7 @@ public class StringCache { ccCache = tempccCache; if (log.isDebugEnabled()) { long t2 = System.currentTimeMillis(); - log.debug("CharCache generation time: " + (t2 - t1) + "ms"); + log.debug(sm.getString("stringCache.charTime", Long.valueOf(t2 - t1))); } } else { ccCount++; diff --git a/java/org/apache/tomcat/util/http/LocalStrings.properties b/java/org/apache/tomcat/util/http/LocalStrings.properties index 82d556b5d7..3a1fb8d1fd 100644 --- a/java/org/apache/tomcat/util/http/LocalStrings.properties +++ b/java/org/apache/tomcat/util/http/LocalStrings.properties @@ -37,6 +37,7 @@ parameters.maxCountFail.fallToDebug=\n\ parameters.multipleDecodingFail=Character decoding failed. A total of [{0}] failures were detected but only the first was logged. Enable debug level logging for this logger to log all failures. parameters.noequal=Parameter starting at position [{0}] and ending at position [{1}] with a value of [{2}] was not followed by an ''='' character +rfc6265CookieProcessor.expectedBytes=Parsing cookie as String, expected bytes rfc6265CookieProcessor.invalidCharInValue=An invalid character [{0}] was present in the Cookie value rfc6265CookieProcessor.invalidDomain=An invalid domain [{0}] was specified for this cookie rfc6265CookieProcessor.invalidPath=An invalid path [{0}] was specified for this cookie diff --git a/java/org/apache/tomcat/util/http/Rfc6265CookieProcessor.java b/java/org/apache/tomcat/util/http/Rfc6265CookieProcessor.java index 5a961c64a1..3c46926df0 100644 --- a/java/org/apache/tomcat/util/http/Rfc6265CookieProcessor.java +++ b/java/org/apache/tomcat/util/http/Rfc6265CookieProcessor.java @@ -79,7 +79,7 @@ public class Rfc6265CookieProcessor extends CookieProcessorBase { if (log.isDebugEnabled()) { Exception e = new Exception(); // TODO: Review this in light of HTTP/2 - log.debug("Cookies: Parsing cookie as String. Expected bytes.", e); + log.debug(sm.getString("rfc6265CookieProcessor.expectedBytes"), e); } cookieValue.toBytes(); } diff --git a/java/org/apache/tomcat/util/threads/LocalStrings.properties b/java/org/apache/tomcat/util/threads/LocalStrings.properties index 273a378551..53856f58a0 100644 --- a/java/org/apache/tomcat/util/threads/LocalStrings.properties +++ b/java/org/apache/tomcat/util/threads/LocalStrings.properties @@ -15,6 +15,8 @@ taskQueue.notRunning=Executor not running, can't force a command into the queue +taskThread.exiting=Thread exiting on purpose + threadPoolExecutor.invalidKeepAlive=Core threads must have positive keep alive times threadPoolExecutor.queueFull=Queue capacity is full threadPoolExecutor.taskRejected=Task [{0}] rejected from [{1}] diff --git a/java/org/apache/tomcat/util/threads/TaskThread.java b/java/org/apache/tomcat/util/threads/TaskThread.java index 5a7e0f373f..b0dbb0a461 100644 --- a/java/org/apache/tomcat/util/threads/TaskThread.java +++ b/java/org/apache/tomcat/util/threads/TaskThread.java @@ -18,6 +18,7 @@ package org.apache.tomcat.util.threads; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; +import org.apache.tomcat.util.res.StringManager; /** * A Thread implementation that records the time at which it was created. @@ -26,6 +27,7 @@ import org.apache.juli.logging.LogFactory; public class TaskThread extends Thread { private static final Log log = LogFactory.getLog(TaskThread.class); + private static final StringManager sm = StringManager.getManager(TaskThread.class); private final long creationTime; public TaskThread(ThreadGroup group, Runnable target, String name) { @@ -62,7 +64,7 @@ public class TaskThread extends Thread { } catch(StopPooledThreadException exc) { //expected : we just swallow the exception to avoid disturbing //debuggers like eclipse's - log.debug("Thread exiting on purpose", exc); + log.debug(sm.getString("taskThread.exiting"), exc); } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org