Bug 781072 (SOA-3560)

Summary: NullPointerException when soap message sent with soap envelope in default namespace
Product: [JBoss] JBoss Enterprise SOA Platform 5 Reporter: Jiri Sedlacek <jsedlace>
Component: JBossWSAssignee: Default User <jbpapp-maint>
Status: CLOSED NEXTRELEASE QA Contact:
Severity: urgent Docs Contact:
Priority: urgent    
Version: 5.2.0.ER6CC: dance12, jsedlace, kevin.conner, oskutka, spybugs99
Target Milestone: ---   
Target Release: 5.2.0 GA, 5.2.0.CR1   
Hardware: Unspecified   
OS: Unspecified   
URL: http://jira.jboss.org/jira/browse/SOA-3560
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
JBossWS native stack
Last Closed: 2011-11-14 16:03:20 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Attachments:
Description Flags
reproducer_ws.tgz none

Description Jiri Sedlacek 2011-11-07 09:39:26 UTC
project_key: SOA

When SOAP request is sent to webservice, JBossWS throws NPE: 

10:24:32,763 ERROR [SOAPFaultHelperJAXWS] SOAP request exception
java.lang.NullPointerException
	at org.jboss.ws.core.soap.EnvelopeBuilderDOM.buildSOAPHeader(EnvelopeBuilderDOM.java:188)
	at org.jboss.ws.core.soap.EnvelopeBuilderDOM.build(EnvelopeBuilderDOM.java:164)
	at org.jboss.ws.core.soap.EnvelopeBuilderDOM.build(EnvelopeBuilderDOM.java:97)
	at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:294)
	at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:193)
	at org.jboss.wsf.stack.jbws.RequestHandlerImpl.processRequest(RequestHandlerImpl.java:451)
	at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleRequest(RequestHandlerImpl.java:294)
	at org.jboss.wsf.stack.jbws.RequestHandlerImpl.doPost(RequestHandlerImpl.java:203)
	at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:129)
	at org.jboss.wsf.common.servlet.AbstractEndpointServlet.service(AbstractEndpointServlet.java:85)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:183)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:95)
	at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
	at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:599)
	at org.apache.tomcat.util.net.JIoEndpoin

There is equals method on null String called in BuildSOAPHeader method (the same is in BuildSOAPBody method) when building DOM tree from SOAP message.

This affects also all stuff, which uses JBossWS to send/receive it's own SOAP messages (juddi-client, probably also ESB). 

Reproducer is attached.

Comment 1 Jiri Sedlacek 2011-11-07 09:40:23 UTC
Attachment: Added: reproducer_ws.tgz


Comment 2 Kevin Conner 2011-11-07 14:04:09 UTC
There may be more instances of this, for example a quick search in the same package shows the two occurrences mentioned by Jiri and also others in EnvelopeBuilderStax.java and SOAPHeaderImpl.java 

EnvelopeBuilderDOM.java:188:      if (!soapHeader.getPrefix().equals(domHeader.getPrefix()))
EnvelopeBuilderDOM.java:229:      if (!soapBody.getPrefix().equals(domBody.getPrefix()))

EnvelopeBuilderStax.java:400:      return !qName.getPrefix().equals(EMPTY_STRING) ? qName.getPrefix() + ":" + qName.getLocalPart() : qName.getLocalPart();
SOAPHeaderImpl.java:97:      if (qname == null || qname.getNamespaceURI().length() == 0 || qname.getPrefix().length() == 0)


Comment 3 Kevin Conner 2011-11-07 19:02:43 UTC
Issue caused by JBPAPP-5450

Comment 4 Kevin Conner 2011-11-07 19:10:42 UTC
Link: Added: This issue depends JBPAPP-7498


Comment 5 Kevin Conner 2011-11-07 19:26:26 UTC
Link: Removed: This issue depends JBPAPP-7498 


Comment 6 Kevin Conner 2011-11-07 19:31:13 UTC
Link: Added: This issue depends JBPAPP-7499


Comment 7 Jiri Sedlacek 2011-11-08 13:29:27 UTC
I tested patched jar provided by Kevin and it solves the problem.

Comment 8 Douglas Palmer 2011-11-09 11:18:25 UTC
Incorporated oneoff jar from JBPAPP-7499.

Comment 9 David Le Sage 2011-11-14 01:04:44 UTC
Release Notes Docs Status: Added: Not Required
Writer: Added: dlesage


Comment 10 Jiri Sedlacek 2011-11-14 16:03:20 UTC
Verified in 5.2.0.CR1

Comment 11 spybugs99 2012-05-09 01:27:14 UTC
Is this going to be rolled into the jbossws stack for EAP?

Comment 12 dance12 2012-09-10 10:03:38 UTC
This affects EAP 4.3 CP10 as well.