[
https://issues.apache.org/jira/browse/CXF-4360?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13292481#comment-13292481
]
Richard Opalka commented on CXF-4360:
-------------------------------------
Hi Aki,
there's nothing special in there, it's just WS-RM validation handler. Here's
the code:
{code}
package org.jboss.as.test.integration.ws.wsrm;
import java.util.Iterator;
import java.util.Set;
import javax.xml.namespace.QName;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
import javax.xml.ws.WebServiceException;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.soap.SOAPHandler;
import javax.xml.ws.handler.soap.SOAPMessageContext;
import org.jboss.logging.Logger;
public class ReliableCheckHandler implements SOAPHandler<SOAPMessageContext> {
int invoked = 0;
private static Logger log = Logger.getLogger(ReliableCheckHandler.class);
public Set<QName> getHeaders() {
return null;
}
public boolean handleFault(SOAPMessageContext context) {
handleContext(context);
return true;
}
public boolean handleMessage(SOAPMessageContext context) {
handleContext(context);
return true;
}
private void handleContext(SOAPMessageContext smc) {
Boolean outboundProperty = (Boolean)
smc.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
SOAPMessage message = smc.getMessage();
invoked++;
if (outboundProperty.booleanValue()) {
log.debug("Outgoing message:");
} else {
log.debug("Incoming message:");
}
log.debug("-----------");
try {
message.writeTo(System.out);
log.debug("");
} catch (Exception e) {
log.debug("Exception in handler: " + e);
}
log.debug("-----------");
/*
* 1 -- Body - CreateSequence
* 2 -- Body - CreateSequenceResponse
* 3 -- Header - wsrm:Sequence
* 4 -- Header - wsrm:SequenceAcknowledgement
*/
try {
switch (invoked % 4) {
case 1:
SOAPElement firstBodyElement = (SOAPElement)
message.getSOAPBody().getChildElements().next();
if
(!"CreateSequence".equals(firstBodyElement.getNodeName())) {
throw new WebServiceException("CreateSequence in soap
body was expected, but it contains '"
+ firstBodyElement.getElementName() + "'");
}
break;
case 2:
firstBodyElement = (SOAPElement)
message.getSOAPBody().getChildElements().next();
if
(!"CreateSequenceResponse".equals(firstBodyElement.getNodeName())) {
throw new WebServiceException("CreateSequenceResponse
in soap body was expected, but it contains '"
+ firstBodyElement.getElementName() + "'");
}
break;
case 3:
Iterator headerElements =
message.getSOAPHeader().getChildElements();
boolean found = false;
while (headerElements.hasNext()) {
SOAPElement soapElement = (SOAPElement)
headerElements.next();
if ("wsrm:Sequence".equals(soapElement.getNodeName())) {
found = true;
}
}
if (!found) {
throw new WebServiceException("wsrm:Sequence is not
present in soap header");
}
break;
case 0:
headerElements = message.getSOAPHeader().getChildElements();
found = false;
while (headerElements.hasNext()) {
SOAPElement soapElement = (SOAPElement)
headerElements.next();
if
("wsrm:SequenceAcknowledgement".equals(soapElement.getNodeName())) {
found = true;
}
}
if (!found) {
throw new
WebServiceException("wsrm:SequenceAcknowledgement is not present in soap
header");
}
break;
}
} catch (SOAPException ex) {
throw new WebServiceException(ex.getMessage(), ex);
}
}
public void close(MessageContext context) {
}
}
{code}
> NPE in org.apache.cxf.interceptor.WrappedOutInterceptor when WS-RM is enabled
> -----------------------------------------------------------------------------
>
> Key: CXF-4360
> URL: https://issues.apache.org/jira/browse/CXF-4360
> Project: CXF
> Issue Type: Bug
> Components: WS-* Components
> Affects Versions: 2.6.1
> Environment: Reproducible on every environment.
> Reporter: Richard Opalka
> Fix For: 2.6.2, 2.7.0
>
> Attachments: CXF4360.patch, ReliableService.wsdl
>
>
> 09:52:29,353 WARNING [org.apache.cxf.phase.PhaseInterceptorChain]
> (http-localhost/127.0.0.1:8080-1) Interceptor for
> {http://www.jboss.org/jbossws/ws-extensions/wsrm}ReliableService#{http://www.jboss.org/jbossws/ws-extensions/wsrm}writeLogMessage
> has thrown exception, unwinding now: java.lang.NullPointerException
> at
> org.apache.cxf.interceptor.WrappedOutInterceptor.handleMessage(WrappedOutInterceptor.java:65)
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262)
> at
> org.apache.cxf.ws.addressing.impl.InternalContextUtils.rebaseResponse(InternalContextUtils.java:156)
> at
> org.apache.cxf.ws.addressing.impl.MAPAggregatorImpl.mediate(MAPAggregatorImpl.java:467)
> at
> org.apache.cxf.ws.addressing.impl.MAPAggregatorImpl.handleMessage(MAPAggregatorImpl.java:141)
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262)
> at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:122)
> at
> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:211)
> at
> org.jboss.wsf.stack.cxf.RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:91)
> at
> org.jboss.wsf.stack.cxf.transport.ServletHelper.callRequestHandler(ServletHelper.java:169)
> at org.jboss.wsf.stack.cxf.CXFServletExt.invoke(CXFServletExt.java:87)
> at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:187)
> at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:110)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
> [jboss-servlet-api_3.0_spec-1.0.1.Final.jar:1.0.1.Final]
> at org.jboss.wsf.stack.cxf.CXFServletExt.service(CXFServletExt.java:135)
> at org.jboss.wsf.spi.deployment.WSFServlet.service(WSFServlet.java:140)
> [jbossws-spi-2.1.0.Beta1.jar:2.1.0.Beta1]
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
> [jboss-servlet-api_3.0_spec-1.0.1.Final.jar:1.0.1.Final]
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329)
> [jbossweb-7.0.16.Final.jar:]
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
> [jbossweb-7.0.16.Final.jar:]
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
> [jbossweb-7.0.16.Final.jar:]
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
> [jbossweb-7.0.16.Final.jar:]
> at
> org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:156)
> [jboss-as-web-7.2.0.Alpha1-SNAPSHOT.jar:7.2.0.Alpha1-SNAPSHOT]
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
> [jbossweb-7.0.16.Final.jar:]
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> [jbossweb-7.0.16.Final.jar:]
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> [jbossweb-7.0.16.Final.jar:]
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368)
> [jbossweb-7.0.16.Final.jar:]
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
> [jbossweb-7.0.16.Final.jar:]
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:679)
> [jbossweb-7.0.16.Final.jar:]
> at
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:931)
> [jbossweb-7.0.16.Final.jar:]
> at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_32]
> 09:52:29,359 WARNING [org.apache.cxf.ws.addressing.impl.InternalContextUtils]
> (http-localhost/127.0.0.1:8080-1) SERVER_TRANSPORT_REBASE_FAILURE_MSG:
> org.apache.cxf.interceptor.Fault
> at
> org.apache.cxf.ws.addressing.impl.InternalContextUtils.rebaseResponse(InternalContextUtils.java:161)
> at
> org.apache.cxf.ws.addressing.impl.MAPAggregatorImpl.mediate(MAPAggregatorImpl.java:467)
> at
> org.apache.cxf.ws.addressing.impl.MAPAggregatorImpl.handleMessage(MAPAggregatorImpl.java:141)
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262)
> at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:122)
> at
> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:211)
> at
> org.jboss.wsf.stack.cxf.RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:91)
> at
> org.jboss.wsf.stack.cxf.transport.ServletHelper.callRequestHandler(ServletHelper.java:169)
> at org.jboss.wsf.stack.cxf.CXFServletExt.invoke(CXFServletExt.java:87)
> at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:187)
> at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:110)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
> [jboss-servlet-api_3.0_spec-1.0.1.Final.jar:1.0.1.Final]
> at org.jboss.wsf.stack.cxf.CXFServletExt.service(CXFServletExt.java:135)
> at org.jboss.wsf.spi.deployment.WSFServlet.service(WSFServlet.java:140)
> [jbossws-spi-2.1.0.Beta1.jar:2.1.0.Beta1]
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
> [jboss-servlet-api_3.0_spec-1.0.1.Final.jar:1.0.1.Final]
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329)
> [jbossweb-7.0.16.Final.jar:]
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
> [jbossweb-7.0.16.Final.jar:]
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
> [jbossweb-7.0.16.Final.jar:]
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
> [jbossweb-7.0.16.Final.jar:]
> at
> org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:156)
> [jboss-as-web-7.2.0.Alpha1-SNAPSHOT.jar:7.2.0.Alpha1-SNAPSHOT]
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
> [jbossweb-7.0.16.Final.jar:]
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> [jbossweb-7.0.16.Final.jar:]
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> [jbossweb-7.0.16.Final.jar:]
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368)
> [jbossweb-7.0.16.Final.jar:]
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
> [jbossweb-7.0.16.Final.jar:]
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:679)
> [jbossweb-7.0.16.Final.jar:]
> at
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:931)
> [jbossweb-7.0.16.Final.jar:]
> at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_32]
> Caused by: java.lang.NullPointerException
> at
> org.apache.cxf.interceptor.WrappedOutInterceptor.handleMessage(WrappedOutInterceptor.java:65)
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262)
> at
> org.apache.cxf.ws.addressing.impl.InternalContextUtils.rebaseResponse(InternalContextUtils.java:156)
> ... 27 more
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira