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

Simon Nash commented on TUSCANY-2033:
-------------------------------------

Ths problem is related to promotion of the reference.  The component reference 
is defined with <interface.java> (this happens implicitly by introspection 
because there is no explicit interface in the composite file).  When the 
component reference is promoted to a composite reference, 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 becuase 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.


> java interface exposed as service, annoted with 
> javax.xml.ws.RequestWrapper(...) is ignoring the namespace
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: TUSCANY-2033
>                 URL: https://issues.apache.org/jira/browse/TUSCANY-2033
>             Project: Tuscany
>          Issue Type: Bug
>          Components: Java SCA Axis Binding Extension
>    Affects Versions: Java-SCA-1.0.1
>            Reporter: clemens utschig
>            Assignee: Raymond Feng
>            Priority: Critical
>             Fix For: Java-SCA-Next
>
>         Attachments: EmpFlexFieldService.java, EmpFlexFieldService.wsdl, 
> SDOReferenceBinding.zip
>
>
> I have a composite defined that uses an external referenced webservice which 
> provides SDOs
> <?xml version="1.0" encoding="UTF-8"?>
> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0";
>            targetNamespace="/model/common/"
>             
> xmlns:dbsdo="http://tuscany.apache.org/xmlns/sca/databinding/sdo/1.0";
>             name="FlexEmployeeComposite" xmlns:tns="/model/common/types/"
>             xmlns:types="/model/common/types/"
>             xmlns:errors="http://xmlns.oracle.com/adf/svc/errors/";
>             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";>
>    <component name="FlexEmployeeServiceComponent">
>      <implementation.java 
> class="com.oracle.soa.test.tuscany.impl.EmployeeServiceComponent"/>
>      <reference name="empFlexFieldService"/>
>    </component>
>   <reference name="empFlexFieldService"
>               promote="FlexEmployeeServiceComponent/empFlexFieldService">
>      <interface.java 
> interface="model.common.serviceinterface.EmpFlexFieldService"/>
>      <binding.ws 
> uri="http://localhost:1234/Application4710-Model-context-root/EmpFlexFieldService"/>
>    </reference>
>  </composite>
> The java interface that is promoted as service interface / and reflects the 
> webservice endpoint, contains jaxws annotations for namespaces as below ..
> @javax.jws.soap.SOAPBinding(parameterStyle=javax.jws.soap.SOAPBinding.ParameterStyle.WRAPPED,
>  
>     style=javax.jws.soap.SOAPBinding.Style.DOCUMENT)
> @javax.jws.WebService(targetNamespace="/model/common/", 
> name="EmpFlexFieldService", 
>     wsdlLocation="model/common/serviceinterface/EmpFlexFieldService.wsdl")
> @oracle.j2ee.ws.common.sdo.SchemaLocation(value="model/common/serviceinterface/EmpFlexFieldService.xsd")
> public interface EmpFlexFieldService {
>     public static final String NAME = 
>         new QName("/model/common/", "EmpFlexFieldService").toString();
>     @javax.jws.WebMethod(action="/model/common/getEmployees1", 
> operationName="getEmployees1")
>     @javax.xml.ws.RequestWrapper(targetNamespace="/model/common/types/", 
>         localName="getEmployees1")
>     @javax.xml.ws.ResponseWrapper(targetNamespace="/model/common/types/", 
>         localName="getEmployees1Response")
>     @javax.jws.WebResult(name="result")
>     DataObject 
> getEmployees1(@javax.jws.WebParam(mode=javax.jws.WebParam.Mode.IN, 
>             name="empno")
>         Integer empno) throws ServiceException;
> At runtime - axis generates the following soap message - which is derived 
> from the base targetNamespace
> >     <?xml version='1.0' encoding='UTF-8'?>
> >     <soapenv:Envelope 
> > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
> >             <soapenv:Body>
> >                     <_ns_:getEmployees1 xmlns:_ns_="/model/common/">
> >                             <empno xmlns="/model/common/">1</empno>
> >                     </_ns_:getEmployees1>
> >             </soapenv:Body>
> >     </soapenv:Envelope>
> obviously this is wrong - it should be ..
> > <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
> >     <soap:Body xmlns:ns1="/model/common/types/">
> >         <ns1:getEmployees1>
> >             <ns1:empno></ns1:empno>
> >         </ns1:getEmployees1>
> >     </soap:Body>
> > </soap:Envelope>

-- 
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]

Reply via email to