拒绝Jersey RESTful Web服务连接

时间:2014-12-17 11:20:26

标签: java rest maven jersey connection-refused

我正在尝试在我的本地OS X计算机上运行Jersey服务器。

到目前为止,我已根据Jersey网站指令执行了这三个命令:

mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-grizzly2 \
-DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false \
-DgroupId=com.example -DartifactId=simple-service -Dpackage=com.example \
-DarchetypeVersion=2.14

mvn clean test

mvn exec:java

它看起来工作正常,因为最后一个命令打印出来:

Dec 17, 2014 12:05:15 PM org.glassfish.grizzly.http.server.NetworkListener start
INFO: Started listener bound to [localhost:8080]
Dec 17, 2014 12:05:15 PM org.glassfish.grizzly.http.server.HttpServer start
INFO: [HttpServer] Started.
Jersey app started with WADL available at http://localhost:8080/myapp/application.wadl
Hit enter to stop it...

但是,当尝试在浏览器中调用http://localhost:8080时,我收到地址无法访问错误。我也用telnet测试了它:

telnet localhost 8080

返回连接拒绝错误。很明显,Jersey servlet“认为”它正在端口8080上进行本地监听,但绝对不是。我尝试使用127.0.0.1而不是localhost来实现它,我尝试在不同的端口上运行Jersey。似乎没有什么能够解决它。

我在OS X 10.10上使用Maven 3.2.3运行Jersey 2.1.4并使用Java 1.8.0。

编辑:没有防火墙阻止传入连接。我已将其关闭以消除这种可能性。

2 个答案:

答案 0 :(得分:1)

好的,我找到了解决方案。

默认基URI为http://localhost:8080/myapp。您可以在Main.java中的第16行看到它:

public static final String BASE_URI = "http://localhost:8080/myapp/";

我将localhost更改为0.0.0.0,并且有效!

public static final String BASE_URI = "http://0.0.0.0:8080/myapp/";

非常感谢你的帮助,对不起,我最后回答了自己的问题。我希望将来可以帮助一些人。

答案 1 :(得分:0)

如果你不需要使用glassfish堆栈:我更喜欢archetype

com.sun.jersey.archetypes:jersey-quickstart-webapp

与码头:

使用

替换你的pom中的glassfish插件

<plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.2.2.v20140723</version> </plugin>

现在,您可以使用mvn jetty:run

运行其余服务 祝你好运