Hello,
Raymond I've posted my interface in my last mail, after that
I did some tests.
When I send a SDO Object, all runs ok, but unfortunately for all SCA
users, return an SDO object is a problem even if HelperContext is
used.
For example:
1. SCADomain scaDomain =
SCADomain.newInstance("clinicalLaboratory.composite");
2. BiochemicalCircle service =
scaDomain.getService(BiochemicalCircle.class,"BiochemicalCircleComponent");
3. Laboratory lab = EntityFactory.INSTANCE.createLaboratory();
4. lab.setName("lab2");
5. biochemicalCircle.setLaboratory(lab);
6. Laboratory posibleLab = (Laboratory) service.getLaboratory("Lab2");
Line 5 works ok, SDO Laboratory object was send and name property was
read ok on server side.
Line 6 fails, I'm having always the same error:
java.lang.ClassCastException:
org.apache.tuscany.sdo.impl.AnyTypeDataObjectImpl
at $Proxy18.getLaboratory(Unknown Source)
Thanks,
Best Regards,
Sebastián Groh
2009/5/22 Sebastián Groh <[email protected]>:
> Hello Raymond,
>
> My Interface is quite simple:
>
> package services.bcircle;
>
> import java.util.ArrayList;
>
> import org.osoa.sca.annotations.Remotable;
>
> @Remotable
> public interface BiochemicalCircle{
>
>
> ArrayList<String> getLaboratoriesNames();
>
> model.sdo.Laboratory getLaboratory(String name);
>
> }
>
> I think that my problem is related with SDO HelperContext but I'm confused.
>
> Thanks,
> Sebastián
>
>
> On Fri, May 22, 2009 at 7:50 PM, Raymond Feng <[email protected]> wrote:
>> Hi,
>>
>> It seems that the SDO HelperContext is not correctly populated by Tuscany
>> based on the introspection of the Java interface that references the SDO
>> types. Can you post the BiochemicalCircle interface?
>>
>> Thanks,
>> Raymond
>>
>> --------------------------------------------------
>> From: "Sebastián Groh" <[email protected]>
>> Sent: Friday, May 22, 2009 2:47 PM
>> To: <[email protected]>
>> Subject: Re: WS bindings and SDO
>>
>>> Hello Again,
>>>
>>> I'm getting the same error using ws binding.
>>> If I try:
>>> SCADomain scaDomain =
>>> SCADomain.newInstance("clinicalLaboratory.composite");
>>> BiochemicalCircle service =
>>>
>>> scaDomain.getService(BiochemicalCircle.class,"BiochemicalCircleComponent");
>>> Laboratory lab = (Laboratory) service.getLaboratory("Lab2");
>>>
>>> I have the exception:
>>> java.lang.ClassCastException:
>>> org.apache.tuscany.sdo.impl.AnyTypeDataObjectImpl
>>> at $Proxy18.getLaboratory(Unknown Source)
>>>
>>> but if I simple do:
>>>
>>> BiochemicalCircle biochemicalCircle = new
>>> BiochemicalCircleImpl();
>>> Laboratory lab2 = biochemicalCircle.getLaboratory("Lab2");
>>>
>>> All runs ok.
>>>
>>> Invocation to BiochemicalCircle methods that not have SDO parameters
>>> (or return them) works fine even if SCADomain is used.
>>>
>>> Any in this list, know what I should do for solve this problem?
>>>
>>> Thanks,
>>> Sebastián
>>>
>>>
>>>
>>> 2009/5/21 Sebastián Groh <[email protected]>:
>>>>
>>>> Hello Kevin, Simon,
>>>>
>>>> cite:
>>>> Is the XSD you generated the SDO from included in your
>>>> contribution?
>>>>
>>>> Yes I'm including the XSD, but how and when should it be used?
>>>> I verified if wsdl generated have included schema types and there are
>>>> ok. I thought that was enough if the wsdl have schemas included. Is
>>>> this correct?
>>>>
>>>> Simon, you are rigth when you see AnyTypeDataObjectImpl instances is
>>>> becouse "If the ServiceFactory is not registered, the data (from the
>>>> inline schema of the WSDL) are then represented by
>>>> 'org.apache.tuscany.sdo.impl.AnyTypeDataObjectImpl' "
>>>>
>>>> What must I do? Use commonj.sdo.helper.HelperContext or not?
>>>>
>>>>
>>>> Any user in this list have errors like that?
>>>> Thanks for yours answers,
>>>> Regards,
>>>> Sebastián
>>>>
>>>> On Thu, May 21, 2009 at 6:50 AM, kelvin goodson <[email protected]>
>>>> wrote:
>>>>>
>>>>> 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
>>>>>>
>>>>>
>>>>
>>
>