Netbeans 7.3 firstcup示例在dukesAge服务上获得404

时间:2013-08-14 20:58:56

标签: java-ee netbeans

即使我可以直接在具有完全相同URI的不同浏览器中点击dukesAge服务并获得有效答案,但此代码(完全从教程中复制)在get方法中触发了404异常:

Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://localhost:8080/dukes-age/webapi/dukesAge");
String response = target.request().get(String.class);

我在这里看过类似的问题和答案,但他们使用的是早期版本的Netbeans,似乎并不适用。这里有什么想法吗?

可以在此处下载示例:http://docs.oracle.com/javaee/7/firstcup/doc/intro002.htm

(在Windows 7上本地使用Netbeans 7.3.1和Glassfish 4.0。)

更新:上面的代码触发了一个处理过的异常,因此您了解错误的唯一方法是Duke的年龄显示为0而不是18.您必须调试才能看到.get方法抛出的实际404异常。我还安装了curl,当我尝试时:

curl -G -v http://localhost:8080/dukes-age/webapi/dukesAge

它还显示404错误 - 但该URL在浏览器中正常工作。所以我假设它与我的GlassFish设置有关,但是如果我能找到它就会变得很有用。

2 个答案:

答案 0 :(得分:1)

发现它!默认情况下,GlassFish http-listener-1正在侦听IP地址0.0.0.0,这显然适用于在浏览器中访问REST服务。但是将其更改为localhost现在让它适用于其他客户端,如curl和其他调用该服务的Java客户端。

答案 1 :(得分:1)

我知道这是一个老问题,但我在更新的版本(8.0)中遇到了同样的问题,以下解决方案为我解决了这个问题:

Status 404 on DukesAge project

具体地,

  1. 打开dukes-age项目的项目属性。
  2. 运行部分中,确保已正确设置相对网址。 (即“/ webapi / dukesAge”)