java - Camel Exchange 尝试获取正文时出现 NullPointerException

标签 java apache-camel cxf javabeans

我正在尝试设置服务总线。我尝试创建的第一个服务应该将 SOAP 转换为 JSON。我创建了一个端点和一个 WSDL,两者都测试成功。当我尝试转换消息时,程序返回 NullPointerException。

我在处理函数中输出了以下数据:

交换 [ID-91a89d0e303b-36665-1571915569757-0-2][消息:[com.example.UpsertItemRequest@6a8344b9]]

Exchange.getIn() 消息:[com.example.UpsertItemRequest@6a8344b9]

Exchange.getIn().getBody(String.class) upsertItem 已引发异常,现在正在展开 org.apache.cxf.interceptor.Fault:NullPointerException

applicationcontext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:camel="http://camel.apache.org/schema/spring"
   xmlns:osgi="http://www.springframework.org/schema/osgi"
   xmlns:cxf="http://camel.apache.org/schema/cxf"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd       http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf-2.8.3.xsd">

<cxf:cxfEndpoint id="upsertItemCxfEndpoint"
    address="/pimcore/upsertItem"
    endpointName="a:upsertItemEndpoint"
    serviceName="a:upsertItemService"
    wsdlURL="wsdl/upsert-item.wsdl"
    serviceClass="com.example.UpsertItemEndpoint"
    xmlns:a="http://example.com"/>

<bean id="upsertItemTransformer" class="com.example.esb.UpsertItemTransformer"/>

<bean id="upsertItemLogger" class="com.example.esb.UpsertItemLogger"/>

<camelContext id="camelId" xmlns="http://camel.apache.org/schema/spring">
    <route id="upsertItem">
        <from uri="cxf:bean:upsertItemCxfEndpoint" />
        <process ref="upsertItemLogger" />
        <process ref="upsertItemTransformer" />
    </route>
</camelContext>

UpsertItemTransformer.java

package com.example.esb;

import org.apache.camel.Exchange;
import org.apache.camel.Processor;

public class UpsertItemTransformer implements Processor {
    public void process(Exchange exchange) throws Exception {
        String body = exchange.getIn().getBody(String.class);
        exchange.getOut().setBody(body.toLowerCase());
    }
}

myPost.xml

<s11:Envelope xmlns:s11='http://schemas.xmlsoap.org/soap/envelope/'>
  <s11:Body>
    <ns1:upsertItemRequest xmlns:ns1='http://example.com'>
      <ItemCode>12345</ItemCode>
      </ns1:upsertItemRequest>
  </s11:Body>
</s11:Envelope>

堆栈跟踪

Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------
java.lang.NullPointerException
    at com.example.esb.UpsertItemTransformer.process(UpsertItemTransformer.java:9)[222:com.example.sap_pimcore_product:1.0.0.SNAPSHOT]
    at org.apache.camel.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:63)[43:org.apache.camel.camel-core:2.16.5]
    at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)[43:org.apache.camel.camel-core:2.16.5]
    at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)[43:org.apache.camel.camel-core:2.16.5]
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)[43:org.apache.camel.camel-core:2.16.5]
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)[43:org.apache.camel.camel-core:2.16.5]
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)[43:org.apache.camel.camel-core:2.16.5]
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)[43:org.apache.camel.camel-core:2.16.5]
    at org.apache.camel.component.cxf.CxfConsumer$CxfConsumerInvoker.asyncInvoke(CxfConsumer.java:154)[44:org.apache.camel.camel-cxf:2.16.5]
    at org.apache.camel.component.cxf.CxfConsumer$CxfConsumerInvoker.invoke(CxfConsumer.java:133)[44:org.apache.camel.camel-cxf:2.16.5]
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59)[57:org.apache.cxf.cxf-core:3.1.9]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)[:1.8.0_222]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_222]
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor$2.run(ServiceInvokerInterceptor.java:126)[57:org.apache.cxf.cxf-core:3.1.9]
    at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)[57:org.apache.cxf.cxf-core:3.1.9]
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:131)[57:org.apache.cxf.cxf-core:3.1.9]
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)[57:org.apache.cxf.cxf-core:3.1.9]
    at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)[57:org.apache.cxf.cxf-core:3.1.9]
    at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:252)[82:org.apache.cxf.cxf-rt-transports-http:3.1.9]
    at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)[82:org.apache.cxf.cxf-rt-transports-http:3.1.9]
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208)[82:org.apache.cxf.cxf-rt-transports-http:3.1.9]
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)[82:org.apache.cxf.cxf-rt-transports-http:3.1.9]
    at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:180)[82:org.apache.cxf.cxf-rt-transports-http:3.1.9]
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:299)[82:org.apache.cxf.cxf-rt-transports-http:3.1.9]
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:218)[82:org.apache.cxf.cxf-rt-transports-http:3.1.9]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)[17:javax.servlet-api:3.1.0]
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:274)[82:org.apache.cxf.cxf-rt-transports-http:3.1.9]
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)[188:org.eclipse.jetty.servlet:9.2.19.v20160908]
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)[188:org.eclipse.jetty.servlet:9.2.19.v20160908]
    at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71)[211:org.ops4j.pax.web.pax-web-jetty:4.3.0]
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)[186:org.eclipse.jetty.security:9.2.19.v20160908]
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:287)[211:org.ops4j.pax.web.pax-web-jetty:4.3.0]
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)[188:org.eclipse.jetty.servlet:9.2.19.v20160908]
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80)[211:org.ops4j.pax.web.pax-web-jetty:4.3.0]
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.eclipse.jetty.server.Server.handle(Server.java:499)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)[179:org.eclipse.jetty.io:9.2.19.v20160908]
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)[190:org.eclipse.jetty.util:9.2.19.v20160908]
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)[190:org.eclipse.jetty.util:9.2.19.v20160908]
    at java.lang.Thread.run(Thread.java:748)[:1.8.0_222]
2019-10-24 11:12:54,271 | WARN  | tp1559046516-107 | PhaseInterceptorChain            | 57 - org.apache.cxf.cxf-core - 3.1.9 | Application {http://example.com}upsertItemService#{http://example.com}upsertItem has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: NullPointerException
    at org.apache.camel.component.cxf.CxfConsumer$CxfConsumerInvoker.checkFailure(CxfConsumer.java:301)[44:org.apache.camel.camel-cxf:2.16.5]
    at org.apache.camel.component.cxf.CxfConsumer$CxfConsumerInvoker.setResponseBack(CxfConsumer.java:275)[44:org.apache.camel.camel-cxf:2.16.5]
    at org.apache.camel.component.cxf.CxfConsumer$CxfConsumerInvoker.asyncInvoke(CxfConsumer.java:169)[44:org.apache.camel.camel-cxf:2.16.5]
    at org.apache.camel.component.cxf.CxfConsumer$CxfConsumerInvoker.invoke(CxfConsumer.java:133)[44:org.apache.camel.camel-cxf:2.16.5]
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59)[57:org.apache.cxf.cxf-core:3.1.9]
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:96)[57:org.apache.cxf.cxf-core:3.1.9]
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)[57:org.apache.cxf.cxf-core:3.1.9]
    at org.apache.cxf.phase.PhaseInterceptorChain.resume(PhaseInterceptorChain.java:278)[57:org.apache.cxf.cxf-core:3.1.9]
    at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:78)[57:org.apache.cxf.cxf-core:3.1.9]
    at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:252)[82:org.apache.cxf.cxf-rt-transports-http:3.1.9]
    at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)[82:org.apache.cxf.cxf-rt-transports-http:3.1.9]
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208)[82:org.apache.cxf.cxf-rt-transports-http:3.1.9]
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)[82:org.apache.cxf.cxf-rt-transports-http:3.1.9]
    at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:180)[82:org.apache.cxf.cxf-rt-transports-http:3.1.9]
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:299)[82:org.apache.cxf.cxf-rt-transports-http:3.1.9]
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:218)[82:org.apache.cxf.cxf-rt-transports-http:3.1.9]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)[17:javax.servlet-api:3.1.0]
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:274)[82:org.apache.cxf.cxf-rt-transports-http:3.1.9]
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)[188:org.eclipse.jetty.servlet:9.2.19.v20160908]
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)[188:org.eclipse.jetty.servlet:9.2.19.v20160908]
    at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71)[211:org.ops4j.pax.web.pax-web-jetty:4.3.0]
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)[186:org.eclipse.jetty.security:9.2.19.v20160908]
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:287)[211:org.ops4j.pax.web.pax-web-jetty:4.3.0]
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)[188:org.eclipse.jetty.servlet:9.2.19.v20160908]
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80)[211:org.ops4j.pax.web.pax-web-jetty:4.3.0]
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.eclipse.jetty.server.Server.handleAsync(Server.java:549)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:318)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)[179:org.eclipse.jetty.io:9.2.19.v20160908]
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)[190:org.eclipse.jetty.util:9.2.19.v20160908]
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)[190:org.eclipse.jetty.util:9.2.19.v20160908]
    at java.lang.Thread.run(Thread.java:748)[:1.8.0_222]
Caused by: java.lang.NullPointerException
    at com.example.esb.UpsertItemTransformer.process(UpsertItemTransformer.java:9)[222:com.example.sap_pimcore_product:1.0.0.SNAPSHOT]
    at org.apache.camel.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:63)[43:org.apache.camel.camel-core:2.16.5]
    at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)[43:org.apache.camel.camel-core:2.16.5]
    at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)[43:org.apache.camel.camel-core:2.16.5]
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)[43:org.apache.camel.camel-core:2.16.5]
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)[43:org.apache.camel.camel-core:2.16.5]
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)[43:org.apache.camel.camel-core:2.16.5]
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)[43:org.apache.camel.camel-core:2.16.5]
    at org.apache.camel.component.cxf.CxfConsumer$CxfConsumerInvoker.asyncInvoke(CxfConsumer.java:154)[44:org.apache.camel.camel-cxf:2.16.5]
    at org.apache.camel.component.cxf.CxfConsumer$CxfConsumerInvoker.invoke(CxfConsumer.java:133)[44:org.apache.camel.camel-cxf:2.16.5]
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59)[57:org.apache.cxf.cxf-core:3.1.9]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)[:1.8.0_222]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_222]
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor$2.run(ServiceInvokerInterceptor.java:126)[57:org.apache.cxf.cxf-core:3.1.9]
    at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)[57:org.apache.cxf.cxf-core:3.1.9]
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:131)[57:org.apache.cxf.cxf-core:3.1.9]
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)[57:org.apache.cxf.cxf-core:3.1.9]
    at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)[57:org.apache.cxf.cxf-core:3.1.9]
    at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:252)[82:org.apache.cxf.cxf-rt-transports-http:3.1.9]
    at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)[82:org.apache.cxf.cxf-rt-transports-http:3.1.9]
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208)[82:org.apache.cxf.cxf-rt-transports-http:3.1.9]
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)[82:org.apache.cxf.cxf-rt-transports-http:3.1.9]
    at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:180)[82:org.apache.cxf.cxf-rt-transports-http:3.1.9]
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:299)[82:org.apache.cxf.cxf-rt-transports-http:3.1.9]
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:218)[82:org.apache.cxf.cxf-rt-transports-http:3.1.9]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)[17:javax.servlet-api:3.1.0]
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:274)[82:org.apache.cxf.cxf-rt-transports-http:3.1.9]
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)[188:org.eclipse.jetty.servlet:9.2.19.v20160908]
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)[188:org.eclipse.jetty.servlet:9.2.19.v20160908]
    at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71)[211:org.ops4j.pax.web.pax-web-jetty:4.3.0]
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)[186:org.eclipse.jetty.security:9.2.19.v20160908]
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:287)[211:org.ops4j.pax.web.pax-web-jetty:4.3.0]
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)[188:org.eclipse.jetty.servlet:9.2.19.v20160908]
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80)[211:org.ops4j.pax.web.pax-web-jetty:4.3.0]
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.eclipse.jetty.server.Server.handle(Server.java:499)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)[187:org.eclipse.jetty.server:9.2.19.v20160908]
    ... 5 more

最佳答案

我猜NPE不是来自读取正文,而是来自访问out消息正文。

在Camel中,out消息通常不存在。 If it is not present, Camel automatically uses the in message

因此,强烈建议 Camel 最佳做法是保留 out 消息,只更新 in 消息。当然也有一些特殊的异常(exception),但是当你需要的时候你就会发现它们。

所以这样做

public void process(Exchange exchange) throws Exception {
    String body = exchange.getIn().getBody(String.class);
    exchange.getIn().setBody(body.toLowerCase());
}

顺便说一句:处理器接口(interface)使用和测试起来相当笨拙。请改用 POJO!

关于java - Camel Exchange 尝试获取正文时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58540605/

相关文章:

java - 给定的代码返回一个空的 JSON 输出

java - Camel - 使用 useMessageBodyForSql 进行 Camel SQL 批量插入

java - 升级到 JBoss EAP 后 CXF 不工作

json - 使用 Apache CXF 且不使用 Spring 的具有 JSON 表示形式的 REST API

cxf - JAX-WS/CXF 中的/encoded 和/literal 支持

java - roguelike 游戏的纯 Java 文本界面

java - 带下划线的 spark 数据集到 java 对象映射字段

java - 如何在 Maven 中使用 POM 作为依赖项?

java - 使用 Apache Camel 和 ActiveMQ 时如何处理系统崩溃

java - 在 Apache Camel 应用程序中,单元测试如何注入(inject)模拟端点来代替真实端点?