我正在使用带有嵌入式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