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