我使用REST客户端生成EAR示例应用程序并将其部署在我的笔记本上(JBoss EAP 6.3.0具有独立配置和绑定任何地址用于公共域)。以下代码负责生成REST响应:
@Stateless
@Path("/users/list")
public class ListUsersREST {
@GET
@Produces("text/html")
public String getUsersList() {
return "TEST";
}
}
通过POSTMAM可以正常工作。可能我的例子的这一部分并不需要任何帮助。
现在......我在我的桌面上部署了第二个应用程序(JBoss和配置相同)。我对JAVAEE7 API有依赖,包含JAVAX.WS.RS。* API。我试图连接到这个REST客户端并得到响应(比如通过POSTMAN):
@Stateless
@Local(EJBTest.class)
public class EJBTestBean implements EJBTest {
@Override
public void getRestResponse() {
Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://192.168.0.2:8080/demo/rest/users/list");
Response response = target.request(MediaType.TEXT_HTML).get();
String value = response.readEntity(String.class);
int status = response.getStatus();
response.close();
client.close();
System.out.println("REST RESPONSE: " + value);
System.out.println("REST Status: " + status);
}
}
......这段代码不起作用。我不知道为什么......
我一直得到同样的例外......
引起:java.lang.NoClassDefFoundError:javax / ws / rs / client / ClientBuilder
我在google上搜索并尝试了很多解决方案,比如
但没有效果......请告诉我发生了什么事。我做错了什么?
答案 0 :(得分:0)
JBoss EAP 6是Java EE 6,您正在部署需要Java EE 7的应用程序.JAX-RS客户端仅在Java EE 7中。如果您在{{3}上尝试部署,这应该有效。 }。
您依赖的原因似乎不起作用,服务器将使用它自己的JAX-RS依赖关系。您可以从部署中排除可能有效的JAX-RS子系统。您可能无法使用JAX-RS端点,只能使用客户端。
您最好的选择是使用Java EE 7容器,WildFly 8是。