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