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

时间:2017-04-20 13:50:39

标签: java apache-camel cxf apache-karaf apache-servicemix

我在servicemix中部署angular2 webapp作为war文件。这使得该应用在localhost:8181/angular2webapp网址上运行。我为REST请求安装了一个bundle,它基本上是一个camel组件。

<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端点的按钮,以便填写表格,我可以在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,但它也没有用。此外,我可以在GET上将post服务的REST服务称为http://localhost:9090...,而不是x.x.x.x:9090...

或者是正确的问题:

有没有办法从ServiceMix外部公开REST服务器? 如果没有,我应该使用像NGINIX这样的代理服务器,以便localhost发生一切吗? 什么是正确的做法?

1 个答案:

答案 0 :(得分:2)

在地址

中使用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?