gpt4 book ai didi

json - 如何在 Glassfish 4 上创建一个简单的 JSON Jersey 2.x RESTful Web 服务?

转载 作者:行者123 更新时间:2023-12-05 00:42:22 25 4
gpt4 key购买 nike

我花了好几天时间想弄清楚这个问题。我想要做的就是创建一个简单的 Web 服务以将 POJO 列表作为 JSON 返回。为什么这么难?

我从我的 POM 开始:

<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.17</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.17</version>
</dependency>

这是我的资源配置:

@ApplicationPath("reservations")
public class ApplicationConfig extends ResourceConfig {

public ApplicationConfig() {
packages("com.oracle.swr.ws.mavenproject3",
"com.fasterxml.jackson.jaxrs.base");
}
}

这是我的资源:

@Path("/bookedAssets")
public class GenericResource {

@Context
private UriInfo context;

@GET
@Produces(MediaType.APPLICATION_JSON)
public List<String> getJson() {

List<String> strings = new ArrayList<>();
strings.add("test");
strings.add("test2");
return strings;
}
}

当我尝试运行它时,我得到:

严重:找不到媒体 type=application/json、type=class java.util.ArrayList、genericType=class java.util.ArrayList 的 MessageBodyWriter。

我修改了 ResourceConfig 以尝试使用 JacksonFeature:

public ApplicationConfig() {
super(GenericResource.class, JacksonFeature.class);
}

我收到此错误消息:

警告:StandardWrapperValve[com.oracle.swr.ws.mavenproject3.ApplicationConfig]:servlet com.oracle.swr.ws.mavenproject3.ApplicationConfig 的 Servlet.service() 抛出异常org.jboss.weld.exceptions.UnsatisfiedResolutionException:WELD-001308:无法解析类型的任何 bean:[org.glassfish.jersey.message.filtering.spi.ObjectProvider];绑定(bind):[QualifierInstance{annotationClass=interface javax.enterprise.inject.Default, values={}, hashCode=633679645}]

我在我的 POM 中尝试了许多不同的组合。没有运气。我已经阅读了 Jersey 文档。没有运气。

这家伙说 Jersey 文档很垃圾,改为这样做:http://jersey.576304.n2.nabble.com/Beware-of-JacksonFeature-in-Jersey-td7581633.html .试过了。运气不好。

有没有人有一个让 GF 4.x、Jersey 2.x、Jackson 2.x 工作的真正简单的例子?

最佳答案

(来自@peeskillet 的评论)我替换了这个:

<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.17</version>
</dependency>

与:

<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.5.3</version>
</dependency>

packages("com.fasterxml.jackson.jaxrs.base");

与:

packages("com.fasterxml.jackson.jaxrs.json");

关于json - 如何在 Glassfish 4 上创建一个简单的 JSON Jersey 2.x RESTful Web 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30379540/

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