diff --git a/core-feature-pack/common/src/main/resources/modules/system/layers/base/org/jboss/as/server/main/module.xml b/core-feature-pack/common/src/main/resources/modules/system/layers/base/org/jboss/as/server/main/module.xml
index 21b81a6b927..b1bd5d4de31 100644
--- a/core-feature-pack/common/src/main/resources/modules/system/layers/base/org/jboss/as/server/main/module.xml
+++ b/core-feature-pack/common/src/main/resources/modules/system/layers/base/org/jboss/as/server/main/module.xml
@@ -83,6 +83,7 @@
+
diff --git a/server/src/main/java/org/jboss/as/server/controller/git/GitRepository.java b/server/src/main/java/org/jboss/as/server/controller/git/GitRepository.java
index 1473c36744f..64032b0e65c 100644
--- a/server/src/main/java/org/jboss/as/server/controller/git/GitRepository.java
+++ b/server/src/main/java/org/jboss/as/server/controller/git/GitRepository.java
@@ -68,11 +68,11 @@
public class GitRepository implements Closeable {
private final Set ignored;
- private final Repository repository;
+ private Repository repository;
private final Path basePath;
private final String defaultRemoteRepository;
private final String branch;
- private final SshdSessionFactory sshdSessionFactory;
+ private SshdSessionFactory sshdSessionFactory;
public GitRepository(GitRepositoryConfiguration gitConfig)
throws IllegalArgumentException, IOException, ConfigXMLParseException, GeneralSecurityException {
@@ -266,10 +266,33 @@ public boolean isBare() {
@Override
public void close() {
- if (sshdSessionFactory != null) {
- this.sshdSessionFactory.close();
+ SshdSessionFactory toCloseSshdSessionFactory = sshdSessionFactory;
+ sshdSessionFactory = null;
+ RuntimeException rex = null;
+ if (toCloseSshdSessionFactory != null) {
+ try {
+ toCloseSshdSessionFactory.close();
+ } catch (RuntimeException e) {
+ rex = e;
+ }
+ }
+
+ Repository toCloseRepository = repository;
+ repository = null;
+ if (toCloseRepository != null) {
+ try {
+ toCloseRepository.close();
+ } catch (RuntimeException e) {
+ if (rex == null) {
+ rex = e;
+ } else {
+ rex.addSuppressed(e);
+ }
+ }
+ }
+ if (rex != null) {
+ throw rex;
}
- this.repository.close();
}
public String getPattern(File file) {
diff --git a/server/src/main/java/org/jboss/as/server/deployment/AbstractDeploymentUploadHandler.java b/server/src/main/java/org/jboss/as/server/deployment/AbstractDeploymentUploadHandler.java
index 35a5445ff84..07537a49230 100644
--- a/server/src/main/java/org/jboss/as/server/deployment/AbstractDeploymentUploadHandler.java
+++ b/server/src/main/java/org/jboss/as/server/deployment/AbstractDeploymentUploadHandler.java
@@ -18,6 +18,8 @@
*/
package org.jboss.as.server.deployment;
+import static org.xnio.IoUtils.safeClose;
+
import java.io.IOException;
import java.io.InputStream;
import java.util.EnumSet;
@@ -79,14 +81,4 @@ public void execute(OperationContext context, ModelNode operation) throws Operat
protected abstract InputStream getContentInputStream(OperationContext context, ModelNode operation) throws IOException, OperationFailedException;
- private static void safeClose(InputStream is) {
- if (is != null) {
- try {
- is.close();
- }
- catch (Exception e) {
- ServerLogger.ROOT_LOGGER.caughtExceptionClosingContentInputStream(e);
- }
- }
- }
}
diff --git a/server/src/main/java/org/jboss/as/server/deployment/DeploymentAddHandler.java b/server/src/main/java/org/jboss/as/server/deployment/DeploymentAddHandler.java
index 1ec9447624f..ca43966d0bb 100644
--- a/server/src/main/java/org/jboss/as/server/deployment/DeploymentAddHandler.java
+++ b/server/src/main/java/org/jboss/as/server/deployment/DeploymentAddHandler.java
@@ -36,6 +36,7 @@
import static org.jboss.as.server.deployment.DeploymentHandlerUtils.asString;
import static org.jboss.as.server.deployment.DeploymentHandlerUtils.getInputStream;
import static org.jboss.as.server.deployment.DeploymentHandlerUtils.hasValidContentAdditionParameterDefined;
+import static org.xnio.IoUtils.safeClose;
import java.io.IOException;
import java.io.InputStream;
@@ -49,7 +50,6 @@
import org.jboss.as.controller.ProcessType;
import org.jboss.as.controller.descriptions.ModelDescriptionConstants;
import org.jboss.as.controller.registry.Resource;
-import org.jboss.as.protocol.StreamUtils;
import org.jboss.as.repository.ContentRepository;
import org.jboss.as.server.logging.ServerLogger;
import org.jboss.dmr.ModelNode;
@@ -205,16 +205,13 @@ DeploymentHandlerUtil.ContentItem addFromContentAdditionParameter(OperationConte
InputStream in = getInputStream(context, contentItemNode);
InputStream transformed = null;
try {
- try {
- transformed = deploymentTransformation.doTransformation(context, contentItemNode, name, in);
- hash = contentRepository.addContent(transformed);
- } catch (IOException e) {
- throw createFailureException(e.toString());
- }
-
+ transformed = deploymentTransformation.doTransformation(context, contentItemNode, name, in);
+ hash = contentRepository.addContent(transformed);
+ } catch (IOException e) {
+ throw createFailureException(e.toString());
} finally {
- StreamUtils.safeClose(in);
- StreamUtils.safeClose(transformed);
+ safeClose(in);
+ safeClose(transformed);
}
return new DeploymentHandlerUtil.ContentItem(hash);
}
diff --git a/server/src/main/java/org/jboss/as/server/deployment/DeploymentFullReplaceHandler.java b/server/src/main/java/org/jboss/as/server/deployment/DeploymentFullReplaceHandler.java
index 220efec7e7d..fcdb71042be 100644
--- a/server/src/main/java/org/jboss/as/server/deployment/DeploymentFullReplaceHandler.java
+++ b/server/src/main/java/org/jboss/as/server/deployment/DeploymentFullReplaceHandler.java
@@ -34,6 +34,7 @@
import static org.jboss.as.server.deployment.DeploymentHandlerUtils.createFailureException;
import static org.jboss.as.server.deployment.DeploymentHandlerUtils.getInputStream;
import static org.jboss.as.server.deployment.DeploymentHandlerUtils.hasValidContentAdditionParameterDefined;
+import static org.xnio.IoUtils.safeClose;
import java.io.IOException;
import java.io.InputStream;
@@ -47,7 +48,6 @@
import org.jboss.as.controller.PathAddress;
import org.jboss.as.controller.PathElement;
import org.jboss.as.controller.registry.Resource;
-import org.jboss.as.protocol.StreamUtils;
import org.jboss.as.repository.ContentReference;
import org.jboss.as.repository.ContentRepository;
import org.jboss.as.server.controller.resources.DeploymentAttributes;
@@ -204,16 +204,13 @@ DeploymentHandlerUtil.ContentItem addFromContentAdditionParameter(OperationConte
InputStream in = getInputStream(context, contentItemNode);
InputStream transformed = null;
try {
- try {
- transformed = deploymentTransformation.doTransformation(context, contentItemNode, name, in);
- hash = contentRepository.addContent(transformed);
- } catch (IOException e) {
- throw createFailureException(e.toString());
- }
-
+ transformed = deploymentTransformation.doTransformation(context, contentItemNode, name, in);
+ hash = contentRepository.addContent(transformed);
+ } catch (IOException e) {
+ throw createFailureException(e.toString());
} finally {
- StreamUtils.safeClose(in);
- StreamUtils.safeClose(transformed);
+ safeClose(in);
+ safeClose(transformed);
}
contentItemNode.clear(); // AS7-1029
contentItemNode.get(CONTENT_HASH.getName()).set(hash);
diff --git a/server/src/main/java/org/jboss/as/server/deployment/DeploymentMountProvider.java b/server/src/main/java/org/jboss/as/server/deployment/DeploymentMountProvider.java
index 29fd6700146..f79b6744684 100644
--- a/server/src/main/java/org/jboss/as/server/deployment/DeploymentMountProvider.java
+++ b/server/src/main/java/org/jboss/as/server/deployment/DeploymentMountProvider.java
@@ -23,6 +23,7 @@
package org.jboss.as.server.deployment;
import static java.security.AccessController.doPrivileged;
+import static org.xnio.IoUtils.safeClose;
import java.io.Closeable;
import java.io.IOException;
@@ -45,7 +46,6 @@
import org.jboss.threads.JBossThreadFactory;
import org.jboss.vfs.TempFileProvider;
import org.jboss.vfs.VFS;
-import org.jboss.vfs.VFSUtils;
import org.jboss.vfs.VirtualFile;
/**
@@ -139,7 +139,8 @@ public void stop(final StopContext context) {
public void run() {
try {
deploymentMountProviderConsumer.accept(null);
- VFSUtils.safeClose(tempFileProvider);
+ safeClose(tempFileProvider);
+ tempFileProvider = null; //not needed anymore
} finally {
try {
ScheduledExecutorService ses = scheduledExecutorService;
diff --git a/server/src/main/java/org/jboss/as/server/deployment/DeploymentOverlayDeploymentUnitProcessor.java b/server/src/main/java/org/jboss/as/server/deployment/DeploymentOverlayDeploymentUnitProcessor.java
index 0d057ca120c..a92087f641b 100644
--- a/server/src/main/java/org/jboss/as/server/deployment/DeploymentOverlayDeploymentUnitProcessor.java
+++ b/server/src/main/java/org/jboss/as/server/deployment/DeploymentOverlayDeploymentUnitProcessor.java
@@ -233,11 +233,7 @@ protected static void copyFile(final InputStream in, final File dest) throws IOE
}
}
-
protected static void close(Closeable closeable) {
- try {
- closeable.close();
- } catch (IOException ignore) {
- }
+ org.xnio.IoUtils.safeClose(closeable);
}
}
diff --git a/server/src/main/java/org/jboss/as/server/deployment/MountedDeploymentOverlay.java b/server/src/main/java/org/jboss/as/server/deployment/MountedDeploymentOverlay.java
index 973e062f084..27b8ddafbc0 100644
--- a/server/src/main/java/org/jboss/as/server/deployment/MountedDeploymentOverlay.java
+++ b/server/src/main/java/org/jboss/as/server/deployment/MountedDeploymentOverlay.java
@@ -1,9 +1,10 @@
package org.jboss.as.server.deployment;
+import static org.xnio.IoUtils.safeClose;
+
import org.jboss.vfs.TempFileProvider;
import org.jboss.vfs.VFS;
import org.jboss.vfs.VirtualFile;
-import org.xnio.IoUtils;
import java.io.Closeable;
import java.io.File;
@@ -27,7 +28,8 @@ public MountedDeploymentOverlay(Closeable closeable, File realFile, VirtualFile
}
public void remountAsZip(boolean expanded) throws IOException {
- IoUtils.safeClose(closeable);
+ safeClose(closeable);
+ closeable = null; // following assignments may fail
if(expanded) {
closeable = VFS.mountZipExpanded(realFile, mountPoint, tempFileProvider);
} else {
@@ -37,6 +39,8 @@ public void remountAsZip(boolean expanded) throws IOException {
@Override
public void close() throws IOException {
- closeable.close();
+ Closeable toClose = closeable;
+ closeable = null;
+ toClose.close();
}
}
diff --git a/server/src/main/java/org/jboss/as/server/deployment/ServiceLoaderProcessor.java b/server/src/main/java/org/jboss/as/server/deployment/ServiceLoaderProcessor.java
index c7cf3061e6c..5e5c942e18c 100644
--- a/server/src/main/java/org/jboss/as/server/deployment/ServiceLoaderProcessor.java
+++ b/server/src/main/java/org/jboss/as/server/deployment/ServiceLoaderProcessor.java
@@ -22,6 +22,8 @@
package org.jboss.as.server.deployment;
+import static org.xnio.IoUtils.safeClose;
+
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
@@ -35,7 +37,6 @@
import org.jboss.as.server.logging.ServerLogger;
import org.jboss.as.server.deployment.module.ModuleRootMarker;
import org.jboss.as.server.deployment.module.ResourceRoot;
-import org.jboss.vfs.VFSUtils;
import org.jboss.vfs.VirtualFile;
/**
@@ -91,7 +92,7 @@ private void processRoot(final ResourceRoot resourceRoot, final Map {
public static final Parser INSTANCE = new Parser();
diff --git a/server/src/main/java/org/jboss/as/server/deployment/module/DeploymentRootMountProcessor.java b/server/src/main/java/org/jboss/as/server/deployment/module/DeploymentRootMountProcessor.java
index 773134be32a..35c88156e5d 100644
--- a/server/src/main/java/org/jboss/as/server/deployment/module/DeploymentRootMountProcessor.java
+++ b/server/src/main/java/org/jboss/as/server/deployment/module/DeploymentRootMountProcessor.java
@@ -22,6 +22,8 @@
package org.jboss.as.server.deployment.module;
+import static org.xnio.IoUtils.safeClose;
+
import java.io.Closeable;
import java.io.IOException;
@@ -36,7 +38,6 @@
import org.jboss.as.server.deployment.MountExplodedMarker;
import org.jboss.as.server.deployment.MountType;
import org.jboss.vfs.VFS;
-import org.jboss.vfs.VFSUtils;
import org.jboss.vfs.VirtualFile;
/**
@@ -94,8 +95,8 @@ public void deploy(DeploymentPhaseContext phaseContext) throws DeploymentUnitPro
failed = true;
throw ServerLogger.ROOT_LOGGER.deploymentMountFailed(e);
} finally {
- if(failed) {
- VFSUtils.safeClose(handle);
+ if (failed) {
+ safeClose(handle);
}
}
}
@@ -109,7 +110,7 @@ public void undeploy(DeploymentUnit context) {
final ResourceRoot resourceRoot = context.removeAttachment(Attachments.DEPLOYMENT_ROOT);
if (resourceRoot != null) {
final Closeable mountHandle = resourceRoot.getMountHandle();
- VFSUtils.safeClose(mountHandle);
+ safeClose(mountHandle);
}
}
}
diff --git a/server/src/main/java/org/jboss/as/server/deployment/module/MountHandle.java b/server/src/main/java/org/jboss/as/server/deployment/module/MountHandle.java
index 1b78c80410b..baca47c90a8 100644
--- a/server/src/main/java/org/jboss/as/server/deployment/module/MountHandle.java
+++ b/server/src/main/java/org/jboss/as/server/deployment/module/MountHandle.java
@@ -22,9 +22,10 @@
package org.jboss.as.server.deployment.module;
+import static org.xnio.IoUtils.safeClose;
+
import java.io.Closeable;
-import org.jboss.vfs.VFSUtils;
import org.wildfly.common.ref.CleanerReference;
import org.wildfly.common.ref.Reaper;
import org.wildfly.common.ref.Reference;
@@ -43,7 +44,7 @@ public class MountHandle implements Closeable {
private static final Reaper REAPER = new Reaper() {
@Override
public void reap(Reference reference) {
- VFSUtils.safeClose(reference.getAttachment());
+ safeClose(reference.getAttachment());
}
};
@@ -58,7 +59,7 @@ public static MountHandle create(final Closeable handle) {
return mountHandle;
}
- private final Closeable handle;
+ private Closeable handle;
/**
* Construct new instance with the mount handle to close.
@@ -76,8 +77,7 @@ public MountHandle(final Closeable handle) {
* Forcefully close this handle. Use with caution.
*/
public void close() {
- if (handle != null) {
- VFSUtils.safeClose(handle);
- }
+ safeClose(handle);
+ handle = null;
}
}
diff --git a/server/src/main/java/org/jboss/as/server/deployment/module/TempFileProviderService.java b/server/src/main/java/org/jboss/as/server/deployment/module/TempFileProviderService.java
index 9a90b503b03..bf938c519dc 100644
--- a/server/src/main/java/org/jboss/as/server/deployment/module/TempFileProviderService.java
+++ b/server/src/main/java/org/jboss/as/server/deployment/module/TempFileProviderService.java
@@ -22,6 +22,9 @@
package org.jboss.as.server.deployment.module;
+import static java.security.AccessController.doPrivileged;
+import static org.xnio.IoUtils.safeClose;
+
import java.io.IOException;
import java.security.PrivilegedAction;
import java.util.concurrent.ScheduledThreadPoolExecutor;
@@ -35,9 +38,7 @@
import org.jboss.msc.service.StopContext;
import org.jboss.threads.JBossThreadFactory;
import org.jboss.vfs.TempFileProvider;
-import org.jboss.vfs.VFSUtils;
-import static java.security.AccessController.doPrivileged;
/**
* Service responsible for managing the life-cycle of a TempFileProvider.
@@ -74,7 +75,7 @@ public void start(StartContext context) throws StartException {
* {@inheritDoc}
*/
public void stop(StopContext context) {
- VFSUtils.safeClose(PROVIDER);
+ safeClose(PROVIDER);
}
/**
diff --git a/server/src/main/java/org/jboss/as/server/deployment/module/VFSResourceLoader.java b/server/src/main/java/org/jboss/as/server/deployment/module/VFSResourceLoader.java
index 620f6ec50fc..3db82b0903a 100644
--- a/server/src/main/java/org/jboss/as/server/deployment/module/VFSResourceLoader.java
+++ b/server/src/main/java/org/jboss/as/server/deployment/module/VFSResourceLoader.java
@@ -23,6 +23,7 @@
package org.jboss.as.server.deployment.module;
import static java.security.AccessController.doPrivileged;
+import static org.xnio.IoUtils.safeClose;
import java.io.BufferedReader;
import java.io.IOException;
@@ -180,7 +181,7 @@ public ClassSpec run() throws Exception {
final long size = file.getSize();
final ClassSpec spec = new ClassSpec();
synchronized (VFSResourceLoader.this) {
- final InputStream is = file.openStream();
+ InputStream is = file.openStream();
try {
if (size <= Integer.MAX_VALUE) {
final int castSize = (int) size;
@@ -193,6 +194,7 @@ public ClassSpec run() throws Exception {
while (is.read() != -1) {}
// done
is.close();
+ is = null; // avoid double close
spec.setBytes(bytes);
final CodeSigner[] entryCodeSigners = file.getCodeSigners();
final CodeSigners codeSigners = entryCodeSigners == null || entryCodeSigners.length == 0 ? EMPTY_CODE_SIGNERS : new CodeSigners(entryCodeSigners);
@@ -206,7 +208,7 @@ public ClassSpec run() throws Exception {
throw ServerLogger.ROOT_LOGGER.resourceTooLarge();
}
} finally {
- VFSUtils.safeClose(is);
+ safeClose(is);
}
}
}
diff --git a/server/src/main/java/org/jboss/as/server/deployment/module/descriptor/DeploymentStructureDescriptorParser.java b/server/src/main/java/org/jboss/as/server/deployment/module/descriptor/DeploymentStructureDescriptorParser.java
index bbf99c4d6bc..96ef03e4f63 100644
--- a/server/src/main/java/org/jboss/as/server/deployment/module/descriptor/DeploymentStructureDescriptorParser.java
+++ b/server/src/main/java/org/jboss/as/server/deployment/module/descriptor/DeploymentStructureDescriptorParser.java
@@ -21,7 +21,8 @@
*/
package org.jboss.as.server.deployment.module.descriptor;
-import java.io.Closeable;
+import static org.xnio.IoUtils.safeClose;
+
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
@@ -379,30 +380,13 @@ private ParseResult parse(final InputStream source, final File file, final Deplo
mapper.parseDocument(result, streamReader);
return result;
} finally {
- safeClose(streamReader);
+ if (streamReader != null) {
+ safeClose((AutoCloseable) streamReader::close);
+ }
}
} catch (XMLStreamException e) {
throw ServerLogger.ROOT_LOGGER.errorLoadingDeploymentStructureFile(file.getPath(), e);
}
}
- private static void safeClose(final Closeable closeable) {
- if (closeable != null)
- try {
- closeable.close();
- } catch (IOException e) {
- // ignore
- }
- }
-
- private static void safeClose(final XMLStreamReader streamReader) {
- if (streamReader != null)
- try {
- streamReader.close();
- } catch (XMLStreamException e) {
- // ignore
- }
- }
-
-
}
diff --git a/server/src/main/java/org/jboss/as/server/deploymentoverlay/DeploymentOverlayContentAdd.java b/server/src/main/java/org/jboss/as/server/deploymentoverlay/DeploymentOverlayContentAdd.java
index 996f2d36c03..72583dcb31b 100644
--- a/server/src/main/java/org/jboss/as/server/deploymentoverlay/DeploymentOverlayContentAdd.java
+++ b/server/src/main/java/org/jboss/as/server/deploymentoverlay/DeploymentOverlayContentAdd.java
@@ -28,6 +28,7 @@
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.INPUT_STREAM_INDEX;
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.OP_ADDR;
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.URL;
+import static org.xnio.IoUtils.safeClose;
import java.io.ByteArrayInputStream;
import java.io.IOException;
@@ -47,7 +48,6 @@
import org.jboss.as.controller.operations.CompositeOperationAwareTransmuter;
import org.jboss.as.controller.operations.OperationAttachments;
import org.jboss.as.controller.registry.Resource;
-import org.jboss.as.protocol.StreamUtils;
import org.jboss.as.repository.ContentReference;
import org.jboss.as.repository.ContentRepository;
import org.jboss.as.repository.DeploymentFileRepository;
@@ -143,14 +143,11 @@ byte[] addFromContentAdditionParameter(OperationContext context, ModelNode conte
byte[] hash;
InputStream in = getInputStream(context, contentItemNode);
try {
- try {
- hash = contentRepository.addContent(in);
- } catch (IOException e) {
- throw createFailureException(e.toString());
- }
-
+ hash = contentRepository.addContent(in);
+ } catch (IOException e) {
+ throw createFailureException(e.toString());
} finally {
- StreamUtils.safeClose(in);
+ safeClose(in);
}
return hash;
}
diff --git a/server/src/main/java/org/jboss/as/server/deploymentoverlay/ReadContentHandler.java b/server/src/main/java/org/jboss/as/server/deploymentoverlay/ReadContentHandler.java
index 56261517760..1adf9228344 100644
--- a/server/src/main/java/org/jboss/as/server/deploymentoverlay/ReadContentHandler.java
+++ b/server/src/main/java/org/jboss/as/server/deploymentoverlay/ReadContentHandler.java
@@ -24,6 +24,7 @@
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.CONTENT;
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.OP_ADDR;
+import static org.xnio.IoUtils.safeClose;
import java.io.BufferedInputStream;
import java.io.IOException;
@@ -81,13 +82,7 @@ public static String readFile(VirtualFile file) throws IOException {
}
return builder.toString();
} finally {
- if (stream != null) {
- try {
- stream.close();
- } catch (IOException e) {
- //ignore
- }
- }
+ safeClose(stream);
}
}
diff --git a/server/src/main/java/org/jboss/as/server/mgmt/domain/HostControllerClient.java b/server/src/main/java/org/jboss/as/server/mgmt/domain/HostControllerClient.java
index bdc8ea80747..386ceaa38af 100644
--- a/server/src/main/java/org/jboss/as/server/mgmt/domain/HostControllerClient.java
+++ b/server/src/main/java/org/jboss/as/server/mgmt/domain/HostControllerClient.java
@@ -61,7 +61,7 @@
public class HostControllerClient implements AbstractControllerService.ControllerInstabilityListener, Closeable {
private final String serverName;
- private final HostControllerConnection connection;
+ private HostControllerConnection connection;
private final ManagementChannelHandler channelHandler;
private final RemoteFileRepositoryExecutorImpl repositoryExecutor;
private volatile ModelController controller;
@@ -154,8 +154,10 @@ RemoteFileRepositoryExecutor getRemoteFileRepository() {
@Override
public void close() throws IOException {
- if(connection != null) {
- connection.close();
+ HostControllerConnection toClose = connection;
+ connection = null;
+ if(toClose != null) {
+ toClose.close();
}
}
diff --git a/server/src/main/java/org/jboss/as/server/mgmt/domain/HostControllerConnection.java b/server/src/main/java/org/jboss/as/server/mgmt/domain/HostControllerConnection.java
index 7437620b818..aa252fea18a 100644
--- a/server/src/main/java/org/jboss/as/server/mgmt/domain/HostControllerConnection.java
+++ b/server/src/main/java/org/jboss/as/server/mgmt/domain/HostControllerConnection.java
@@ -22,6 +22,8 @@
package org.jboss.as.server.mgmt.domain;
+import static org.xnio.IoUtils.safeClose;
+
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.callback.NameCallback;
@@ -45,7 +47,6 @@
import org.jboss.as.protocol.ProtocolConnectionConfiguration;
import org.jboss.as.protocol.ProtocolConnectionManager;
import org.jboss.as.protocol.ProtocolConnectionUtils;
-import org.jboss.as.protocol.StreamUtils;
import org.jboss.as.protocol.mgmt.AbstractManagementRequest;
import org.jboss.as.protocol.mgmt.ActiveOperation;
import org.jboss.as.protocol.mgmt.FlushableDataOutput;
@@ -188,7 +189,7 @@ synchronized boolean doReConnect() throws IOException {
}
// Disconnect - the HC might have closed the connection without us noticing and is asking for a reconnect
final Connection connection = connectionManager.getConnection();
- StreamUtils.safeClose(connection);
+ safeClose(connection);
if(connection != null) {
try {
// Wait for the connection to be closed
@@ -216,7 +217,7 @@ synchronized boolean doReConnect() throws IOException {
}
} finally {
if(!ok) {
- StreamUtils.safeClose(connection);
+ safeClose(connection);
}
}
}
diff --git a/server/src/main/java/org/jboss/as/server/mgmt/domain/HostControllerConnectionService.java b/server/src/main/java/org/jboss/as/server/mgmt/domain/HostControllerConnectionService.java
index b293dfef8e1..6a487eb9e46 100644
--- a/server/src/main/java/org/jboss/as/server/mgmt/domain/HostControllerConnectionService.java
+++ b/server/src/main/java/org/jboss/as/server/mgmt/domain/HostControllerConnectionService.java
@@ -22,6 +22,8 @@
package org.jboss.as.server.mgmt.domain;
+import static org.xnio.IoUtils.safeClose;
+
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.FileInputStream;
@@ -49,7 +51,6 @@
import org.jboss.as.controller.ProcessStateNotifier;
import org.jboss.as.controller.remote.ResponseAttachmentInputStreamSupport;
import org.jboss.as.protocol.ProtocolConnectionConfiguration;
-import org.jboss.as.protocol.StreamUtils;
import org.jboss.as.server.logging.ServerLogger;
import org.jboss.msc.service.Service;
import org.jboss.msc.service.ServiceName;
@@ -57,7 +58,6 @@
import org.jboss.msc.service.StartException;
import org.jboss.msc.service.StopContext;
import org.jboss.remoting3.Endpoint;
-import org.xnio.IoUtils;
import org.xnio.OptionMap;
/**
@@ -144,7 +144,7 @@ public void propertyChange(final PropertyChangeEvent evt) {
|| current == ControlledProcessState.State.RESTART_REQUIRED) {
connection.started();
} else {
- IoUtils.safeClose(connection);
+ safeClose(connection);
}
}
}
@@ -165,7 +165,7 @@ public void run() {
try {
responseAttachmentSupport.shutdown();
} finally {
- StreamUtils.safeClose(client);
+ safeClose(client);
client = null;
stopContext.complete();
}
diff --git a/server/src/main/java/org/jboss/as/server/moduleservice/ExtensionIndexService.java b/server/src/main/java/org/jboss/as/server/moduleservice/ExtensionIndexService.java
index 6c4415585b6..61f7168c40d 100644
--- a/server/src/main/java/org/jboss/as/server/moduleservice/ExtensionIndexService.java
+++ b/server/src/main/java/org/jboss/as/server/moduleservice/ExtensionIndexService.java
@@ -22,6 +22,8 @@
package org.jboss.as.server.moduleservice;
+import static org.xnio.IoUtils.safeClose;
+
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
@@ -46,7 +48,6 @@
import org.jboss.msc.service.StartContext;
import org.jboss.msc.service.StartException;
import org.jboss.msc.service.StopContext;
-import org.jboss.vfs.VFSUtils;
/**
* @author David M. Lloyd
@@ -80,7 +81,7 @@ public boolean accept(final File file) {
if (jars != null)
for (File jar : jars)
try {
- final JarFile jarFile = new JarFile(jar);
+ JarFile jarFile = new JarFile(jar);
try {
final Manifest manifest = jarFile.getManifest();
if (manifest == null) {
@@ -97,6 +98,7 @@ public boolean accept(final File file) {
final String specVersion = mainAttributes.getValue(Attributes.Name.SPECIFICATION_VERSION);
final String implVendorId = mainAttributes.getValue(Attributes.Name.IMPLEMENTATION_VENDOR_ID);
jarFile.close();
+ jarFile = null; // avoid double close
Set extensionJarSet = extensions.get(extensionName);
if (extensionJarSet == null)
extensions.put(extensionName, extensionJarSet = new LinkedHashSet());
@@ -123,7 +125,7 @@ public boolean accept(final File file) {
extensionJarSet.add(extensionJar);
} finally {
- VFSUtils.safeClose(jarFile);
+ safeClose(jarFile);
}
} catch (IOException e) {
log.debugf("Failed to process JAR manifest for %s: %s", jar, e);
diff --git a/server/src/main/java/org/jboss/as/server/moduleservice/ExternalModuleSpecService.java b/server/src/main/java/org/jboss/as/server/moduleservice/ExternalModuleSpecService.java
index 7bab68ba49d..fc0b0c2b673 100644
--- a/server/src/main/java/org/jboss/as/server/moduleservice/ExternalModuleSpecService.java
+++ b/server/src/main/java/org/jboss/as/server/moduleservice/ExternalModuleSpecService.java
@@ -21,6 +21,8 @@
*/
package org.jboss.as.server.moduleservice;
+import static org.xnio.IoUtils.safeClose;
+
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
@@ -47,7 +49,6 @@
import org.jboss.msc.service.StartContext;
import org.jboss.msc.service.StartException;
import org.jboss.msc.service.StopContext;
-import org.jboss.vfs.VFSUtils;
import org.wildfly.security.manager.WildFlySecurityManager;
/**
@@ -136,7 +137,7 @@ public synchronized void start(StartContext context) throws StartException {
public synchronized void stop(StopContext context) {
for (JarFile jarFile : jarFiles) {
log.debugf("Closing %s jar file which was added as resource root for %s module identifier", jarFile.getName(), moduleIdentifier.getName());
- VFSUtils.safeClose(jarFile);
+ safeClose(jarFile);
}
jarFiles.clear();
jarFiles = null;
diff --git a/server/src/main/java/org/jboss/as/server/moduleservice/ModuleIndexBuilder.java b/server/src/main/java/org/jboss/as/server/moduleservice/ModuleIndexBuilder.java
index 9c2c2155e8f..2055b3b82a7 100644
--- a/server/src/main/java/org/jboss/as/server/moduleservice/ModuleIndexBuilder.java
+++ b/server/src/main/java/org/jboss/as/server/moduleservice/ModuleIndexBuilder.java
@@ -23,6 +23,7 @@
import java.io.IOException;
import java.io.InputStream;
+import java.io.UncheckedIOException;
import java.net.URL;
import java.util.Enumeration;
import java.util.HashSet;
@@ -51,17 +52,14 @@ public static CompositeIndex buildCompositeIndex(Module module) {
final Set indexes = new HashSet();
while (resources.hasMoreElements()) {
final URL url = resources.nextElement();
- InputStream stream = url.openStream();
- try {
+ try (InputStream stream = url.openStream()) {
IndexReader reader = new IndexReader(stream);
indexes.add(reader.read());
- } finally {
- stream.close();
}
}
return new CompositeIndex(indexes);
} catch (IOException e) {
- throw new RuntimeException(e);
+ throw new UncheckedIOException(e);
}
}