diff --git a/server/src/com/mirth/connect/client/core/Client.java b/server/src/com/mirth/connect/client/core/Client.java index cb4290475..b9862bd2b 100644 --- a/server/src/com/mirth/connect/client/core/Client.java +++ b/server/src/com/mirth/connect/client/core/Client.java @@ -131,15 +131,19 @@ import com.mirth.connect.util.messagewriter.EncryptionType; import com.mirth.connect.util.messagewriter.MessageWriterOptions; -public class Client implements UserServletInterface, ConfigurationServletInterface, ChannelServletInterface, ChannelGroupServletInterface, ChannelStatusServletInterface, ChannelStatisticsServletInterface, EngineServletInterface, MessageServletInterface, EventServletInterface, AlertServletInterface, CodeTemplateServletInterface, DatabaseTaskServletInterface, UsageServletInterface, ExtensionServletInterface { +public class Client implements UserServletInterface, ConfigurationServletInterface, ChannelServletInterface, + ChannelGroupServletInterface, ChannelStatusServletInterface, ChannelStatisticsServletInterface, + EngineServletInterface, MessageServletInterface, EventServletInterface, AlertServletInterface, + CodeTemplateServletInterface, DatabaseTaskServletInterface, UsageServletInterface, ExtensionServletInterface, + AutoCloseable { public static final int MAX_QUERY_PARAM_COLLECTION_SIZE = 100; - private Logger logger = LogManager.getLogger(this.getClass()); - private ServerConnection serverConnection; - private javax.ws.rs.client.Client client; - private URI api; - private AtomicBoolean closed = new AtomicBoolean(false); + private final Logger logger = LogManager.getLogger(this.getClass()); + private final ServerConnection serverConnection; + private final javax.ws.rs.client.Client client; + private final URI api; + private final AtomicBoolean closed = new AtomicBoolean(false); private InvocationHandlerRecorder recorder; /** @@ -312,9 +316,9 @@ public void setRecorder(InvocationHandlerRecorder recorder) { this.recorder = recorder; } + @Override public void close() { - closed.set(true); - if (serverConnection != null) { + if (!closed.getAndSet(true)) { serverConnection.shutdown(); client.close(); } @@ -2675,4 +2679,4 @@ public void setPluginProperties(String extensionName, Properties properties, boo public String getProperty(String group, String name) throws ClientException { return getServlet(ConfigurationServletInterface.class).getProperty(group, name); } -} \ No newline at end of file +}