2

即使我可以使用完全相同的 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 设置有关,但如果我能找到它,那就太糟糕了。

4

2 回答 2

2

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

DukesAge 项目的状态 404

具体来说,

  1. 打开 dukes-age 项目的项目属性。
  2. 运行部分中,确保正确设置了相对 URL。(即“/webapi/dukesAge”)
于 2017-12-26T17:25:27.837 回答
1

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

于 2013-08-17T19:22:55.603 回答