You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by "Simon Nash (JIRA)" <tu...@ws.apache.org> on 2008/03/14 15:46:24 UTC

[jira] Commented: (TUSCANY-2033) java interface exposed as service, annoted with javax.xml.ws.RequestWrapper(...) is ignoring the namespace

    [ 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: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org