It is not possible to bind the OpenEdge AdminServer listening port to a specific IP address. However one of the following methods may be used to force the OpenEdge 10.1C or later OpenEdge AdminServer to restrict RMI calls to the AdminServer to a particular IP address, assuming that:
- The IP address is fixed not dynamic
- The IP address does not rely on DHCP where the fixed IP is assigned to the machine directly for the adapter.
- On Windows, the IP address is not an APIPA (Automatic Private IP Addressing) address. When TCP/IP configuration is set to get the IP from DHCP and does not receive an IP, Windows assigns a temporary default IP, eg: 169.254.111.46. An APIPA is basically an auto configured IP when the DHCP server doesn't assign one, or for whatever reason there's no connection to DHCP server or it is not working.
OPTION 1:
Add "-host " to command-line when starting the AdminServer using a batch file or from the command-line.
Example:
$ proadsv -start -host <ip address or hostname>
OPTION 2:
Add "-Djava.rmi.server.hostname" to the "jvmargs" property of the [PluginPolicy.Progress.AdminServer] section in the DLC/properties/AdminServerPlugins.properties file.
Since OpenEdge 11.7 and 12, also add the command-line arguments to the "jvmArgs" property under the [PluginPolicy.Progress.ProAdsv] section.
When the AdminServer is started as a Windows Service, it makes use of the [PluginPolicy.Progress.AdminServer] section, otherwise when started via the 'proadsv' command it uses the [PluginPolicy.Progress.ProAdsv] section.
Example:
[PluginPolicy.Progress.AdminServer]
<other existing parameters>
jvmargs=-Djava.rmi.server.hostname=<ip address or hostname> <other space separated arguments here>
#Additioal since OpenEdge 11.7 and 12.
[PluginPolicy.Progress.ProAdsv]
<other existing parameters>
jvmargs=-Djava.rmi.server.hostname=<ip address or hostname> <other space separated arguments here>
OPTION 3:
Add command-line arguments to the "args" property of the [PluginPolicy.Progress.AdminServer] section in the DLC/properties/AdminServerPlugins.properties file. This will be a new line, as it does not exist by default.
The "args" property specified in DLC/properties/AdminServerPlugins.properties overrides command-line arguments.
Since OpenEdge 11.7 and 12, also add the command-line arguments to the "args" property under the [PluginPolicy.Progress.ProAdsv] section.
When the AdminServer is started as a Windows Service, it makes use of the [PluginPolicy.Progress.AdminServer] section, otherwise when started via the 'proadsv' command it uses the [PluginPolicy.Progress.ProAdsv] section.
Example:
[PluginPolicy.Progress.AdminServer]
<other existing parameters>
args=-host <ip address or hostname> -port <number>
#Additional since OpenEdge 11.7 and 12.
[PluginPolicy.Progress.ProAdsv]
<other existing parameters>
args=-host <ip address or hostname> -port <number>
Additional Considerations:
- The AdminServer listening port will still be bound to all network interfaces. Only the RMI calls to the AdminServer will be bound to a specific IP address.
- If the syntax for the switch to define a specific hostname is not correct perhaps because of a typo, the option will be ignored.
- If the hostname or IP is incorrect it will be respected, but will cause the AdminServer to fail to start.
- When using the <IP ADDRESS of the machine>, DHCP might then give another IP address. Use a fixed IP address instead of DHCP, or reserve an IP address on the DHCP so that the same one is always assigned to the machine.
- When using the <hostname of the machine>, ensure that the DHCP also properly updates the DNS, so that the hostname of the machine always resolves to the correct IP address. Verify this with the 'NSLOOKUP <machine hostname> and 'PING <machine hostname' commands.
- Unified Brokers: When using a VPN connection, VPN creates a network interface and gets assigned an IP address. OpenEdge resources like the AdminServer bind to this IP address and not the machine assigned IP address. The problem with this is that the "connection definition" is driven by the "destination". The connection definition lies on the router that defines the connection state, allows LAN access, and changes the DNS search order that might cause changes in how hostnames are resolved and what path through the network is taken amongst others. Binding the AdminServer to "localhost" so that the hostname listens to all interfaces rather than just the local interface, will then cause Unified Brokers to fail with error "Connection failure for host 192.168.253.5 port 40121 transport TCP. (9407)", where 192.168.253.5 is the IP address assigned by the VPN. There's no setting for the NameServer, but there is for all Unified Brokers (e.g. Classic Webspeed, Classic AppsServer, etc). Register with the NameServer using the 'Registration Mode' configuration.
Set the 'Registration Mode' to:
- register-IP, if using the IP address eg: -Djava.rmi.server.hostname=<IP address>
- register-localhost if using localhost eg: -Djava.rmi.server.hostname=localhost or 127.0.0.1
- register-hostname if using the IP address eg: -Djava.rmi.server.hostname=<hostname>