2017-12-27 4 views
0

Dieses Problem mit Websphere Liberty-Profil 17.0.0.4. Wenn ich eine Oneway-Anfrage mache, führt dies zu einem Null-Zeiger. Es funktioniert gut mit Anfrage-Antwort-Diensten.Camel CXF: Ein-Wege-Szenario greift auf den Benutzerprinzipal zu Null-Zeiger-Ausnahme

Mine ist eine Spring-Boot-App. Der Code funktioniert problemlos als eigenständige Springboot-App, die mit einem eingebetteten Tomcat-Container ausgeführt wird.

Der Fehler tritt auf, wenn innerhalb von WebSphere liberty Profil ausgeführt wird. Ich habe den eingebetteten Behälter deaktiviert whend in WLP Bereitstellung

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] 

Antwort

0

ich beschlossen dies durch die DefaultCxfBinding.I zwingende haben die Schaffung des Security vorerst deaktiviert. Die CFX JMSConfig hat die Möglichkeit dies zu tun, indem Sie createSecurityContext als false setzen. Auch sollte der HTTP-Transport haben diese Funktion

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

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

}

Verwandte Themen