You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2018/03/09 12:13:44 UTC
svn commit: r1826336 - in /tomcat/trunk:
java/org/apache/catalina/startup/Bootstrap.java
java/org/apache/catalina/startup/ContextConfig.java
res/findbugs/filter-false-positives.xml
Author: markt
Date: Fri Mar 9 12:13:44 2018
New Revision: 1826336
URL: http://svn.apache.org/viewvc?rev=1826336&view=rev
Log:
Fix some more SpotBugs warnings
Modified:
tomcat/trunk/java/org/apache/catalina/startup/Bootstrap.java
tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java
tomcat/trunk/res/findbugs/filter-false-positives.xml
Modified: tomcat/trunk/java/org/apache/catalina/startup/Bootstrap.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/Bootstrap.java?rev=1826336&r1=1826335&r2=1826336&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/Bootstrap.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/Bootstrap.java Fri Mar 9 12:13:44 2018
@@ -54,7 +54,8 @@ public final class Bootstrap {
/**
* Daemon object used by main.
*/
- private static Bootstrap daemon = null;
+ private static final Object daemonLock = new Object();
+ private static volatile Bootstrap daemon = null;
private static final File catalinaBaseFile;
private static final File catalinaHomeFile;
@@ -176,8 +177,7 @@ public final class Bootstrap {
try {
@SuppressWarnings("unused")
URL url = new URL(repository);
- repositories.add(
- new Repository(repository, RepositoryType.URL));
+ repositories.add(new Repository(repository, RepositoryType.URL));
continue;
} catch (MalformedURLException e) {
// Ignore
@@ -187,14 +187,11 @@ public final class Bootstrap {
if (repository.endsWith("*.jar")) {
repository = repository.substring
(0, repository.length() - "*.jar".length());
- repositories.add(
- new Repository(repository, RepositoryType.GLOB));
+ repositories.add(new Repository(repository, RepositoryType.GLOB));
} else if (repository.endsWith(".jar")) {
- repositories.add(
- new Repository(repository, RepositoryType.JAR));
+ repositories.add(new Repository(repository, RepositoryType.JAR));
} else {
- repositories.add(
- new Repository(repository, RepositoryType.DIR));
+ repositories.add(new Repository(repository, RepositoryType.DIR));
}
}
@@ -456,22 +453,24 @@ public final class Bootstrap {
*/
public static void main(String args[]) {
- if (daemon == null) {
- // Don't set daemon until init() has completed
- Bootstrap bootstrap = new Bootstrap();
- try {
- bootstrap.init();
- } catch (Throwable t) {
- handleThrowable(t);
- t.printStackTrace();
- return;
+ synchronized (daemonLock) {
+ if (daemon == null) {
+ // Don't set daemon until init() has completed
+ Bootstrap bootstrap = new Bootstrap();
+ try {
+ bootstrap.init();
+ } catch (Throwable t) {
+ handleThrowable(t);
+ t.printStackTrace();
+ return;
+ }
+ daemon = bootstrap;
+ } else {
+ // When running as a service the call to stop will be on a new
+ // thread so make sure the correct class loader is used to
+ // prevent a range of class not found exceptions.
+ Thread.currentThread().setContextClassLoader(daemon.catalinaLoader);
}
- daemon = bootstrap;
- } else {
- // When running as a service the call to stop will be on a new
- // thread so make sure the correct class loader is used to prevent
- // a range of class not found exceptions.
- Thread.currentThread().setContextClassLoader(daemon.catalinaLoader);
}
try {
Modified: tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java?rev=1826336&r1=1826335&r2=1826336&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java Fri Mar 9 12:13:44 2018
@@ -182,7 +182,7 @@ public class ContextConfig implements Li
/**
* The Context we are associated with.
*/
- protected Context context = null;
+ protected volatile Context context = null;
/**
@@ -713,7 +713,7 @@ public class ContextConfig implements Li
/**
* Process a "init" event for this Context.
*/
- protected void init() {
+ protected synchronized void init() {
// Called from StandardContext.init()
Digester contextDigester = createContextDigester();
Modified: tomcat/trunk/res/findbugs/filter-false-positives.xml
URL: http://svn.apache.org/viewvc/tomcat/trunk/res/findbugs/filter-false-positives.xml?rev=1826336&r1=1826335&r2=1826336&view=diff
==============================================================================
--- tomcat/trunk/res/findbugs/filter-false-positives.xml (original)
+++ tomcat/trunk/res/findbugs/filter-false-positives.xml Fri Mar 9 12:13:44 2018
@@ -462,6 +462,12 @@
<Bug code="Dm" />
</Match>
<Match>
+ <!-- Dead store is deliberate to test URL validity -->
+ <Class name="org.apache.catalina.startup.Bootstrap" />
+ <Method name="createClassLoader" />
+ <Bug pattern="DLS_DEAD_LOCAL_STORE" />
+ </Match>
+ <Match>
<!-- Failure at this point is fatal -->
<Class name="org.apache.catalina.startup.Bootstrap" />
<Method name="initClassLoaders" />
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org