Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 947862

Summary: Action Name requirement introduced with previous fix-- causes regression
Product: [JBoss] JBoss Enterprise SOA Platform 5 Reporter: Rick Wagner <rwagner>
Component: JBossESBAssignee: Tadayoshi Sato <tasato>
Status: CLOSED CURRENTRELEASE QA Contact:
Severity: high Docs Contact:
Priority: high    
Version: 5.3.1CC: rwagner, soa-p-jira, tasato
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 902156 Environment:
Last Closed: 2014-02-24 07:12:15 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:
Embargoed:
Bug Depends On: 902156    
Bug Blocks: 923870    

Description Rick Wagner 2013-04-03 12:41:47 UTC
+++ This bug was initially created as a clone of Bug #902156 +++

It is suspected that a change by this BZ's parent (902156) has introduced a regression.  

The regression is described in comment 13 of BZ915386 [1].

Please investigate, correct if necessary.

Thank you.

[1] https://bugzilla.redhat.com/show_bug.cgi?id=915386

Comment 1 Tadayoshi Sato 2013-04-04 07:30:57 UTC
Hi Rick,

No, this regression is by no means caused by BZ902156. The error [1] reproduced by comment 13 of BZ915386 indicates it stems from the invoked web service not SOAPClient. And I confirmed in my environment that if all BZ915386 patches but CXF upgrade is applied  the error doesn't happen. I believe the root cause should be found in the following BZs:
- [BZ-858926] [CVE-2012-3451] jbossws-cxf, apache-cxf: SOAPAction spoofing on document literal web services
- [BZ-896338] [CVE-2012-5633] jbossws-cxf, apache-cxf: Bypass of security constraints on WS endpoints

I also doubt that this is a regression of JBoss ESB or SOA-P as no behaviours in JBoss ESB seem to change; what's changed is JBoss WS. So, should we close this BZ and chase it as a JBoss WS regression instead?

Thank you!

[1]
15:33:39,174 WARNING [PhaseInterceptorChain] Interceptor for {http://webservice_consumer1/helloworld}HelloWorldWSService#{http://webservice_consumer1/helloworld}sayHello has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: The given SOAPAction sayHello does not match an operation.
	at org.apache.cxf.binding.soap.interceptor.SoapActionInInterceptor$SoapActionInAttemptTwoInterceptor.handleMessage(SoapActionInInterceptor.java:192)
	at org.apache.cxf.binding.soap.interceptor.SoapActionInInterceptor$SoapActionInAttemptTwoInterceptor.handleMessage(SoapActionInInterceptor.java:164)
	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:111)
	at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:99)
	at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:431)
	at org.jboss.wsf.stack.cxf.ServletControllerExt.invoke(ServletControllerExt.java:173)
	at org.jboss.wsf.stack.cxf.RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:61)
	at org.jboss.wsf.stack.cxf.CXFServletExt.invoke(CXFServletExt.java:185)
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
	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.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.internalProcess(ActiveRequestResponseCacheValve.java:74)
	at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:47)
	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.JIoEndpoint$Worker.run(JIoEndpoint.java:451)
	at java.lang.Thread.run(Thread.java:722)

Comment 2 Tadayoshi Sato 2013-04-04 08:15:17 UTC
I now understand that SOAPClient [1] has to be changed to conform with CXF upgrade introduced by BZ915386 (more specifically BZ858926 or BZ896338). I will file a different BZ for this issue.

[1] JBESB_4_11_CP2/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPClient.java
523         PostMethod post = new PostMethod(endpoint);
524 
525         post.setRequestHeader("Content-Type", contentType);
526         post.setRequestHeader("Connection", "keep-alive");
527         post.setRequestHeader("SOAPAction", "\"" + soapAction + "\"");  /// Customization to add quotes to Soap action

Comment 3 Tadayoshi Sato 2013-04-04 08:46:59 UTC
FYI, this patch resolves the issue.

--- webservice_consumer1/war/src/org/jboss/soa/esb/samples/quickstart/webservice_consumer1/HelloWorldWS.java
+++ webservice_consumer1/war/src/org/jboss/soa/esb/samples/quickstart/webservice_consumer1/HelloWorldWS.java
@@ -28,7 +28,7 @@ import javax.jws.WebParam;
 @WebService(name = "HelloWorld", targetNamespace = "http://webservice_consumer1/helloworld")
 public class HelloWorldWS
 {
-   @WebMethod
+   @WebMethod(action = "sayHello")
    public String sayHello(@WebParam(name = "toWhom")
    String toWhom)
    {

Comment 5 Tadayoshi Sato 2013-05-14 08:30:45 UTC
I created a JIRA [1] to fix the two quickstarts upstream.
[1] https://issues.jboss.org/browse/JBESB-3923

Comment 6 Tadayoshi Sato 2013-05-17 02:30:57 UTC
Fixed upstream. Please backport it to the 5.3.1 branch. Thank you.