gpt4 book ai didi

java - Jersey 中的 URI 扩展(.xml、.json)

转载 作者:行者123 更新时间:2023-11-30 02:48:46 27 4
gpt4 key购买 nike

我正在尝试使用 Jersey 制作通用 REST api,为此我遵循了以下博客: https://theza.ch/2009/08/11/uri-extensions-in-jersey/

所以,当我在 url 中使用 .xml 时,服务器工作正常,而当我使用 .json 时,它会给出 500 内部服务器错误。我尝试过不同的事情,但无济于事。任何人都可以通过任何更改知道为什么这种情况发生在 json 而不是 xml 中以及如何解决此问题?

我的代码看起来像这样:

@GET
@Path("/order/{product-key}/getorderid")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response getOrderIdByDomain(@Context HttpServletRequest request,
@PathParam("product-key") final String productKey,
@QueryParam("domain-name") final String domainName ) throws Exception
{
try
{
Integer response = doSomething();

return Response.status(200).entity(response).build();
}
catch (Exception lbe)
{
Hashtable response = new Hashtable();
response.put("Error",lbe.getMessage());
return Response.status(400).entity(response).build();
}
}

更新:

添加 jersey-json 依赖项后,500 错误更改为 200 OK,但我仍然收到空响应。对于 xml,我得到了预期的响应。有人遇到过类似的问题吗?请提出建议,因为我已经尝试了其他答案中的一些内容,但似乎不起作用。

堆栈跟踪:

Caused by: java.lang.AbstractMethodError
at org.codehaus.jackson.map.AnnotationIntrospector$Pair.findSerializer(AnnotationIntrospector.java:1148)
at org.codehaus.jackson.map.ser.BasicSerializerFactory.findSerializerFromAnnotation(BasicSerializerFactory.java:362)
at org.codehaus.jackson.map.ser.BeanSerializerFactory.createSerializer(BeanSerializerFactory.java:252)
at org.codehaus.jackson.map.ser.StdSerializerProvider._createUntypedSerializer(StdSerializerProvider.java:782)
at org.codehaus.jackson.map.ser.StdSerializerProvider._createAndCacheUntypedSerializer(StdSerializerProvider.java:735)
at org.codehaus.jackson.map.ser.StdSerializerProvider.findValueSerializer(StdSerializerProvider.java:344)
at org.codehaus.jackson.map.ser.StdSerializerProvider.findTypedValueSerializer(StdSerializerProvider.java:420)
at org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:601)
at org.codehaus.jackson.map.ser.StdSerializerProvider.serializeValue(StdSerializerProvider.java:256)
at org.codehaus.jackson.map.ObjectMapper.writeValue(ObjectMapper.java:1606)
at org.codehaus.jackson.jaxrs.JacksonJsonProvider.writeTo(JacksonJsonProvider.java:520)
at com.sun.jersey.json.impl.provider.entity.JacksonProviderProxy.writeTo(JacksonProviderProxy.java:160)
at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:306)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1437)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
... 48 more

我正在使用以下依赖项:jersey-server、jersey-json 版本 1.8。

最佳答案

经过长时间尝试解决此问题后,我切换到 genson,

        <dependency>
<groupId>com.owlike</groupId>
<artifactId>genson</artifactId>
<version>1.3</version>
</dependency>

它工作起来非常容易。稍后会尝试找出 jackson 为何不工作的原因。

关于java - Jersey 中的 URI 扩展(.xml、.json),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39349168/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com