微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – Grizzly Jersey仅在Localhost上收听

我正在使用带有嵌入式Grizzly版本的Jersey,我只想在localhost上绑定/监听.我正在使用带有create调用的GrizzlyWebContainerFactory创建ThreadSelector:
threadSelector = GrizzlyWebContainerFactory.create("http://127.0.0.1:8080/",initParams);

这有效,但我仍然可以从外部机器上打服务器.我怎样才能让它绑定到/只听本地主机?

这是配置的东西,所以我不希望任何关闭框能够连接到这个服务器.

解决方法

我能够使用Jersey 2.3.1中的主机名localhost和嵌入版本的Grizzly来做到这一点:
import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory;
// ...
GrizzlyHttpServerFactory.createHttpServer(
    URI.create("http://localhost:9580/my-app/")
);

测试结果如下:

> curl -I http://myhost.com:9580/my-app
curl: (7) Couldn't connect to host

而当使用URI“http://0.0.0.0:9580/my-app/”或“http://myhost.com:9580/my-app/”启动Grizzly服务器时,我能够点击它同

> curl -I http://myhost.com:9580/my-app
HTTP/1.1 200 Not Found
...

以下是使用GrizzlyHttpServerFactory时哪些主机使用哪些URL的表.据我所知,这里没有惊喜:

# For http://0.0.0.0:9575/my-app      | Works?
curl -I http://0.0.0.0:9575/my-app    | Yes
curl -I http://127.0.0.1:9575/my-app  | Yes
curl -I http://localhost:9575/my-app  | Yes
curl -I http://myhost.com:9575/my-app | Yes
                                      | 
# For http://127.0.0.1:9575/my-app    | 
# For http://localhost:9575/my-app    |
curl -I http://0.0.0.0:9575/my-app    | Yes
curl -I http://127.0.0.1:9575/my-app  | Yes
curl -I http://localhost:9575/my-app  | Yes
curl -I http://myhost.com:9575/my-app | No
                                      | 
# For http://myhost.com:9585/my-app   | 
curl -I http://0.0.0.0:9585/my-app    | No
curl -I http://127.0.0.1:9585/my-app  | No
curl -I http://localhost:9575/my-app  | No
curl -I http://myhost.com:9585/my-app | Yes

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐