I'm no expert on how SCA uses SDO, but I do understand the SDO side of
this, which may help you or someone else get to how to fix this within
SCA.  The time that you see instances of AnyTypeDataObjectImpl
appearing is when an SDO deserialization operation has no metadata
within its operating context to describe an object it is trying to
deserialize, so it falls back on a very weak default model of data
embodied in the built-in AnyTypedataObject SDO class.

Either the SCA infrastructure or you must arrange for the generated
SDO factory associated with your Laboratory class to be known to the
relevant instance of SDO's HelperContext class. My feeling is there is
most probably a way to influence SCA to do this for you,  but I don't
know how.  At the Tuscany SDO API level, the metadata registration is
done via the Factory's register(HelperContext scope)  method, so you
could watch for calls to that method on the factory impl.

Kelvin.



2009/5/21 Simon Laws <[email protected]>:
> 2009/5/21 Sebastián Groh <[email protected]>:
>> Hello, I'm trying to work with an SCA Composite that use ws binding.
>> My component definition:
>>  <sca:component name="BiochemicalCircleComponent">
>>    <sca:implementation.java class="services.bcircle.BiochemicalCircleImpl"/>
>>    <sca:service name="BiochemicalCircle">
>>        <sca:interface.java interface="services.bcircle.BiochemicalCircle"/>
>>        <sca:binding.ws uri="http://localhost:8080/SCA1/MyServiceComponent"/>
>>    </sca:service>
>>  </sca:component>
>>
>>
>>
>> The service retrieve a SDO object (Laboratory) that I generated from
>> XSD without problems.
>> I deployed the project on Apache Tomcat/5.5.27 and I'm using this
>> service from a jsp page as follows:
>>
>> (my includes)
>> .
>> .
>> .
>> <% SCADomain scaDomain = 
>> SCADomain.newInstance("clinicalLaboratory.composite");
>>       BiochemicalCircle service =
>> scaDomain.getService(BiochemicalCircle.class,
>> "BiochemicalCircleComponent");
>>
>>        Laboratory lab = (Laboratory) service.getLaboratory("Lab2");
>> .
>> .  (more logic)
>> .
>>
>> %>
>>
>>
>> In line
>>          Laboratory lab = (Laboratory) service.getLaboratory("Lab2");
>>
>> I have the exception:
>>        java.lang.ClassCastException:
>> org.apache.tuscany.sdo.impl.AnyTypeDataObjectImpl
>>        at $Proxy18.getLaboratory(Unknown Source)
>>
>> I have also tried to use the class commonj.sdo.helper.HelperContext to
>> set a scope for my SDOFactory but I'm having the same exception.
>>
>> Anyone in this list know to solve this error?
>> Regards,
>>                Sebastián
>>
>
> Hi Sebastien
>
> Is the XSD you generated the SDO from included in your contribution?
> I'm looking at the 1.x sample helloworld-ws-sdo-webapp and can't
> actually see that the SDO types are specified explicitly but the XSD
> used to generate them is included. Any of the SDO experts out there
> know how we should be describing the SDO context in SCA?
>
> Simon
>

Reply via email to