glassfish
  1. glassfish
  2. GLASSFISH-15316

Endpoint linked to a wrong provider ServiceEndpoint although defined otherwise in the service assembly

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Critical Critical
    • Resolution: Unresolved
    • Affects Version/s: v2.1, v2.1.1
    • Fix Version/s: None
    • Component/s: jbi
    • Labels:
      None

      Description

      I have two clients (say ServiceB and ServiceC) consuming the same service, say ServiceA. The connection between endpoints, here in refered as "wiring", in the service assemblies looks like

      ServiceAssembly-1

      • ServiceB wired internally to ServiceA
      • HTTP-BC-Port wired to ServiceA

      ServiceAssembly-2

      • ServiceC wired to HTTP-BC-Port

      Having ServiceAssembly-1 and ServiceAssembly-2 deployed, when I invoke ServiceB (which inturn invokes ServiceA), all calls to ServiceA are routed via HTTP-BC and not invoked internally as wired.

      But JBI Specification 1.0 specifies that the wiring should be valid within the defined ServiceAssembly.

      Also looked in the com.sun.jbi.messaging.EndpointRegistry implementation. In the method, while linking endpoints in the method
      addEndpointConnection(addEndpointConnection(QName fromService, String fromEndpoint, QName toService, String toEndpoint, Link linkType)

      no ServiceAssembly name is used which leads to wrong routing of service invocations at run time.

        Activity

        Hide
        Bala added a comment - - edited

        Steps to reproduce the wrong wiring error with the given test projects (see attachment)
        -----------------------------------------------------------------------------------------

        • Start glassfish v2.1 or v2.1.1 and set the sun-http-binding logger to FINE. So that we know that the request goes through HTTP-BC
        • Deploy ServiceAssembly1
        • Invoke the URL - http://localhost:8080/ServiceB/ServiceInvoker
          ServiceB servlet invokes ServiceA internally as expected (no logs from HTTP-BC to be seen)
        • Deploy ServiceAssembly2
        • Invoke the above given URL again
          Now ServiceB suddenly invokes ServiceA over HTTP-BC (!!!NOT expected)

        From here calls to either

        http://localhost:8080/ServiceB/ServiceInvoker [OR]
        http://localhost:8080/ServiceC/ServiceInvoker

        will always invoke ServiceA via HTTP-BC

        Show
        Bala added a comment - - edited Steps to reproduce the wrong wiring error with the given test projects (see attachment) ----------------------------------------------------------------------------------------- Start glassfish v2.1 or v2.1.1 and set the sun-http-binding logger to FINE. So that we know that the request goes through HTTP-BC Deploy ServiceAssembly1 Invoke the URL - http://localhost:8080/ServiceB/ServiceInvoker ServiceB servlet invokes ServiceA internally as expected (no logs from HTTP-BC to be seen) Deploy ServiceAssembly2 Invoke the above given URL again Now ServiceB suddenly invokes ServiceA over HTTP-BC (!!!NOT expected) From here calls to either http://localhost:8080/ServiceB/ServiceInvoker [OR] http://localhost:8080/ServiceC/ServiceInvoker will always invoke ServiceA via HTTP-BC

          People

          • Assignee:
            Bhavanishankar
            Reporter:
            Bala
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated: