Hi Sebastien it's not clear to me whether you intend to use lines such as ...
Laboratory lab = EntityFactory.INSTANCE.createLaboratory(); in your solution, or whether this is just a quick piece of demo code. If I understand this thread properly then I think you have solved your problem, however, I would just like to comment that the line ... Laboratory lab = EntityFactory.INSTANCE.createLaboratory(); is not the best way to create an SDO instance. Maybe tyhis is just a quick demo line of code, but using the generated Factory instances directly allows coding that might lead you to believe that you have a good working SDO environment when you might not have. As this thread has mentioned, the SDO runtime needs to have metadat 2009/6/1 Sebastián Groh <[email protected]>: > 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 >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>>> >>> >> >
