Problem JBoss is unable to port-forward its http transport for web service endpoints using Vagrant/VirtualBox.
Background
We are using Vagrant to host a centOS box with WSO2 ESB, JBoss EAP, and Oracle XE. I have set up the port-forwarding as such within the Vagrantfile:
Vagrantfile
config.vm.network :forwarded_port, guest: 9994, host: 9994 # JBOSS Admin Console
config.vm.network :forwarded_port, guest: 8084, host: 8084 # JBOSS Endpoints
config.vm.network :forwarded_port, guest: 10003, host: 10003 # JBOSS Maven Deploy
config.vm.network :forwarded_port, guest: 9443, host: 9443 # WSO2 Console admin/admin
config.vm.network :forwarded_port, guest: 8243, host: 8243 # WSO2 Endpoints
config.vm.network :forwarded_port, guest: 8280, host: 8280 # WSO2 Endpoints
config.vm.network :forwarded_port, guest: 1521, host: 1521 # Oracle XE
JBoss standalone.xml
<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>
<interface name="unsecure">
<inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/>
</interface>
</interfaces>
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:4}">
<socket-binding name="management-native" interface="management" port="${jboss.management.native.port:9999}"/>
<socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
<socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9443}"/>
<socket-binding name="ajp" port="8009"/>
<socket-binding name="http" port="8080"/>
<socket-binding name="https" port="8443"/>
<socket-binding name="jgroups-mping" port="0" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45700"/>
<socket-binding name="jgroups-tcp" port="7600"/>
<socket-binding name="jgroups-tcp-fd" port="57600"/>
<socket-binding name="jgroups-udp" port="55200" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45688"/>
<socket-binding name="jgroups-udp-fd" port="54200"/>
<socket-binding name="modcluster" port="0" multicast-address="224.0.1.105" multicast-port="23364"/>
<socket-binding name="remoting" port="4447"/>
<socket-binding name="txn-recovery-environment" port="4712"/>
<socket-binding name="txn-status-manager" port="4713"/>
<outbound-socket-binding name="mail-smtp">
<remote-destination host="localhost" port="25"/>
</outbound-socket-binding>
</socket-binding-group>
I can hit everything perfectly from the host system except for port 8084. I can curl the endpoints in the vm and the WSDLs are being hosted correctly in the guest vm.
Things I've tried
- I've tried changing just the host port in the Vagrantfile - Same result
- I've tried changing the port in the JBoss Standalone xml, then changing the guest and host ports in the Vagrantfile - Same result
- I've tried switching to using a private network configuration with Vagrant instead of the NAT port-forwarding - Same result
Due to my testing above, I feel like I have ruled out Vagrant/Virtual Box as the problem. I think it has something to do with a configuration in JBoss in regards to the http transport.
Any ideas?
sh /home/vagrant/Applications/jboss/EAP-6.2.0e/jboss-eap-6.2/bin/standalone.sh -b $IP -Djboss.bind.address.management=0.0.0.0 -Dorg.jboss.as.logging.per-deployment=false -Djboss.node.name=$HOSTNAME > /home/vagrant/Applications/jboss/jboss.log 2>&1 &
– Dan Mikita