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 Laws (Closed) (JIRA)" <de...@tuscany.apache.org> on 2012/01/06 13:21:39 UTC

[jira] [Closed] (TUSCANY-4000) WS binding: ClassCastException: org.apache.tuscany.sca.interfacedef.wsdl.impl.WSDLInterfaceImpl incompatible with org.apache.tuscany.sca.interfacedef.java.JavaInterface

     [ https://issues.apache.org/jira/browse/TUSCANY-4000?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Simon Laws closed TUSCANY-4000.
-------------------------------

       Resolution: Fixed
    Fix Version/s: Java-SCA-2.0

Fix committed at revision: 1228143
                
> WS binding: ClassCastException: org.apache.tuscany.sca.interfacedef.wsdl.impl.WSDLInterfaceImpl incompatible with org.apache.tuscany.sca.interfacedef.java.JavaInterface
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: TUSCANY-4000
>                 URL: https://issues.apache.org/jira/browse/TUSCANY-4000
>             Project: Tuscany
>          Issue Type: Bug
>          Components: Java SCA Axis Binding Extension
>    Affects Versions: Java-SCA-2.0-Beta3
>            Reporter: Rashmi Hunt
>            Assignee: Simon Laws
>             Fix For: Java-SCA-2.0
>
>
> WS Binding reference with WSDL interface with a WSDL callback interface
> <---invoking---> WS Binding Service with WSDL interface with a WSDL callback interface
> throws ClassCastException when Tuscany tries to cast WSDLInterfaceImpl to JavaInterface
> at JavaImplementationInvoker.invoke() method, at (JavaInterface)interfaze.getCallbackInterface()
>             // If there is a callback interface and the implementation is stateless, we need to
>             // inject callbacks at invocation time. For Composite scope, this has already been done. 
>             if (( interfaze.getCallbackInterface() != null )  && (scopeContainer.getScope().equals(Scope.STATELESS))){
>             	injectCallbacks(wrapper, (JavaInterface)interfaze.getCallbackInterface());
>             }
> This exception occurs when Web Service message reaches service implementation which eventually invokes 
> JavaImplementationInvoker.invoke()
> The above code is assuming that interfaze.getCallbackInterface() will return instance of JavaInterface.
> What if the callback interface on both service and reference are using WSDL interface?
> Shouldn't above logic take care of WSDL interface case?
> Exception stack,
> Caused by: java.lang.ClassCastException: org.apache.tuscany.sca.interfacedef.wsdl.impl.WSDLInterfaceImpl incompatible with org.apache.tuscany.sca.interfacedef.java.JavaInterface
> 	at org.apache.tuscany.sca.implementation.java.invocation.JavaImplementationInvoker.invoke(JavaImplementationInvoker.java:117)
>         ...............
> 	at org.apache.tuscany.sca.core.invocation.InterceptorAsyncImpl.invoke(InterceptorAsyncImpl.java:58)
> 	at org.apache.tuscany.sca.core.invocation.RuntimeInvoker.invoke(RuntimeInvoker.java:126)
> 	at org.apache.tuscany.sca.core.invocation.RuntimeInvoker.invoke(RuntimeInvoker.java:109)
> 	at org.apache.tuscany.sca.core.assembly.impl.RuntimeEndpointImpl.invoke(RuntimeEndpointImpl.java:328)
> components,
>     <component name="MyComponent">
>         <implementation.java class="samples.MyServiceImpl"/>
>         <service name="MyService">
>             <interface.wsdl interface="http://www.mybank.com/account#wsdl.interface(MyService)" 
> 		callbackInterface="http://www.mybank.com/account#wsdl.interface(MyServiceCallback)" />
>             	
> 		<binding.ws 
> 			 wsdlElement="http://www.mybank.com/account#wsdl.port(MyService/MyServicePort)"
> 		 />
> 	      	 <callback>
> 	           		<binding.ws name="MyServiceCallback"/>
> 	      	 </callback>
>         </service>
>     </component>
>     <component name="MySummaryService">
>       <implementation.java class="samples.MySummaryServiceImpl"/>
>       <reference name="myService">
>           <interface.wsdl interface="http://www.mybank.com/account#wsdl.interface(MyService)" 
> 		callbackInterface="http://www.mybank.com/account#wsdl.interface(MyServiceCallback)" />
>          
> 	  <binding.ws wsdlElement="http://www.mybank.com/account#wsdl.port(MyService/MyServicePort)" />
> 	       <callback>
> 	           <binding.ws wsdlElement="http://www.mybank.com/account#wsdl.binding(MyServiceCallback)"/>
> 	       </callback>
>       </reference>
>     </component>

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira