Hi,

These are all good comments. I suggest that we carry on discussions on tuscany-dev ML instead of JIRA :-).

Raymond

--------------------------------------------------
From: "Mike Edwards (JIRA)" <[email protected]>
Sent: Thursday, April 10, 2008 6:02 AM
To: <[email protected]>
Subject: [jira] Commented: (TUSCANY-2109) Conflicts between component reference interface and promoted composite reference interface are not detected


[ https://issues.apache.org/jira/browse/TUSCANY-2109?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12587629#action_12587629 ]

Mike Edwards commented on TUSCANY-2109:
---------------------------------------

Folks,

It is right to be concerned over the interface matching, but let's not lose sight of the context here.

In general, there are two scenarios to consider:

a) the reference is to a service which is defined within the SCA domain and SCA means are used to wire it b) the reference is to a service which is outside the SCA domain and wiring is through configuration of a specific binding and target endpoint

In case a) it is possible that a Java interface as used by the client in its reference is exactly the same (file) as is being used by the provider in the service interface. If this is so, then in general, even if WSDL is generated, the reference and the target service are going to match, assuming that the same rules are followed at both ends for generating WSDL. (They should be following JAX-WS according to the specs).

In case b), the normal situation would be for the client to be constructed using a Java interface derived from the target WSDL using the WSDL2JAVA tooling. While the reference targets the original service from which the WSDL came, there should be no problem, even if the reference itself is typed in terms of the Java interface.

Things get interesting if the target service gets changed - and if the WSDL describing the interface changes. Now, to first order, you might say that if the WSDL is different, how do you know that the new service is compatible with the old one? Even if the operation names match and the input and output messages have the same structure, if the namespaces differ, there is no guarantee that the two services are actually compatible.

This is an area where ESB style mediations come into play. Let's assume that the target service does use a different namespace, but that the operations and messages otherwise map. There is still a mediation necessary, since the transmitted messages will use the "wrong" namespace - the mediation simply has to remap the namespace when sending and receiving messages. More complex mediations are possible, where perhaps the operation names and message names don't match, although the structure and semantics do match.

The question for us folks in SCA-land is whether we want to model mediations of this type as explicit components, with services and references that match the reference and endpoint that they are trying to mediate, or whether we want to extend our bindings definition to allow configuration of mediations "within the bindings". The explicit component always works - and it can in principle perform much more complex meditations too (eg wholesale message trasnformation). The question is more whether it could be simpler, for simple mediations, to manage the mediations "within the bindings".


Yours,  Mike.

Conflicts between component reference interface and promoted composite reference interface are not detected
------------------------------------------------------------------------------------------------------------

                Key: TUSCANY-2109
                URL: https://issues.apache.org/jira/browse/TUSCANY-2109
            Project: Tuscany
         Issue Type: Bug
         Components: Java SCA Core Runtime
   Affects Versions: Java-SCA-1.1
        Environment: All
           Reporter: Simon Nash
           Assignee: Simon Laws
            Fix For: Java-SCA-Next

        Attachments: jira2109.patch, jira2109.zip


See TUSCANY-2033 for the background to this problem.
When a component reference defined with <interface.java> (either explicitly or implicitly by introspection) is promoted to a composite reference defined with <interface.wsdl>, and there is a namespace conflict between the component reference's <interface.java> and the composite reference's <interface.wsdl>. this conflict should be diagnosed as an error because it violates the spec rule that an interface specified on a composite reference must be a compatible superset of the interface of the promoted component reference. In this case, the composite interface is incompatible with the component reference because it has a different namespace. There is code in CompositeWireBuilderImpl.connectCompositeReferences() to handle connections between composite references and promoted compoennt references. The only interface processing performed in this method is to copy the component reference's interface contract to the composite reference's interface contract if the composite reference does not have an interface contract. Code should be added here to check for conflicts between the composite reference's interface and the component reference's interface if both interfaces are specified. Similar code should be added to CompositeWireBuilderImpl.connectCompositeServices() to check that the composite service interface is a compatible subset of the component service interface as required by the spec.

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to