I have a local OE11.3 development environment on my laptop. Whenever I move between networks (e.g. between office / client) and getting a new IP address my admin server used to be unresponsive until I've forced it to bind to localhost by editing $DLC/properties/AdminServerPlugins.properties, under section [PluginPolicy.Progress.AdminServer]:
1) Add -Djava.rmi.server.hostname=localhost to the jvmargs line
2) add a new line args=-host localhost
This works great, but I still have a problem with stopping / starting brokers after an IP address change. This is what I get in the admin server log file:
* AdminServer GUI Plugin internal error 2: SvcControlCmd.pingService(wsb_1501pre) failure: java.rmi.ConnectException: Connection refused to host: 10.3.17.73; nested exception is:
* java.net.ConnectException: Connection timed out: connect (8172)(java.rmi.ConnectException: Connection refused to host: 10.3.17.73; nested exception is:
* java.net.ConnectException: Connection timed out: connect)
IP address 10.3.17.73 is the IP address I was connected to but is no longer reachable. Any idea why it's using that IP address instead of localhost?
Whenever the broker gets started it runs $DLC\bin\jvmStart with a lot of parameters. I guess somehow I need to add -Djava.rmi.server.hostname=localhost to this but have no idea how.
Any pointers?
11.6.3.005 / Windows 10 x64
I have added -host MARS to the registry AdminServer startup chimera:
"c:\progress\oe11.6\bin\jvmstart" -a "c:\progress\oe11.6\properties\AdminServerPlugins.properties"::PluginPolicy.Progress.AdminServer -o eventmgr -w @{WorkPath} @{JAVA\JREHOME}\bin\java -DInstall.Dir=@{Startup\DLC} -DWork.Dir=@{WorkPath} -Dadmsrv.jvm=@{JAVA\JREHOME}\bin\java -Djvmstart.debug=0 com.progress.chimera.adminserver.AdminServerType -host MARS -start -service
My WebSpeed broker starts fine:
[2016/12/16@00:22:31.162+0100] [3] [OpenEdge] c:\progress\oe11.6\bin\jvmStart -w c:\tfs\ef72\2\work -o stdout -e 1 c:\progress\oe11.6\jre\bin\java -classpath c:\progress\oe11.6\jdk\lib\tools.jar;c:\progress\oe11.6\java\progress.jar -DInstall.Dir=c:\progress\oe11.6 -Djava.security.policy=c:\progress\oe11.6\java\java.policy -DCanonicalName=fathom1.mars:ID=WebSpeed com.progress.ubroker.broker.ubroker -t WS -i ws722openedge-r -r rmi://MARS:20931/ws722openedge-r -f c:\progress\oe11.6\properties\ubroker.properties
But when my IP address has changed, a wtbman query results in:
[2016/12/16@14:19:59.434+0100] [3] [STDERR] java.rmi.ConnectException: Connection refused to host: 10.2.102.234; nested exception is: [2016/12/16@14:19:59.434+0100] [3] [STDERR] java.net.ConnectException: Connection timed out: connect
The IP address in the error is the old and not my current IP address. I thought the -host addition was supposed to ensure that a host name is used instead of an (old) IP address?
In the end I've settled to a VM running all my local environments. Most VM software packages will give your VM a IP address which does not change when using a "Host only" of even "NAT" network interface.
In my case I'm using a CentOS VM while I still use the development tools in Windows. It's possible to store all the code on the VM and access it via a Samba share, or the other way round with a windows share, but that's very slow in both cases. So what I'm doing now is to host all the code on my Windows host, and make use of shared folders to access the code from the VM. Virtualbox's shared folders functionality is slow, VMWare Player was the best I could find. Hyper-V doesn't support shared folders at all. All DBs & agents I'm hosting on the VM, but I guess you could host the DBs on Windows too and connect to them via an IP address - most likely at a performance penalty.
Update: With Windows 10 Anniversary edition Subsystem for Linux (WSL) support of filesystem notification events (inotify events), you can use lsyncd from bash to sync any changes on the windows side to your VM over rsync. This implies you have copies of your code on Windows and on your VM, but the performance is absolutely great on both sides.