JBoss HTTP传输不使用Vagrant进行端口转发

JBoss HTTP传输不使用Vagrant进行端口转发,jboss,virtualbox,vagrant,portforwarding,Jboss,Virtualbox,Vagrant,Portforwarding,问题 JBoss无法使用Vagrant/VirtualBox为web服务端点转发其http传输 背景 我们正在使用Vagrant托管一个带有WSO2 ESB、JBoss EAP和Oracle XE的centOS机箱。我已在Vagrant文件中设置端口转发: 流浪汉档案 config.vm.network :forwarded_port, guest: 9994, host: 9994 # JBOSS Admin Console config.vm.network :forwarded_port

问题 JBoss无法使用Vagrant/VirtualBox为web服务端点转发其http传输

背景

我们正在使用Vagrant托管一个带有WSO2 ESB、JBoss EAP和Oracle XE的centOS机箱。我已在Vagrant文件中设置端口转发:

流浪汉档案

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>

除了8084端口外,我可以从主机系统完美地访问所有内容。我可以卷曲vm中的端点,并且WSDL在来宾vm中被正确托管

我尝试过的事情

  • 我尝试只更改Vagrantfile中的主机端口-结果相同
  • 我尝试在JBoss Standalone xml中更改端口,然后在Vagrantfile中更改来宾和主机端口-相同的结果
  • 我尝试使用带有Vagrant的专用网络配置,而不是NAT端口转发-相同的结果
由于我的上述测试,我觉得我已经排除了流浪者/虚拟盒子的问题。我认为这与JBoss中http传输的配置有关


有什么想法吗?

经过大量研究,我找到了解决办法。这是最初的webservice子系统:

<subsystem xmlns="urn:jboss:domain:webservices:1.1">
        <modify-wsdl-address>true</modify-wsdl-address>
        <wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host>
        <endpoint-config name="Standard-Endpoint-Config"/>
        <endpoint-config name="Recording-Endpoint-Config">
            <pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM">
                <handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/>
            </pre-handler-chain>
        </endpoint-config>
</subsystem>

真的
${jboss.bind.address:127.0.0.1}
我在这里找到了一篇描述服务器配置选项的文章。通过进行以下更改,我修复了我的问题:

<subsystem xmlns="urn:jboss:domain:webservices:1.1">
        <modify-wsdl-address>true</modify-wsdl-address>
        <wsdl-host>localhost</wsdl-host>
        <wsdl-port>8084</wsdl-port>
        <endpoint-config name="Standard-Endpoint-Config"/>
        <endpoint-config name="Recording-Endpoint-Config">
            <pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM">
                <handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/>
            </pre-handler-chain>
        </endpoint-config>
</subsystem>

真的
本地服务器
8084

我基本上只是将wsdl主机更改为localhost,并添加了wsdl端口8084。我希望这能帮助其他人

看起来您只是将JBoss绑定到127.0.0.1。尝试将绑定更改为0.0.0.0,以便服务器将绑定到虚拟机中的所有ip地址。感谢您的回复,非常感谢。我正在更改开始脚本中的绑定:
sh/home/vagrant/Applications/jboss/EAP-6.2.0e/jboss-EAP-6.2/bin/standalone.sh-b$IP-djbboss.bind.address.management=0.0.0-Dorg.jboss.as.logging.per deployment=false-djbboss.node.name=$HOSTNAME>/home/vagrant/Applications/jboss/jboss.log 2>&1&