【问题标题】:REST service deployed in Apache ServiceMix not accessible remotely无法远程访问 Apache ServiceMix 中部署的 REST 服务
【发布时间】:2018-09-28 06:06:27
【问题描述】:

我在 servicemix 中部署一个 angular2 webapp 作为一个 war 文件。这使得应用程序在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端点以填充表格,我可以在 Machine2 GET http://localhost:9090/deviceservice/devices net::ERR_CONNECTION_REFUSED 的浏览器控制台中看到。我将 cxf 服务器托管在 x.x.x.x 上作为

<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 上? 什么是正确的做法?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 谢谢它的工作:) 你能告诉我用 cxf:rsServer 和 cxf:cxfEndpoint 创建的服务器之间的区别吗?就像在此页面中完成的那样:github.com/apache/servicemix/blob/master/examples/camel/…
    • 另外,我将 IP 放入 angular2 代码中。这是做不同来源请求的错误方法吗?我应该有代理服务器还是接受请求?你能推荐一个更好的方法吗?
    • 这似乎不适用于 https , netstat 命令告诉我它在 127.0.0.1 上侦听
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多