Uploaded image for project: 'JBoss ESB'
  1. JBoss ESB
  2. JBESB-3418

shorthand internal:// URI format causes problems

    Details

    • Affects:
      Compatibility/Configuration

      Description

      Before doing JBESB-3410 and JBESB-3400, I believe we need to re-visit why we changed the internal:// URI format for the SOAPProxy wsdl configuration property.

      Originally, a wsdl property would look like this:
      <property name="wsdl" value="internal://jboss.ws:context=Quickstart_webservice_proxy_basic_ws,endpoint=HelloWorldWS"/>
      The value after the "internal://" sheme is the full mbean name of that web service. This was done because "HelloWorldWS" is not specific enough.

      Now, it looks like this:
      <property name="wsdl" value="internal://HelloWorldWS"/>
      The value after the "internal://" schem is the shorthand name of that web service.

      The problem is that two different applications could be deployed that each call their web service "HelloWorldWS". The full mbean name was chosen because it is fully unique in the system - per deployment as well as web service short-hand name.

      In trunk (for 4.9), as part of the work for JBESB-3372, the internal:// URI syntax was shortend to just the short-hand name of the web service. I have discovered that this does, in fact, cause problems. What I did was dupicate the webservice_proxy_basic quickstart to webservice_proxy_test. Inside it, I besides changing the deployment name, I went through and changed everywhere I saw "hello" with "goodbye". However, I LEFT THE SHORTHAND name of "HelloWorldWS" the same. On deployment, this is what I saw:

      15:36:23,222 INFO [DefaultEndpointRegistry] register: jboss.ws:context=Quickstart_webservice_proxy_test_ws,endpoint=HelloWorldWS
      15:36:23,227 INFO [TomcatDeployer] deploy, ctxPath=/Quickstart_webservice_proxy_test_ws, warUrl=.../tmp/deploy/tmp5058294535306107812Quickstart_webservice_proxy_test_ws-exp.war/
      15:36:23,439 INFO [WSDLFilePublisher] WSDL published to: file:/home/dward/repos/jbossesb/trunk/product/build/jbossesb-server-4.9/server/default/data/wsdl/Quickstart_webservice_proxy_test_ws.war/HelloWorldWSService1656390998107952897.wsdl
      15:36:23,465 INFO [JBoss4ESBDeployer] create esb service, Quickstart_webservice_proxy_test.esb
      15:36:23,499 INFO [JBoss4ESBDeployment] Deploying 'Quickstart_webservice_proxy_test.war'
      15:36:23,506 INFO [TomcatDeployer] deploy, ctxPath=/Quickstart_webservice_proxy_test, warUrl=.../tmp/deploy/tmp6427004333585839758Quickstart_webservice_proxy_test-exp.war/
      15:36:23,693 INFO [SOAPProxy] mapped soapaction [""] to binding [

      {http://webservice_proxy_test/goodbyeworld}

      HelloWorldBinding]
      15:36:23,693 INFO [SOAPProxy] mapped operation [

      {http://webservice_proxy_test/goodbyeworld}

      sayGoodbye] to binding [

      {http://webservice_proxy_test/goodbyeworld}

      HelloWorldBinding]
      15:36:23,693 INFO [SOAPProxy] mapped binding [

      {http://webservice_proxy_test/goodbyeworld}

      HelloWorldBinding] to transport [org.jboss.soa.esb.actions.soap.proxy.HttpSOAPProxyTransport] with endpoint address: http://127.0.0.1:8080/Quickstart_webservice_proxy_test_ws/HelloWorldWS

      15:36:38,743 INFO [DefaultEndpointRegistry] register: jboss.ws:context=Quickstart_webservice_proxy_basic_ws,endpoint=HelloWorldWS
      15:36:38,748 INFO [TomcatDeployer] deploy, ctxPath=/Quickstart_webservice_proxy_basic_ws, warUrl=.../tmp/deploy/tmp5564876594631336257Quickstart_webservice_proxy_basic_ws-exp.war/
      15:36:38,945 INFO [WSDLFilePublisher] WSDL published to: file:/home/dward/repos/jbossesb/trunk/product/build/jbossesb-server-4.9/server/default/data/wsdl/Quickstart_webservice_proxy_basic_ws.war/HelloWorldWSService4562073185226278059.wsdl
      15:36:38,967 INFO [JBoss4ESBDeployer] create esb service, Quickstart_webservice_proxy_basic.esb
      15:36:39,002 INFO [JBoss4ESBDeployment] Deploying 'Quickstart_webservice_proxy_basic.war'
      15:36:39,012 INFO [TomcatDeployer] deploy, ctxPath=/Quickstart_webservice_proxy_basic, warUrl=.../tmp/deploy/tmp6238185939414067851Quickstart_webservice_proxy_basic-exp.war/
      15:36:39,227 INFO [SOAPProxy] mapped soapaction [""] to binding [

      {http://webservice_proxy_test/goodbyeworld}

      HelloWorldBinding]
      15:36:39,228 INFO [SOAPProxy] mapped operation [

      {http://webservice_proxy_test/goodbyeworld}

      sayGoodbye] to binding [

      {http://webservice_proxy_test/goodbyeworld}

      HelloWorldBinding]
      15:36:39,228 INFO [SOAPProxy] mapped binding [

      {http://webservice_proxy_test/goodbyeworld}

      HelloWorldBinding] to transport [org.jboss.soa.esb.actions.soap.proxy.HttpSOAPProxyTransport] with endpoint address: http://127.0.0.1:8080/Quickstart_webservice_proxy_test_ws/HelloWorldWS

      If you read the log lines, you will see that the mapping for BOTH deployments is using the "goodbye"-based contract. I believe this is because "HelloWorldWS" is not unique enough. The deployment name has to be in the internal:// URI as well as the shorthand webservice name. For the same reason, the proxy contracts found in http://localhost:8080/contract/ are also both the same (so one of them is wrong).

      Additionally, and this is just my opinion, changing the format of the internal:// wsdl URI means that all our customers and users who use the original format have to know to change it to the new format. Even if the new format worked (which it doesn't), if the reason for this was only cosmetic, I believe that's not a good enough reason to cause pain for all the customers and users.

        Gliffy Diagrams

          Attachments

            Activity

              People

              • Assignee:
                mageshbk Magesh Bojan
                Reporter:
                dward David Ward
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: