java - 使用 Java-ee-7.0 for IBM 从 Jax-rs 1.1 迁移到 2.0 时出现的问题为 9

标签 java json rest jax-rs websphere-9

我正在开发一个项目来升级我现有的应用程序,该应用程序是在 JAX-RS 1.1 中开发并在 WebSphere 8.5 中运行的。现在我将其升级为从 Jax-rs 1.1 迁移到 2.0,Java-ee-7.0 for IBM 为 9

当我从 postman 那里打来时 https://abczyz.com/rest/Services_V1/SubmitM "{"mID":"XYZ654546","barcID":"","ID":"118","名称":"JACKS","CDefectArray":[],"BDefectArray":[]}"

@POST
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
@Path("/SubmitM")
public JSONObject submitM(JSONObject jsonObjectRequest) {

}

期望它能像 JAX RS 1.1 一样工作,但没有成功,

5/7/19 14:11:53:571 EDT] 0000013d 0(id=120)]    E   Error occurred during error handling, give up!
                                 org.apache.cxf.interceptor.Fault: Invalid type of value.  Type: [java.util.ArrayList] with value: [[]]
    at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:76)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:371)
    at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
    at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:256)
    at com.ibm.ws.jaxrs20.endpoint.AbstractJaxRsWebEndpoint.invoke(AbstractJaxRsWebEndpoint.java:147)
    at com.ibm.websphere.jaxrs.server.IBMRestServlet.handleRequest(IBMRestServlet.java:187)
    at com.ibm.websphere.jaxrs.server.IBMRestServlet.doPost(IBMRestServlet.java:145)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
    at com.ibm.websphere.jaxrs.server.IBMRestServlet.service(IBMRestServlet.java:133)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1235)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:779)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:143)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:78)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:969)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1109)
    at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:4198)
    at com.ibm.ws.webcontainer.webapp.WebAppImpl.handleRequest(WebAppImpl.java:2208)
    at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304)
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1030)
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817)
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:382)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:465)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:532)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:318)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:289)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1909)
Caused by: java.lang.IllegalArgumentException: Invalid type of value.  Type: [java.util.ArrayList] with value: [[]]
    at com.ibm.json.java.JSONObject.put(JSONObject.java:241)
    at org.codehaus.jackson.map.deser.MapDeserializer._readAndBind(MapDeserializer.java:244)
    at org.codehaus.jackson.map.deser.MapDeserializer.deserialize(MapDeserializer.java:166)
    at org.codehaus.jackson.map.deser.MapDeserializer.deserialize(MapDeserializer.java:24)
    at org.codehaus.jackson.map.ObjectMapper._readValue(ObjectMapper.java:1961)
    at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:889)
    at org.codehaus.jackson.jaxrs.JacksonJsonProvider.readFrom(JacksonJsonProvider.java:410)
    at org.apache.cxf.jaxrs.utils.JAXRSUtils$2.run(JAXRSUtils.java:1362)
    at java.security.AccessController.doPrivileged(AccessController.java:696)
    at org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBodyReader(JAXRSUtils.java:1358)
    at org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1308)
    at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:847)
    at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:810)
    at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:267)
    at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:98)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
    ... 35 more 

编辑 - 1

尝试添加

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

我还扩展了应用程序类

import javax.ws.rs.core.Application;

public class MyClass extends Application {

    @Override
    public Set<Object> getSingletons() {
        Set<Object> singletons = new HashSet<Object>();
        singletons.add(new JacksonJaxbJsonProvider());
        return singletons;
    }
}

编辑2

我们正在使用 com.ibm.ws.prereq.jaxrs20.jar

import com.ibm.json.java.JSONArray;
import com.ibm.json.java.JSONObject;

最佳答案

关于java - 使用 Java-ee-7.0 for IBM 从 Jax-rs 1.1 迁移到 2.0 时出现的问题为 9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56030319/

相关文章:

java - 通过重复加法进行乘法

java - 与 Mongo 的版本化对象/JSON 映射?

java - 使用 HttpsURLConnection 进行 GET 调用来获取图像

rest - 如何移动 REST 资源?

ios - 如何使用适用于 iOS 的 swift 3 连接到 MEAN stack REST api

java - 日期值无法正确显示

java - 具有多个操作的 Android 广播接收器

json - 使用Golang从AWS api解析数据

java - 为什么 OperatingSystemMxBean 的访问限制为 jre6/lib/rt.jar?

javascript - 我怎样才能更好地写出这份报告候选人的功能呢?