Hi Raymond,
                    thanks for your answer. I debug my application and sca
source.
Next I will try to explain the invocation chain:

When JDKInvocationHandler calls method invoke(InvocationChain chain,
Object[] args, RuntimeWire wire, EndpointReference source)

line 288: Message resp = headInvoker.invoke(msg); // invocation occurs
without errors
line 289: Object body = resp.getBody(); // Returns an
org.apache.tuscany.sdo.impl.AnyTypeDataObjectImpl object

It seems that body was not instantiated with the correct class.


Cite:
        " I suggest that you open a JIRA and attach the test case there so
that we can debug."
I'll try this, i never did that before. What I need to post there?

For the moment I'll publish my problem here.

*My XSD file is:*
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema";
   targetNamespace="
http://eclipse.org/SCAExample1/src/resources/clinicalLaboratory";
   xmlns:tns="
http://eclipse.org/SCAExample1/src/resources/clinicalLaboratory";
   elementFormDefault="qualified">
   <complexType name="Practice">
       <sequence>
           <element name="name" type="string" />
       </sequence>
   </complexType>
   <complexType name="Laboratory">
       <sequence>
           <element name="name" type="string" />
           <element name="practices" type="tns:Practice"
maxOccurs="unbounded"/>
        </sequence>
   </complexType>
</schema>

*Composite file:*
<?xml version="1.0" encoding="UTF-8"?>
<sca:composite xmlns:federation="
http://eclipse.org/SCAExample1/src/resources/federation";
xmlns:sca="http://www.osoa.org/xmlns/sca/1.0";
name="clinicalLaboratory" targetNamespace="
http://eclipse.org/SCAExample1/src/resources/clinicalLaboratory";>
<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>
 <sca:service name="BiochemicalCircle"
promote="BiochemicalCircleComponent/BiochemicalCircle"/>
</sca:composite>

*Interface file:*
package services.bcircle;
import java.util.ArrayList;
import javax.xml.bind.annotation.XmlType;
import model.sdo.EntityFactory;
import org.apache.tuscany.sca.databinding.annotation.DataBinding;
import org.osoa.sca.annotations.Remotable;

@Remotable
public interface BiochemicalCircle{
    void setLaboratory(model.sdo.Laboratory lab);
    model.sdo.Laboratory getLaboratory(String name);
}

*Interface implementation:*

package services.bcircle;
import model.sdo.EntityFactory;
import model.sdo.Laboratory;
import org.osoa.sca.annotations.Service;


@Service(BiochemicalCircle.class)
public class BiochemicalCircleImpl implements BiochemicalCircle{
   public Laboratory getLaboratory(String name) {
      Laboratory lab = EntityFactory.INSTANCE.createLaboratory();
      lab.setName("Main Laboratory");
      return lab;
   }

   public void setLaboratory(Laboratory lab) {
      //sad method
      System.out.println(lab.getName());
   }
}

*My Test class:*
package test;

import model.sdo.EntityFactory;
import model.sdo.Laboratory;

import org.apache.tuscany.sca.host.embedded.SCADomain;
import services.bcircle.BiochemicalCircle;
import services.bcircle.BiochemicalCircleImpl;


public class Test {

    /**
     * @param args
     */
    public static void main(String[] args) {
        BiochemicalCircle biochemicalCircl = new BiochemicalCircleImpl();
        Laboratory lab2 = biochemicalCircl.getLaboratory("Lab2"); //This
invocation without use SCA works ok.


        SCADomain scaDomain =
SCADomain.newInstance("resources/clinicalLaboratory.composite");
        BiochemicalCircle biochemicalCircle = scaDomain.getService(
                BiochemicalCircle.class, "BiochemicalCircleComponent");
        Laboratory lab = EntityFactory.INSTANCE.createLaboratory();
        lab.setName("lab2");
        biochemicalCircle.setLaboratory(lab); // this invocation works ok
too

        lab = biochemicalCircle.getLaboratory("Lab2"); // here I have an
exception posted below.

        //here I wait a moment before close scaDomain

        scaDomain.close();

}
*
Exception:*
Exception in thread "main" java.lang.ClassCastException:
org.apache.tuscany.sdo.impl.AnyTypeDataObjectImpl
    at $Proxy16.getLaboratory(Unknown Source)
    at test.Test.main(Test.java:28)

*Note:*
EntityFactory and sdo objects where created using
org.apache.tuscany.sdo.generate.XSD2JavaGenerator.

Please, tell me if something is wrong.
Regards,

                 Sebastián Groh




On Tue, May 26, 2009 at 12:30 PM, Raymond Feng <[email protected]> wrote:
> Did you check the response message from the WS? It might be the case that
> XML payload is not conforming to the XSD which is used to generate the
SDO.
>
> I suggest that you open a JIRA and attach the test case there so that we
can
> debug.
>
> Thanks,
> Raymond
>
> --------------------------------------------------
> From: "Sebastián Groh" <[email protected]>
> Sent: Sunday, May 24, 2009 11:06 PM
> To: <[email protected]>
> Subject: Re: WS bindings and SDO
>
>> 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
>>>>>>>>
>>>>>>>
>>>>>>
>>>>
>>>
>>
>

Reply via email to