Hi,
I should have been clear that even the SDO part was successful with the 1.6
SNAPSHOT code. I don't see the ClassCastException at all. I believe it
should be working with 1.5 release too.
Thanks,
Raymond
--------------------------------------------------
From: "Sebastián Groh" <[email protected]>
Sent: Sunday, May 31, 2009 8:09 PM
To: <[email protected]>
Subject: Re: WS bindings and SDO
Hello,
Thanks Ant Elder, your Apache Tuscany SCA Java 1.5 released
announce mail responded my last question on this list.
Raymond, the problem was fixed in version tuscany 1.5. I
didn't need comment the service promotion.
I have had the same exception when I tried something like this:
0. public class BiochemicalCircleImpl implements BiochemicalCircle{
1.
2. public Laboratory getLaboratory(String name) {
3. if (name.length() < 5)
4. return null;
5. Laboratory lab = EntityFactory.INSTANCE.createLaboratory();
6. lab.setName("Main Laboratory");
7. return lab;
8. }
9. }
If condition was true in line 3, null was returned an the exception was:
Exception in thread "main" java.lang.ClassCastException:
org.apache.tuscany.sdo.impl.AnyTypeDataObjectImpl
otherwhise, all works perfectly!
My solution was, create a Laboratory object with properties setted in
null and change invocation logic assuming that always will return a
Laboratory object. Empty Laboratories were considered when any of its
properties was null.
Thanks Raymond, and all people who responded to my earlier concerns.
Best Regards,
Sebastián Groh
2009/5/30 Sebastián Groh <[email protected]>
Hello,
Raymond, thanks for your answer. I've checked my mail late, I
see that you can test my example without my source files.
At the moment, I commented the service promotion as you suggest, and I'm
trying to download the latest 1.5 code
but I can't found that.
Someone here knows how to download that version? I was reading Continuum
and in version says "1.6-SNAPSHOT" .
Have Tuscany SCA version 2.X implemented the same functionality that
version 1.x?
Raymond, will I found my errors fixed in version 2.X?
Thanks,
Sebastián Groh
On Sat, May 30, 2009 at 3:57 AM, Raymond Feng <[email protected]>
wrote:
Hi,
I just tried your test case (adding the classes/resources to the
helloworld-ws-sdo sample) with the latest 1.5 code. It works after I
fixed an issue in the 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>
Please note the service promotion is commented out as it triggers an
issue in Tuscany where the service promotion has the same URI as the
internal binding.ws.
Thanks,
Raymond
From: Sebastián Groh
Sent: Friday, May 29, 2009 3:38 PM
To: [email protected]
Subject: Re: WS bindings and SDO
Raymond,
hello again, I follow your advice " I suggest that you
open a JIRA and attach the test case there so that we can debug.". I
opened a JIRA (link). This is my first bug there. Can you tell me if
I've posted enough information?
Thanks,
Sebastián Groh
2009/5/26 Sebastián Groh <[email protected]>:
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