0

在 Websphere Liberty 配置文件 17.0.0.4 中发现了这个问题。当我发出单向请求时,这会导致一个空指针。它适用于请求响应服务。

我的是一个弹簧启动应用程序。该代码可以作为使用嵌入式 tomcat 容器运行的独立 springboot 应用程序正常工作。

在 Websphere 自由配置文件中运行时发生错误。在 WLP 中部署时,我已禁用嵌入式容器

 java.lang.NullPointerException: null
    at com.ibm.ws.webcontainer.osgi.collaborator.CollaboratorHelperImpl.getCurrentSecurityCollaborator(CollaboratorHelperImpl.java:286) ~[na:na]
    at com.ibm.ws.webcontainer.srt.SRTServletRequest.getUserPrincipal(SRTServletRequest.java:2796) ~[na:na]
    at org.apache.cxf.transport.http.AbstractHTTPDestination$2.getUserPrincipal(AbstractHTTPDestination.java:392) ~[cxf-rt-transports-http-3.2.1.jar:3.2.1]
    at org.apache.camel.component.cxf.DefaultCxfBinding.populateExchangeFromCxfRequest(DefaultCxfBinding.java:274) ~[camel-cxf-2.20.1.jar:2.20.1]
    at org.apache.camel.component.cxf.CxfConsumer$CxfConsumerInvoker.prepareCamelExchange(CxfConsumer.java:316) ~[camel-cxf-2.20.1.jar:2.20.1]
    at org.apache.camel.component.cxf.CxfConsumer$CxfConsumerInvoker.syncInvoke(CxfConsumer.java:253) ~[camel-cxf-2.20.1.jar:2.20.1]
    at org.apache.camel.component.cxf.CxfConsumer$CxfConsumerInvoker.invoke(CxfConsumer.java:183) ~[camel-cxf-2.20.1.jar:2.20.1]
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59) ~[cxf-core-3.2.1.jar:3.2.1]
4

1 回答 1

0

我通过覆盖 DefaultCxfBinding 解决了这个问题。我现在已经禁用了 securityContext 的创建。CFX JMSConfig 可以通过将 createSecurityContext 设置为 false 来执行此操作。即使是 HTTP 传输也应该有这个特性

@Override public void populateExchangeFromCxfRequest(Exchange cxfExchange, org.apache.camel.Exchange camelExchange) {

Message cxfMessage = cxfExchange.getInMessage();    
cxfMessage.put(SecurityContext.class, null);        
super.populateExchangeFromCxfRequest(cxfExchange, camelExchange);

}

于 2017-12-28T11:03:05.310 回答