部署在 Apache ServiceMix 中的 REST 服务无法远程访问

REST service deployed in Apache ServiceMix not accessible remotely

我正在将 angular2 webapp 作为 war 文件部署到 servicemix 中。这使得应用 运行 在 localhost:8181/angular2webapp url 上。我为 REST 请求安装了一个包,它基本上是一个骆驼组件。

<cxf:rsServer id="rsServer" address="http://localhost:9090"
serviceClass="com.mypackage.class.MyClass" />

现在这是我已配置为允许的不同来源请求。所有这些设置在一台机器(Machine1)上运行良好。当我尝试从同一网络中的另一台机器(Machine2)访问 x.x.x.x:8181/angular2webapp 时,它正在打开基本页面但是当我调用时单击一个按钮调用 com.mypackage.class.MyClass 的 REST 端点以便填一个table,我可以在Machine2的浏览器控制台看到GET http://localhost:9090/deviceservice/devices net::ERR_CONNECTION_REFUSED。我在 x.x.x.x 上以

的身份托管了 cxf 服务器
<cxf:rsServer id="rsServer" address="http://x.x.x.x:9090"
serviceClass="com.mypackage.class.MyClass" />

并更改了 angular2 代码以调用 'x.x.x.x:9090 但它也没有用。此外,我可以在 http://localhost:9090... 上以 GET 的形式从邮递员调用 REST 服务,但不能以 x.x.x.x:9090....

的形式调用

或者是正确的问题:

有没有办法从ServiceMix向外暴露REST服务器? 如果不是,我是否应该使用 NGINIX 之类的东西作为代理服务器,以便一切都发生在 localhost 上? 什么是正确的做法?

在地址中使用 0.0.0.0 而不是 localhost

address="http://0.0.0.0:9090"

您可能会在 SO 上找到关于 localhost/127.0.0.1 和 0.0.0.0 等之间的区别的问题,例如:What is the difference between 0.0.0.0, 127.0.0.1 and localhost?