2

我正在尝试在我的本地 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而不是本地主机来访问它,并且我尝试在不同的端口上运行 Jersey。似乎没有什么可以解决它。

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

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

4

2 回答 2

1

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

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

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

我改为localhost0.0.0.0它工作!

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

非常感谢您的帮助,很抱歉我最终回答了自己的问题。我希望它对将来的一些人有所帮助。

于 2014-12-18T11:45:17.007 回答
0

如果您不需要使用 glassfish 堆栈:我更喜欢原型

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

祝你好运

于 2014-12-17T16:26:32.853 回答