- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Jersey 编写 JAX_RS 应用程序。所有以 JSON 形式返回单个对象的端点在 Tomcat 和 WildFly 中都可以正常工作。
一个返回对象集合的端点在 Tomcat 中工作得非常好。但是,当我在 WildFly 10.1.0 中部署相同的服务时,它失败了。
函数如下:
@POST
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response searchForActivities(ActivitySearch search) {
System.out.println(search.getDescriptions() + ", " + search.getDurationFrom());
List<Activity> activities = activityRepository.findByConstraints(search);
if(activities == null || activities.size() <= 0) {
return Response.status(Status.NOT_FOUND).build();
}
return Response.ok().entity(new GenericEntity<List<Activity>> (activities) {}).build();
}
堆栈跟踪如下:
javax.servlet.ServletException: org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json, type=class java.util.ArrayList, genericType=class java.util.ArrayList.
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:373)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:372)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:335)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:218)
io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)
io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:805)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:745)
但是,函数仅返回 List<Activity>
在 Tomcat 和 WildFly 中工作没有任何问题。请参阅下面的函数定义:
@GET
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public List<Activity> getAllActivities() {
return activityRepository.findAllActivities();
}
最佳答案
这个例子似乎与 Jersey 密切相关。您需要修改 POM 以使用 WildFly BOM (org.wildfly.bom:wildfly-javaee7-with-tools:10.1.0.Final
)。然后导入 JAX-RS 依赖项或使用 Java EE 7 maven coordinates (also helpful)。
如果您想要一个更通用的 JAX-RS 客户端示例,该示例应与任何 Java EE 7 兼容容器一起使用,请查看 WildFly JAX-RS Client quickstart 。或 Java EE Samples 中的任何一个.
关于java - JAX_RS-MessageBodyProviderNotFoundException : MessageBodyWriter not found for ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40014596/
假设我在 JAX-RS 1 环境(带有 Jackson 提供程序的 RestEasy 2)中有一个数据类,如下所示: class Foo { int id; String name;
我正在尝试在 JBoss 7.2 Rest Easy 中计算出 JAX-RS 示例。我收到如下错误消息。 SEVERE [org.jboss.resteasy.core.SynchronousDisp
我正在尝试从后端(spring)发送一些混合数据到后端(jersey)要发送的数据是混合的:对象、文件。我不断收到此错误: javax.ws.rs.ProcessingException: No av
我想创建rest api。我不想在每个资源类中重复使用绝对路径,所以我想使其分层。所以而不是像这样: @Path("/") @Component @Scope("request") public cl
我想创建一个 Jersey 提供程序 ( MessageBodyWriter ),它更新 dto 对象属性并继续链接到 Jersey-json 默认提供程序并返回 json 对象。 问题是,看起来默认
在 Dropwizard Web 服务中,我想使用以下自定义 MessageBodyWriter 返回数据库中 Test 类的对象。 @Provider @Produces("applicatio
本质上,我有一个将对象写入 JSON 的 MessageBodyWriter,并且我希望能够根据处理请求的资源方法来控制输出的某些方面。但是,@Provider 类的默认生命周期是单例(每个 JVM
我正在使用 Jetty 制作一个小型 RESTful 服务。使用 Maven 作为构建工具。 当我尝试调用试图访问对象的 JSON 表示的 GET 方法时,我收到“MessageBodyWriter”
我正在尝试在我的自定义 MessageBodyWriter 中获取 HttpServletRequest 的实例。我目前正在使用一个用@Context 注释的成员变量。但是,当请求首次使用编写器时 -
我有一个 REST 服务的返回类型,其中包含一个 Long 字段。当该字段为 NULL 时,返回的 XML 会跳过该字段。我希望该字段作为空元素出现在输出中。 例如:如果 POJO 定义如下: cla
我正在尝试重新创建最优秀的 vogella 教程,以使用 java、JAX-RS 和 Jersey 创建 REST。 我正在使用具有 Java-EE 视角的 eclipse Kepler,tomcat
我目前正在学习 REST,并且在调用方法时遇到错误。我确信这一定是一个简单的配置设置,但由于我对学习 REST 完全陌生,所以无法弄清楚。 web.xml Jersey
我正在使用 Jersey 编写 JAX_RS 应用程序。所有以 JSON 形式返回单个对象的端点在 Tomcat 和 WildFly 中都可以正常工作。 一个返回对象集合的端点在 Tomcat 中工作
Jersey 2.21. 我有如下资源文件 …… @POST @Path("/userReg") @Produces("application/json;charset=UTF-8") public
我想根据请求的 HttpHeader 以两种格式生成 REST API 响应: @Context HttpHeaders headers; public Response toResponse(MyV
我刚刚关注了this tutorial to create a REST API using Jersey on Jetty我喜欢这个结果。一切正常。但如果我运行 Gradle shadowJar生成
我正在使用 Jersey (jaxrs-ri-2.7)、Tomcat 7.0.47 和 Java 1.7.0_51。由于防火墙的原因,我无法使用 Maven。我的目标是做一个 JSON RESTful
如果发生错误(https://jersey.java.net/documentation/latest/representations.html#d0e3586),我正在尝试按照 Jersey 文档启
如何在 Jersey 的 MessageBodyWriter 中更改 HTTP 状态?我知道我可以在 writeTo 方法中通过 httpHeaders 和 entityStream 更改 heade
我已经尝试了所有方法...无法弄清楚为什么会出现此异常。有趣的是,在我的 IDE (Intellij) 中一切正常。想不通。。。放弃了。 你们有什么建议吗? dependencies { co
我是一名优秀的程序员,十分优秀!