The Contextutils.getActionFromMessageAttributes(msgInfo) is intended to get action value when there is no wsdl provided in service impl class(Service built from class) CXF simply uses MessageInfo.getExtensionAttributes() != null to check if this service is built from service class (with no wsdl location provided) . There is probably some issue when the wsdl have extension to put in the extensionAttributes of MessageInfo . The NPE guard should be added in ContextUtils.getAction() . Andrew, can you paste the wsdl ? Is there anything special in your wsdl file ?