我有 JAX-RS JSON 通道:
@Path("/data")
public class DataChannel {
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getGridData(@HeaderParam("Range") String rangeHeader) {
问题是(通常)在第一次调用时我从 Wink 的 HtmlProvider 中得到了异常,而随后的调用被正确处理并返回 JSON:
0000006f servlet E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0068E: 应用程序 [qmslmsv_ear] 中 servlet [de.datev.qmrzsv.rest.ApplicationConfig] 的服务方法之一引发了异常。异常创建:[javax.ws.rs.WebApplicationException: com.ibm.ws.jsp.webcontainerext.JSPErrorReport: JSPG0036E: 无法在 org.apache.wink.server.internal.providers.entity 找到资源 /HtmlDefaultRepresentation/defaultHtmlEntry.jsp .html.HtmlProvider.include(HtmlProvider.java:78) 在 org.apache.wink.server.internal.providers.entity.html.HtmlProvider.writeTo(HtmlProvider.java:112) 在 org.apache.wink.server.internal .providers.entity.html.HtmlProvider.writeTo(HtmlProvider.java:46) 在 org.apache.wink.server.internal.providers.entity.html.HtmlSyndEntryProvider。
运行时环境是 WebSphere 服务器 8.5。
看起来在第一次选择了错误的提供者时,标头明确指出应该使用 JSON 作为响应。从客户端发送的 HTTP 标头也隐含了 JSON 是预期的状态:
接受 text/html,application/xhtml+xml,application/xml;q=0.9, / ;q=0.8 Accept-Encoding gzip, deflate Accept-Language en,de;q=0.5 Content-Type application/json
是什么导致了这个问题以及如何避免它?