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<http://vmbuild1.apache.org/continuum/projectView.action?projectId=277>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
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>>
>