Repository: incubator-geode
Updated Branches:
  refs/heads/develop 0a6e1a533 -> db4ad02f0


GEODE-1548: Specifying --J=-Dgemfire.jmx-manager-hostname-for-clients now 
automatically sets -Djava.rmi.server.hostname

 * This closes #248


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/db4ad02f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/db4ad02f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/db4ad02f

Branch: refs/heads/develop
Commit: db4ad02f078bde786e8a83d8e281419fd5141916
Parents: 0a6e1a5
Author: Jared Stewart <jstew...@pivotal.io>
Authored: Thu Sep 29 10:43:30 2016 -0700
Committer: Jinmei Liao <jil...@pivotal.io>
Committed: Fri Sep 30 13:16:09 2016 -0700

----------------------------------------------------------------------
 .../management/internal/ManagementAgent.java    |  7 ++-
 .../security/JavaRmiServerNameTest.java         | 55 ++++++++++++++++++++
 2 files changed, 61 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/db4ad02f/geode-core/src/main/java/org/apache/geode/management/internal/ManagementAgent.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/ManagementAgent.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/ManagementAgent.java
index f1daa78..3af508e 100755
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/ManagementAgent.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/ManagementAgent.java
@@ -348,7 +348,7 @@ public class ManagementAgent {
     final int port = this.config.getJmxManagerPort();
     final String hostname;
     final InetAddress bindAddr;
-    if (this.config.getJmxManagerBindAddress().equals("")) {
+    if (StringUtils.isBlank(this.config.getJmxManagerBindAddress())) {
       hostname = SocketCreator.getLocalHost().getHostName();
       bindAddr = null;
     } else {
@@ -356,6 +356,11 @@ public class ManagementAgent {
       bindAddr = InetAddress.getByName(hostname);
     }
 
+    String jmxManagerHostnameForClients = 
this.config.getJmxManagerHostnameForClients();
+    if (!StringUtils.isBlank(jmxManagerHostnameForClients)) {
+      System.setProperty("java.rmi.server.hostname", 
jmxManagerHostnameForClients);
+    }
+
     final SocketCreator socketCreator = 
SocketCreatorFactory.getSocketCreatorForComponent(SecurableCommunicationChannel.JMX);
 
     final boolean ssl = socketCreator.useSSL();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/db4ad02f/geode-core/src/test/java/org/apache/geode/management/internal/security/JavaRmiServerNameTest.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/java/org/apache/geode/management/internal/security/JavaRmiServerNameTest.java
 
b/geode-core/src/test/java/org/apache/geode/management/internal/security/JavaRmiServerNameTest.java
new file mode 100644
index 0000000..c544e6f
--- /dev/null
+++ 
b/geode-core/src/test/java/org/apache/geode/management/internal/security/JavaRmiServerNameTest.java
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.geode.management.internal.security;
+
+import static org.apache.geode.distributed.ConfigurationProperties.*;
+import static org.junit.Assert.*;
+
+import java.util.Properties;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.cache.CacheFactory;
+import org.apache.geode.internal.AvailablePort;
+import org.apache.geode.test.junit.categories.IntegrationTest;
+
+@Category(IntegrationTest.class)
+public class JavaRmiServerNameTest {
+
+  private static final String JMX_HOST = "myHostname";
+
+  private static int jmxManagerPort = 
AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
+
+  //https://issues.apache.org/jira/browse/GEODE-1548
+  @Test
+  public void testThatJavaRmiServerNameGetsSet() {
+    Properties properties = new Properties();
+    properties.put(LOCATORS, "");
+    properties.put(MCAST_PORT, "0");
+    properties.put(JMX_MANAGER, "true");
+    properties.put(JMX_MANAGER_START, "true");
+    properties.put(JMX_MANAGER_PORT, String.valueOf(jmxManagerPort));
+    properties.put("jmx-manager-hostname-for-clients", JMX_HOST);
+
+    new CacheFactory(properties).create();
+    assertEquals(JMX_HOST, System.getProperty("java.rmi.server.hostname"));
+  }
+
+}

Reply via email to