我正在尝试在我的本地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。
编辑:没有防火墙阻止传入连接。我已将其关闭以消除这种可能性。
答案 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