Jboss EAP中Rest Client的NoClassDefFoundError

时间:2014-10-06 21:43:59

标签: java rest jboss7.x resteasy java-ee-7

我使用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上搜索并尝试了很多解决方案,比如

  1. 将所有reasteasy jar添加到aplication(WEB-INF / lib)
  2. 将reasteasy jar添加到$ {JBOSS_HOME} / standalone / lib
  3. 更改standalone.xml
  4. 使用standalone-full.xml配置运行jboss
  5. 但没有效果......请告诉我发生了什么事。我做错了什么?

1 个答案:

答案 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是。