Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-6326

Unable to add custom property named "SOAPAction" to JMS header when using SOAP over JMS

    XMLWordPrintableJSON

    Details

    • Type: Test
    • Status: Closed
    • Priority: Major
    • Resolution: Implemented
    • Affects Version/s: 3.0.4
    • Fix Version/s: 3.0.4
    • Component/s: Core, JMS, Transports
    • Labels:
    • Environment:

      Sun JDK 1.7_update 26

      Server: TIBCO BW 5.12, TIBCO EMS 8.1
      Client: CXF 3.0.4

      Description

      This issue was mentioned by this link: http://mail-archives.apache.org/mod_mbox/cxf-users/201010.mbox/%3CAANLkTi=nPFy39=sjr-nLpkjWpxNy2vHYhe4OL8t_FaX2@mail.gmail.com%3E

      However, when using CXF 3.0.4 I was unable to add "SoapAction" custom property to PROPOTOL_HEADERS, although different name was added ok (eg: "SoapAction2"). Therefore, TIBCO BusinessWork can not activate server thread to process service request.

      This is my custom Interceptor to add custom header:
      // The class
      public class TibcoSoapActionInterceptor extends AbstractSoapInterceptor {

      private static final String SOAPACTION_TIBCO = "SoapAction";

      public TibcoSoapActionInterceptor()

      { super(Phase.PREPARE_SEND); }

      @Override
      public void handleMessage(SoapMessage soapMessage) throws Fault {

      Map<String, Object> headers = (Map<String, Object>) soapMessage.get(Message.PROTOCOL_HEADERS);

      if (headers != null && headers.containsKey(SoapBindingConstants.SOAP_ACTION))

      { // this custom property was replaced by "SOAPJMS_soapAction" standard name headers.put(SOAPACTION_TIBCO, headers.get(SoapBindingConstants.SOAP_ACTION)); // This header property was added ok headers.put(SOAPACTION_TIBCO + "2", headers.get(SoapBindingConstants.SOAP_ACTION)); }

      }

      }

      // The code to add interceptor
      // Add interceptors
      factory.getOutInterceptors().add(new LoggingOutInterceptor());
      factory.getOutInterceptors().add(new TibcoSoapActionInterceptor());

      // create client proxy
      CalculatorPortType port = (CalculatorPortType) factory.create();

      Please help to check it out as are there another way to add "SOAPAction" custom property to JMS header when using SOAP over JMS (i know TIBCO BW does not fully compatible with SOAP JMS standard but I'm using it in production) ?

      Many thanks!!!

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              langlv Le Van Lang
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Time Tracking

                Estimated:
                Original Estimate - 48h
                48h
                Remaining:
                Remaining Estimate - 48h
                48h
                Logged:
                Time Spent - Not Specified
                Not Specified