Uploaded image for project: 'ServiceMix'
  1. ServiceMix
  2. SM-1863

Exceptions for SOAP calls after retrieving WSDL

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 3.3
    • Fix Version/s: 3.4.0
    • Component/s: servicemix-soap
    • Labels:
      None
    • Patch Info:
      Patch Available

      Description

      This filing is in response to an issue filed in the Apache ODE Jira https://issues.apache.org/jira/browse/ODE-155

      In a nutshell this issue is:
      1. Deploy a bpel process on the ODE engine
      2. Send a message to said process, observe correct behavior
      3. Retrieve the wsdl in a browser (i.e. http get)
      4. Resend message, observe "Unroutable invocation" exception

      This appears to be a bug in SMX, as it is unable to route the request to the OdeEngine once the wsdl has been retrieved.

      1. SM-1863-patch.txt
        2 kB
        Daniel Dominguez
      2. SM-1863-patch2.txt
        4 kB
        Daniel Dominguez

        Activity

        Hide
        danieldominguez Daniel Dominguez added a comment -

        Proposed patch for the org/apache/servicemix/soap/SoapEndpoint.java

        This patch sets the wsdlResource field on the SoapEndpoint object, which facilitates reparsing the wsdl when reloadWsdl is called.

        Show
        danieldominguez Daniel Dominguez added a comment - Proposed patch for the org/apache/servicemix/soap/SoapEndpoint.java This patch sets the wsdlResource field on the SoapEndpoint object, which facilitates reparsing the wsdl when reloadWsdl is called.
        Hide
        jb@nanthrax.net Jean-Baptiste Onofré added a comment -

        Thanks to Guillaume, the key code is in HttpEndpoint#reloadWsdl. It nullifies the description and reload the wsdl.
        The goal is to make sure the URL for the endpoint in the wsdl is right.
        This is done in #overrideDefinition.
        So I think a better solution would be to modify the AbstractWsdl1Deployer to set the wsdlResource property on the endpoint directly.

        Show
        jb@nanthrax.net Jean-Baptiste Onofré added a comment - Thanks to Guillaume, the key code is in HttpEndpoint#reloadWsdl. It nullifies the description and reload the wsdl. The goal is to make sure the URL for the endpoint in the wsdl is right. This is done in #overrideDefinition. So I think a better solution would be to modify the AbstractWsdl1Deployer to set the wsdlResource property on the endpoint directly.
        Hide
        danieldominguez Daniel Dominguez added a comment -

        I wanted to make the change in AbstractWsdl1Deployer#initFromWsdl. Problem is that we have an AbstractEndpoint here and the wsdlResource field is a member
        of SoapEndpoint, which is not visible from AbstractWsdl1Deployer.

        Should I move the wsdlResource field and it's setter/getter up to AbstractEndpoint? I think that's cleaner, but obviously a little more violent.

        Show
        danieldominguez Daniel Dominguez added a comment - I wanted to make the change in AbstractWsdl1Deployer#initFromWsdl. Problem is that we have an AbstractEndpoint here and the wsdlResource field is a member of SoapEndpoint, which is not visible from AbstractWsdl1Deployer. Should I move the wsdlResource field and it's setter/getter up to AbstractEndpoint? I think that's cleaner, but obviously a little more violent.
        Hide
        danieldominguez Daniel Dominguez added a comment - - edited

        Patch based on Jean-Baptiste's suggestion. This obsoletes the first patch.

        Show
        danieldominguez Daniel Dominguez added a comment - - edited Patch based on Jean-Baptiste's suggestion. This obsoletes the first patch.
        Hide
        jb@nanthrax.net Jean-Baptiste Onofré added a comment -

        Thanks Daniel for your patches.

        In fact, I'm going to analyze which one is the more safe

        Keep you posted via this task.

        Show
        jb@nanthrax.net Jean-Baptiste Onofré added a comment - Thanks Daniel for your patches. In fact, I'm going to analyze which one is the more safe Keep you posted via this task.
        Hide
        danieldominguez Daniel Dominguez added a comment -

        Any updates on this? Can one of my patches be applied?

        Show
        danieldominguez Daniel Dominguez added a comment - Any updates on this? Can one of my patches be applied?
        Hide
        jb@nanthrax.net Jean-Baptiste Onofré added a comment -

        Finally after reviewing the patches, I have applied the first one. The second one can have an impact on other endpoint.

        Show
        jb@nanthrax.net Jean-Baptiste Onofré added a comment - Finally after reviewing the patches, I have applied the first one. The second one can have an impact on other endpoint.

          People

          • Assignee:
            jb@nanthrax.net Jean-Baptiste Onofré
            Reporter:
            danieldominguez Daniel Dominguez
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development