Fix Container#reload

Signed-off-by: jansupol <jan.supol@oracle.com>
diff --git a/containers/grizzly2-http/src/main/java/org/glassfish/jersey/grizzly2/httpserver/GrizzlyHttpContainer.java b/containers/grizzly2-http/src/main/java/org/glassfish/jersey/grizzly2/httpserver/GrizzlyHttpContainer.java
index 3519624..5bd8b1f 100644
--- a/containers/grizzly2-http/src/main/java/org/glassfish/jersey/grizzly2/httpserver/GrizzlyHttpContainer.java
+++ b/containers/grizzly2-http/src/main/java/org/glassfish/jersey/grizzly2/httpserver/GrizzlyHttpContainer.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2022 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -370,7 +370,7 @@
 
     @Override
     public void reload() {
-        reload(appHandler.getConfiguration());
+        reload(new ResourceConfig(appHandler.getConfiguration()));
     }
 
     @Override
diff --git a/containers/jdk-http/src/main/java/org/glassfish/jersey/jdkhttp/JdkHttpHandlerContainer.java b/containers/jdk-http/src/main/java/org/glassfish/jersey/jdkhttp/JdkHttpHandlerContainer.java
index 4f6cb30..d1ebf61 100644
--- a/containers/jdk-http/src/main/java/org/glassfish/jersey/jdkhttp/JdkHttpHandlerContainer.java
+++ b/containers/jdk-http/src/main/java/org/glassfish/jersey/jdkhttp/JdkHttpHandlerContainer.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2022 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -201,7 +201,7 @@
 
     @Override
     public void reload() {
-        reload(getConfiguration());
+        reload(new ResourceConfig(getConfiguration()));
     }
 
     @Override
diff --git a/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/ServletContainer.java b/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/ServletContainer.java
index 522ba33..a454d61 100644
--- a/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/ServletContainer.java
+++ b/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/ServletContainer.java
@@ -640,7 +640,7 @@
 
     @Override
     public void reload() {
-        reload(getConfiguration());
+        reload(new ResourceConfig(getConfiguration()));
     }
 
     @Override
diff --git a/containers/jetty-http/src/main/java/org/glassfish/jersey/jetty/JettyHttpContainer.java b/containers/jetty-http/src/main/java/org/glassfish/jersey/jetty/JettyHttpContainer.java
index 06687ec..ccc2fe7 100644
--- a/containers/jetty-http/src/main/java/org/glassfish/jersey/jetty/JettyHttpContainer.java
+++ b/containers/jetty-http/src/main/java/org/glassfish/jersey/jetty/JettyHttpContainer.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2021 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2022 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -417,7 +417,7 @@
 
     @Override
     public void reload() {
-        reload(getConfiguration());
+        reload(new ResourceConfig(getConfiguration()));
     }
 
     @Override
diff --git a/containers/netty-http/src/main/java/org/glassfish/jersey/netty/httpserver/NettyHttpContainer.java b/containers/netty-http/src/main/java/org/glassfish/jersey/netty/httpserver/NettyHttpContainer.java
index ac4bf4e..f21bd7e 100644
--- a/containers/netty-http/src/main/java/org/glassfish/jersey/netty/httpserver/NettyHttpContainer.java
+++ b/containers/netty-http/src/main/java/org/glassfish/jersey/netty/httpserver/NettyHttpContainer.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2022 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -53,7 +53,7 @@
 
     @Override
     public void reload() {
-        reload(appHandler.getConfiguration());
+        reload(new ResourceConfig(appHandler.getConfiguration()));
     }
 
     @Override
diff --git a/containers/simple-http/src/main/java/org/glassfish/jersey/simple/SimpleContainer.java b/containers/simple-http/src/main/java/org/glassfish/jersey/simple/SimpleContainer.java
index 3561eab..04e7f2c 100644
--- a/containers/simple-http/src/main/java/org/glassfish/jersey/simple/SimpleContainer.java
+++ b/containers/simple-http/src/main/java/org/glassfish/jersey/simple/SimpleContainer.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2022 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -407,7 +407,7 @@
 
     @Override
     public void reload() {
-        reload(getConfiguration());
+        reload(new ResourceConfig(getConfiguration()));
     }
 
     @Override
diff --git a/core-common/src/main/java/org/glassfish/jersey/internal/inject/InjectionManager.java b/core-common/src/main/java/org/glassfish/jersey/internal/inject/InjectionManager.java
index 36fc610..4d5fd1c 100644
--- a/core-common/src/main/java/org/glassfish/jersey/internal/inject/InjectionManager.java
+++ b/core-common/src/main/java/org/glassfish/jersey/internal/inject/InjectionManager.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, 2021 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2022 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -51,6 +51,12 @@
     void shutdown();
 
     /**
+     * Returns {@code true} when the {@link InjectionManager} has been shutdown, {@code false} otherwise.
+     * @return Whether the {@code InjectionManager} has been shutdown.
+     */
+    boolean isShutdown();
+
+    /**
      * Registers one bean represented using fields in the provided descriptor. The final bean can be direct bean or
      * factory object which will create the bean at the time of injection. {@code InjectionManager} is able to register a bean
      * represented by a class or direct instance.
diff --git a/core-server/src/main/java/org/glassfish/jersey/server/ServerRuntime.java b/core-server/src/main/java/org/glassfish/jersey/server/ServerRuntime.java
index 981514c..086bcda 100644
--- a/core-server/src/main/java/org/glassfish/jersey/server/ServerRuntime.java
+++ b/core-server/src/main/java/org/glassfish/jersey/server/ServerRuntime.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2022 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -231,43 +231,50 @@
                         requestScopeInstance, externalRequestScope.open(injectionManager));
         context.initAsyncContext(asyncResponderHolder);
 
-        requestScope.runInScope(requestScopeInstance, new Runnable() {
-            @Override
-            public void run() {
-                try {
-                    // set base URI into response builder thread-local variable
-                    // for later resolving of relative location URIs
-                    if (!disableLocationHeaderRelativeUriResolution) {
-                        final URI uriToUse =
-                                rfc7231LocationHeaderRelativeUriResolution ? request.getRequestUri() : request.getBaseUri();
-                        OutboundJaxrsResponse.Builder.setBaseUri(uriToUse);
+        try {
+            requestScope.runInScope(requestScopeInstance, new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        // set base URI into response builder thread-local variable
+                        // for later resolving of relative location URIs
+                        if (!disableLocationHeaderRelativeUriResolution) {
+                            final URI uriToUse =
+                                    rfc7231LocationHeaderRelativeUriResolution ? request.getRequestUri() : request.getBaseUri();
+                            OutboundJaxrsResponse.Builder.setBaseUri(uriToUse);
+                        }
+
+                        final Ref<Endpoint> endpointRef = Refs.emptyRef();
+                        final RequestProcessingContext data = Stages.process(context, requestProcessingRoot, endpointRef);
+
+                        final Endpoint endpoint = endpointRef.get();
+                        if (endpoint == null) {
+                            // not found
+                            throw new NotFoundException();
+                        }
+
+                        final ContainerResponse response = endpoint.apply(data);
+
+                        if (!asyncResponderHolder.isAsync()) {
+                            responder.process(response);
+                        } else {
+                            externalRequestScope.suspend(asyncResponderHolder.externalContext, injectionManager);
+                        }
+                    } catch (final Throwable throwable) {
+                        responder.process(throwable);
+                    } finally {
+                        asyncResponderHolder.release();
+                        // clear base URI from the thread
+                        OutboundJaxrsResponse.Builder.clearBaseUri();
                     }
-
-                    final Ref<Endpoint> endpointRef = Refs.emptyRef();
-                    final RequestProcessingContext data = Stages.process(context, requestProcessingRoot, endpointRef);
-
-                    final Endpoint endpoint = endpointRef.get();
-                    if (endpoint == null) {
-                        // not found
-                        throw new NotFoundException();
-                    }
-
-                    final ContainerResponse response = endpoint.apply(data);
-
-                    if (!asyncResponderHolder.isAsync()) {
-                        responder.process(response);
-                    } else {
-                        externalRequestScope.suspend(asyncResponderHolder.externalContext, injectionManager);
-                    }
-                } catch (final Throwable throwable) {
-                    responder.process(throwable);
-                } finally {
-                    asyncResponderHolder.release();
-                    // clear base URI from the thread
-                    OutboundJaxrsResponse.Builder.clearBaseUri();
                 }
+            });
+        } catch (RuntimeException illegalStateException) {
+            if (!IllegalStateException.class.isInstance(illegalStateException.getCause()) || !injectionManager.isShutdown()) {
+                // consume the IllegalStateException: InjectionManager has been closed.
+                throw illegalStateException;
             }
-        });
+        }
     }
 
     /**
diff --git a/ext/cdi/jersey-cdi1x/src/main/java/org/glassfish/jersey/ext/cdi1x/internal/CdiComponentProvider.java b/ext/cdi/jersey-cdi1x/src/main/java/org/glassfish/jersey/ext/cdi1x/internal/CdiComponentProvider.java
index 6ff37b4..ff63759 100644
--- a/ext/cdi/jersey-cdi1x/src/main/java/org/glassfish/jersey/ext/cdi1x/internal/CdiComponentProvider.java
+++ b/ext/cdi/jersey-cdi1x/src/main/java/org/glassfish/jersey/ext/cdi1x/internal/CdiComponentProvider.java
@@ -671,7 +671,7 @@
         @Override
         public void inject(final Object t, final CreationalContext cc) {
             InjectionManager injectingManager = getEffectiveInjectionManager();
-            if (injectingManager == null) {
+            if (injectingManager == null || /* reload */ injectingManager.isShutdown()) {
                 injectingManager = effectiveInjectionManager;
                 threadInjectionManagers.set(injectingManager);
             }
@@ -737,7 +737,7 @@
         @Override
         public Object create(final CreationalContext creationalContext) {
             InjectionManager injectionManager = getEffectiveInjectionManager();
-            if (injectionManager == null) {
+            if (injectionManager == null || /* reload */ injectionManager.isShutdown()) {
                 injectionManager = threadInjectionManagers.get();
             }
 
diff --git a/ext/microprofile/mp-rest-client/pom.xml b/ext/microprofile/mp-rest-client/pom.xml
index 6265c07..a07cb30 100644
--- a/ext/microprofile/mp-rest-client/pom.xml
+++ b/ext/microprofile/mp-rest-client/pom.xml
@@ -116,6 +116,7 @@
                         <Import-Package>
                             ${cdi.osgi.version},
                             org.eclipse.microprofile.rest.client.*;version="[1,3)",
+                            org.eclipse.microprofile.config;version="!",
                             *
                         </Import-Package>
                     </instructions>
diff --git a/incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/managed/BinderRegisterExtension.java b/incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/managed/BinderRegisterExtension.java
index da291df..9787cfe 100644
--- a/incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/managed/BinderRegisterExtension.java
+++ b/incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/managed/BinderRegisterExtension.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2022 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -598,6 +598,11 @@
         }
 
         @Override
+        public boolean isShutdown() {
+            return false;
+        }
+
+        @Override
         public void register(Binding binding) {
             BinderRegisterExtension.this.register(runtimeType, binding);
         }
diff --git a/incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/managed/CdiInjectionManager.java b/incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/managed/CdiInjectionManager.java
index e3746ab..3c00646 100644
--- a/incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/managed/CdiInjectionManager.java
+++ b/incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/managed/CdiInjectionManager.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2022 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -333,6 +333,11 @@
 
     }
 
+    @Override
+    public boolean isShutdown() {
+        return false;
+    }
+
     protected Binder getBindings() {
         return bindings;
     }
diff --git a/incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/managed/WrappingInjectionManager.java b/incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/managed/WrappingInjectionManager.java
index a3bea1a..5d40bfa 100644
--- a/incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/managed/WrappingInjectionManager.java
+++ b/incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/managed/WrappingInjectionManager.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2022 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -51,6 +51,11 @@
     }
 
     @Override
+    public boolean isShutdown() {
+        return injectionManager.isShutdown();
+    }
+
+    @Override
     public void register(Binding binding) {
         injectionManager.register(binding);
     }
diff --git a/inject/cdi2-se/src/main/java/org/glassfish/jersey/inject/cdi/se/CdiSeInjectionManager.java b/inject/cdi2-se/src/main/java/org/glassfish/jersey/inject/cdi/se/CdiSeInjectionManager.java
index 3a8d44d..6411310 100644
--- a/inject/cdi2-se/src/main/java/org/glassfish/jersey/inject/cdi/se/CdiSeInjectionManager.java
+++ b/inject/cdi2-se/src/main/java/org/glassfish/jersey/inject/cdi/se/CdiSeInjectionManager.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, 2021 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2022 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -290,6 +290,11 @@
     }
 
     @Override
+    public boolean isShutdown() {
+        return !container.isRunning();
+    }
+
+    @Override
     public void inject(Object injectMe, String classAnalyzer) {
         // TODO: Used only in legacy CDI integration.
         throw new UnsupportedOperationException();
diff --git a/inject/hk2/src/main/java/org/glassfish/jersey/inject/hk2/AbstractHk2InjectionManager.java b/inject/hk2/src/main/java/org/glassfish/jersey/inject/hk2/AbstractHk2InjectionManager.java
index 5a71084..3a46d60 100644
--- a/inject/hk2/src/main/java/org/glassfish/jersey/inject/hk2/AbstractHk2InjectionManager.java
+++ b/inject/hk2/src/main/java/org/glassfish/jersey/inject/hk2/AbstractHk2InjectionManager.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, 2021 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2022 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -51,6 +51,7 @@
     private static final ServiceLocatorFactory factory = ServiceLocatorFactory.getInstance();
 
     private ServiceLocator locator;
+    private Boolean isShutdown = Boolean.FALSE; // TODO replace by getServiceLocator().isShutDown() in 3.x
 
     /**
      * Private constructor.
@@ -182,6 +183,12 @@
         } else {
             getServiceLocator().shutdown();
         }
+        isShutdown = Boolean.TRUE;
+    }
+
+    @Override
+    public boolean isShutdown() {
+        return isShutdown;
     }
 
     @Override
diff --git a/pom.xml b/pom.xml
index 0f08664..1fe9764 100644
--- a/pom.xml
+++ b/pom.xml
@@ -448,7 +448,7 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-dependency-plugin</artifactId>
-                    <version>3.1.2</version>
+                    <version>3.3.0</version>
                 </plugin>
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
diff --git a/tests/integration/cdi-integration/gf-cdi-inject/src/main/java/org/glassfish/jersey/tests/cdi/gf/GFTestApp.java b/tests/integration/cdi-integration/gf-cdi-inject/src/main/java/org/glassfish/jersey/tests/cdi/gf/GFTestApp.java
index 0d77c95..dc4aa36 100644
--- a/tests/integration/cdi-integration/gf-cdi-inject/src/main/java/org/glassfish/jersey/tests/cdi/gf/GFTestApp.java
+++ b/tests/integration/cdi-integration/gf-cdi-inject/src/main/java/org/glassfish/jersey/tests/cdi/gf/GFTestApp.java
@@ -16,13 +16,42 @@
 
 package org.glassfish.jersey.tests.cdi.gf;
 
+import org.glassfish.jersey.CommonProperties;
 import org.glassfish.jersey.server.ResourceConfig;
+import org.glassfish.jersey.server.spi.Container;
+import org.glassfish.jersey.server.spi.ContainerLifecycleListener;
 
 import javax.ws.rs.ApplicationPath;
 
 @ApplicationPath("/test")
 public class GFTestApp extends ResourceConfig {
+    public static final String RELOADER = "RELOADER";
+    private Reloader reloader = new Reloader();
+
     public GFTestApp() {
         super(GFTestResource.class);
+        register(reloader);
+
+        property(CommonProperties.PROVIDER_DEFAULT_DISABLE, "ALL");
+        property(RELOADER, reloader);
+    }
+
+    static class Reloader implements ContainerLifecycleListener {
+        Container container;
+
+        @Override
+        public void onStartup(Container container) {
+            this.container = container;
+        }
+
+        @Override
+        public void onReload(Container container) {
+
+        }
+
+        @Override
+        public void onShutdown(Container container) {
+
+        }
     }
 }
diff --git a/tests/integration/cdi-integration/gf-cdi-inject/src/main/java/org/glassfish/jersey/tests/cdi/gf/GFTestResource.java b/tests/integration/cdi-integration/gf-cdi-inject/src/main/java/org/glassfish/jersey/tests/cdi/gf/GFTestResource.java
index 8e39cc8..d7a0c8f 100644
--- a/tests/integration/cdi-integration/gf-cdi-inject/src/main/java/org/glassfish/jersey/tests/cdi/gf/GFTestResource.java
+++ b/tests/integration/cdi-integration/gf-cdi-inject/src/main/java/org/glassfish/jersey/tests/cdi/gf/GFTestResource.java
@@ -20,6 +20,8 @@
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
+import javax.ws.rs.core.Application;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.UriInfo;
 
@@ -34,4 +36,12 @@
     public String info() {
         return uriInfo.getBaseUri().toASCIIString();
     }
+
+    @GET
+    @Path("reload")
+    public String reload(@Context Application application) {
+        GFTestApp.Reloader reloader = (GFTestApp.Reloader) application.getProperties().get(GFTestApp.RELOADER);
+        reloader.container.reload();
+        return GFTestApp.RELOADER;
+    }
 }
diff --git a/tests/integration/cdi-integration/gf-cdi-inject/src/test/java/org/glassfish/jersey/tests/cdi/gf/GFTest.java b/tests/integration/cdi-integration/gf-cdi-inject/src/test/java/org/glassfish/jersey/tests/cdi/gf/GFTest.java
index da49a8b..078cf64 100644
--- a/tests/integration/cdi-integration/gf-cdi-inject/src/test/java/org/glassfish/jersey/tests/cdi/gf/GFTest.java
+++ b/tests/integration/cdi-integration/gf-cdi-inject/src/test/java/org/glassfish/jersey/tests/cdi/gf/GFTest.java
@@ -47,12 +47,27 @@
 
     @Test
     public void testUriInfo() {
-        int port = Integer.parseInt(System.getProperty("webServerPort"));
-        try (Response response = ClientBuilder.newClient().target("http://localhost:" + port).path("gf-test/test/info").request().get()) {
+        try (Response response = ClientBuilder.newClient().target("http://localhost:" + port())
+                .path("gf-test/test/info").request().get()) {
             String entity = response.readEntity(String.class);
             System.out.println(entity);
             Assertions.assertEquals(200, response.getStatus());
             Assertions.assertTrue(entity.contains("gf-test/test"));
         }
     }
+
+    @Test
+    public void testReload() {
+        try (Response response = ClientBuilder.newClient().target("http://localhost:" + port())
+                .path("gf-test/test/reload").request().get()) {
+            Assertions.assertEquals(200, response.getStatus());
+            Assertions.assertEquals(GFTestApp.RELOADER, response.readEntity(String.class));
+        }
+        testUriInfo();
+    }
+
+    private static int port() {
+        int port = Integer.parseInt(System.getProperty("webServerPort"));
+        return port;
+    }
 }