【问题标题】:HTTP 500 Internal Server Error using Jersey使用 Jersey 的 HTTP 500 内部服务器错误
【发布时间】:2015-07-15 18:33:03
【问题描述】:

我正在使用泽西岛。因此,当我尝试从我的服务中获取 JSON 对象响应(仅使用 JSON)时,我遇到了问题。我正在使用一个简单的 apache localhost 来托管我的服务。

服务

@Path("/profile")
public class ProfileDataService {

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public ProfileBean getProfileData() {
        ProfileBean profile = fillProfileInstance();

        return profile;
    }
}

web.xml

<web-app ...>
    <display-name>cinemak-service</display-name>
    <servlet>
        <servlet-name>Jersey REST Service</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <!-- Register resources and providers under com.vogella.jersey.first package. -->
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>com.cinemak.service.services</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Jersey REST Service</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>
</web-app>

客户

public static void main(String[] args) {
    ClientConfig config = new ClientConfig();
    Client client = ClientBuilder.newClient(config);

    WebTarget target = client.target(getURIBase());

    System.out.println(target.path("rest").path("profile").request().accept(MediaType.APPLICATION_JSON).get(String.class));

}

//Build and returns the specific uri base for cinemak-service
private static URI getURIBase() {
    return UriBuilder.fromUri("http://localhost:8080/cinemak-service").build();
}

我得到的错误:

Exception in thread "main" javax.ws.rs.InternalServerErrorException: HTTP 500 Internal Server Error
    at org.glassfish.jersey.client.JerseyInvocation.convertToException(JerseyInvocation.java:1002)
    at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:799)
    at org.glassfish.jersey.client.JerseyInvocation.access$500(JerseyInvocation.java:91)
    at org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:687)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444)
    at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:683)
    at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:411)
    at org.glassfish.jersey.client.JerseyInvocation$Builder.get(JerseyInvocation.java:307)
    at com.cinemak.client.ProfileDataClient.main(ProfileDataClient.java:21)

【问题讨论】:

  • 应提供 ProfileBean 类。可能你错过了什么。

标签: web-services jakarta-ee jersey jersey-2.0 jersey-client


【解决方案1】:

看起来您的服务器没有响应...我猜您的客户端 java 代码在不同的 java 项目中,对吧?如果没有,如果您的客户端 java 代码在同一个 java 项目中,您必须启动您的应用程序服务器,之后,您可以运行您的客户端类的 main 方法。如果您的客户端 java 代码在其他 java 项目中,也是一样,您必须启动您的服务器才能调用 RestFul 路径。顺便问一下,你的 Restful 应用项目名称是小写的“cinemak-service”?只是为了确保这不是一个错字。

【讨论】:

  • 嗯,首先感谢您的回答。我的客户在另一个项目中,我在运行主类之前确实启动了服务。我认为这不是问题,当我尝试让我的服务给出一个 Plain_Text 作为响应时,一切正常。
【解决方案2】:

下面是最糟糕的编码,您将得到 HTTP 500 内部服务器错误 使用泽西岛。

  • 这两个示例方法产生和使用完全相同的 mime 类型,因此它们作为资源方法的调用将
    总是失败。
package rest;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;

@Path("/HelloService")
public class HelloService {
    @GET
    @Path("/{param}/{param2}")
    public Response getMsg(@PathParam("param") String msg,
            @PathParam("param2") String msg2) { // from path
        String output = "Jersey say : " + msg + "/" + msg2;
        return Response.status(200).entity(output).build();
    }

    @GET
    @Path("/{param}/{param2}")
    public Response getMsg2(@PathParam("param") String msg,
            @PathParam("param2") String msg2) { // from path
        String output = "Jersey say-2 : " + msg + "/" + msg2;
        return Response.status(200).entity(output).build();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多