我使用的是Jersey,因此当我尝试从我的服务中获取JSON对象响应(仅使用JSON)时,我遇到了一个问题。
服务
@Path("/profile")
public class ProfileDataService {
@GET
@Produces(MediaType.APPLICATION_JSON)
public ProfileBean getProfileData() {
ProfileBean profile = fillProfileInstance();
return profile;
}
}
网页.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)
2条答案
按热度按时间qyyhg6bp1#
看起来你的服务器没有响应...我猜你的客户端java代码在不同的java项目中,对吗?如果不是,如果你的客户端java代码在同一个java项目中,你必须启动你的应用程序服务器,之后,你可以运行你的客户端类的main方法。如果你的客户端java代码在其他java项目中,是相同的,您必须启动服务器才能调用RestFul路径。顺便说一下,您的Restful应用程序项目名称是小写的“cinemak-service”?只是为了确保这不是打字错误。
z6psavjg2#
使用Jersey时出现HTTP 500内部服务器错误。
总是失败。