Hi All, I thought I'd check-in regarding the status of this request? Kevin was kind enough to log jira issue (http://issues.apache.org/jira/browse/TUSCANY-670), but I'm blocked. Any chance there is a workaround available? I'd like to use the DAS for DB access, but would be willing to map to/from a XSD if that would eliminate the current problem.
Thanks, Scott -----Original Message----- From: Kevin Williams [mailto:[EMAIL PROTECTED] Sent: Friday, August 25, 2006 3:25 PM To: tuscany-user@ws.apache.org; tuscany-dev@ws.apache.org Subject: Re: DataObject/DataGraph Serialization & DataGraphRoot Hi Yang, Comments in line ... Yang ZHONG wrote: > You may need to serialize the generated SDO metadata. On the other > hand, I recommend the scenario design to be reconsidered. > > Thank Frank for suggesting a SDOUtil helper taking a list of Types for > DAS to serialize all generated Types along with DataGraph. > If you're willing to do that, I'll implement and send it out. > Yes. Please implement this method. If I understand correctly, the function exists today in EMF but we prefer to stay with SDO apis. Also, I am not sure why the method should take a list of generated Types since they exist in the graph already. So, why not a method something like this: serializeTypes() ? > At the same time, I have some thoughts on the scenario design. > DataBase schema is unlikely changed frequently, it's inefficient for > DAS to always generate same SDO metadata over and over again on every > single query, it's also inefficient to serialize same SDO metadata > over and over again on every single invocation back to client. A > typical customer scenario is, both client and server have SDO metadata > already, therefore SDO metadata serialization isn't really necessary, > and SDO metadata generation from DAS isn't really necessary. I know an > early version of DAS (it was under different name) can accept existing > SDO metadata and generate only SDO instances. My previous product > customers actually complained about the very poor performance caused > by repeating same SDO metadata generation and serialization. > > So, are you interested in trying such scenario so that you won't have > "type not found" problem? > > Solution 2-1 (typical real scenario): > 1. deploy SDO metadata to both client and server 2. instruct DAS to > accept the existing SDO metadata 3. do rest of whatever being done > right now > The DAS supports this scenario today and can accept Static Types from the client. But, the purely dynamic scenario is an important one so we must support both. Thanks! > Solution 2-2 (temporary if current DAS doesn't take any SDO metadata > yet) 1. deploy the generated SDO metadata from DAS to client, once 2. > do rest of whatever being done right now > > On 8/25/06, Kevin Williams <[EMAIL PROTECTED]> wrote: > >> >> The RDB DAS creates the graph and corresponding Types dynamically >> from the database query results. >> >> Frank Budinsky wrote: >> >> >The problem seems to be that the metadata for class DataGraphRoot is >> not >> >registered on the client. Is that the only missing metadata? What >> >about the metadata for the rest of the model. I can't provide any >> >more help without more details about how the metadata is being defined. >> > >> >Frank. >> > >> >"Kevin Williams" <[EMAIL PROTECTED]> wrote on 08/25/2006 03:30:15 PM: >> > >> > >> > >> >>It may be that your remote client has not initialized the SDO/EMF >> >>environment properly and I think that we need some help from the >> >>SDO team. I have copied this to the dev list since not everyone >> >>has registered yet for the user list. >> >> >> >>--Kevin >> >> >> >> >> >> >> >>Luciano Resende wrote: >> >> >> >> >> >> >> >>>Hi Scott >> >>> >> >>> So, here is a quick example from our unit testings : >> >>> >> >>> /** >> >>> * Read a specific customer >> >>> */ >> >>> public void testReadSingle() throws Exception { >> >>> >> >>> //Create and initialize command to read customers >> >>> DAS das = DAS.FACTORY.createDAS(getConnection()); >> >>> Command readCustomers = das.createCommand("select * from >> >>>CUSTOMER where ID = 1"); >> >>> >> >>> //Read >> >>> DataObject root = readCustomers.executeQuery(); >> >>> >> >>> //Verify >> >>> assertEquals(1, root.getInt("CUSTOMER[1]/ID")); >> >>> } >> >>> >> >>>If you get a reference to root first, then try to access the >> >>>customer information, do you still have this problem ? >> >>> >> >>>Maybe something like this : >> >>> >> >>>DataObject root = readCust.executeQuery(); cust = >> >>>root.getDataObject("CUSTOMER") >> >>> >> >>>Please let me know if this helps... >> >>> >> >>>- Luciano >> >>> >> >>> >> >>>On 8/24/06, *Scott Kurinskas* <[EMAIL PROTECTED] >> >>><mailto:[EMAIL PROTECTED]>> wrote: >> >>> >> >>> Hi, >> >>> >> >>> Now that my DAS example is up and running, I'm trying to move my >> >>> example to >> >>> a client/server environment and integrate it with my product. My >> >>> use-case >> >>> is very simple, a client makes a request to the server, the >> server >> >>> fetches >> >>> the result from the database and returns the DataObject back to >> >>> the client. >> >>> The server side code looks like the following: >> >>> >> >>> das = DAS.FACTORY.createDAS(getConfig("CompanyConfig.xml"), >> >>> connection); >> >>> String sql = "Select * from customers where >> >>> customers.customerNumber = " + >> >>> key; >> >>> Command readCust = das.createCommand(sql); >> >>> DataObject cust = readCust.executeQuery(); >> >>> return cust; >> >>> >> >>> The code executes fine on the client but for some reason the >> >>> client is >> >>> throwing the exception below. The client should be >> >>> deserializing >> >>> >> >>> >> >the >> > >> > >> >>> response into a DataObject, but for some reason its complaining >> >>> about class >> >>> DataGraphRoot not found. The same code executing in a app works >> >>> great. >> >>> >> >>> Thoughts? >> >>> >> >>> Thanks again, >> >>> Scott >> >>> >> >>> Caught unexpected Exception >> >>> org.eclipse.emf.ecore.resource.Resource$IOWrappedException: Class >> >>> 'DataGraphRoot' not found. >> >>> ( file:///C:/Documents%20and%20Settings/skurinsk/workspace/SDO%20 >> >>> <file:///C:/Documents%20and%20Settings/skurinsk/workspace/SDO% >> >>> >> >>> >> >>20&%20Cache%20 >> >> >> >> >> >>> <file:///C:/Documents%20and%20Settings/skurinsk/workspace/SDO% >> >>> >> >>> >> >>20&%20Cache%20> >> >> >> >> >> >>> Client/all.datagraph> &%20Cache%20Client/all.datagraph, 5, 22) >> >>> at >> >>> org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl. >> >>> >> >>> >> >>handleErrors(XMLLoadImpl.java:80) >> >> >> >> >> >>> at >> >>> >> >>> org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.load(XMLLoadImpl.java >> >>> >> >>> >> >:189) >> > >> > >> >>> at >> >>> org.apache.tuscany.sdo.util. >> >>> >> >>> >> >>DataGraphResourceFactoryImpl$DataGraphResourceIm >> >> >> >> >> >>> pl$LoadImpl.load(DataGraphResourceFactoryImpl.java:452) >> >>> at >> >>> org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl. >> >>> >> >>> >> >>doLoad(XMLResourceImpl.java >> >> >> >> >> >>> :1 >> >>> 79) >> >>> at >> >>> org.eclipse.emf.ecore.resource.impl.ResourceImpl. >> >>> >> >>> >> >>load(ResourceImpl.java:1089 >> >> >> >> >> >>> ) >> >>> at >> >>> org.apache.tuscany.sdo.impl. >> >>> >> >>> >> >>DataGraphImpl$EDataGraphExternalizable.readExter >> >> >> >> >> >>> nal(DataGraphImpl.java:665) >> >>> at >> >>> >> >>> >> >>> >> >java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:17 >> >58) >> > >> > >> >>> at >> >>> java.io.ObjectInputStream. >> >>> >> >>> >> >>readOrdinaryObject(ObjectInputStream.java:1716) >> >> >> >> >> >>> at >> >>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java >> >>> >> >>> >> >:1304) >> > >> > >> >>> at >> >>> >> >>> >> >java.io.ObjectInputStream.readObject(ObjectInputStream.java:349) >> > >> > >> >>> at >> >>> org.apache.tuscany.sdo.helper. >> >>> >> >>> >> >>HelperProviderImpl$ResolvableImpl.readDataObje >> >> >> >> >> >>> ct(HelperProviderImpl.java:205) >> >>> at >> >>> org.apache.tuscany.sdo.helper. >> >>> >> >>> >> >>HelperProviderImpl$ResolvableImpl.readExternal >> >> >> >> >> >>> (HelperProviderImpl.java:144) >> >>> at >> >>> commonj.sdo.impl.ExternalizableDelegator. >> >>> >> >>> >> >>readExternal(ExternalizableDelegato >> >> >> >> >> >>> r.java:80) >> >>> at >> >>> >> >>> >> >>> >> >java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:17 >> >58) >> > >> > >> >>> at >> >>> java.io.ObjectInputStream. >> >>> >> >>> >> >>readOrdinaryObject(ObjectInputStream.java:1716) >> >> >> >> >> >>> at >> >>> >> >>> >> >java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1304) >> > >> > >> >>> at >> >>> >> >>> >> >java.io.ObjectInputStream.readObject(ObjectInputStream.java:349) >> > >> > >> >>> at >> >>> >> >>> >> >>> >> >com.gemstone.gemfire.DataSerializer.readObject(DataSerializer.java:3 >> >200) >> >> > >> > >> >>> at >> >>> com.gemstone.gemfire.internal.util.BlobHelper. >> >>> >> >>> >> >>deserializeBlob(BlobHelper.jav >> >> >> >> >> >>> a:55 >> >>> >> >>> >> >>> >> >>> >> >>>-- >> >>>----------------------------------------------------- >> >>>Luciano Resende >> >>>SOA Opensource - Apache Tuscany >> >>>----------------------------------------------------- >> >>> >> >>> >> >> >> >> >> >>------------------------------------------------------------------- >> >>-- To unsubscribe, e-mail: [EMAIL PROTECTED] >> >>For additional commands, e-mail: [EMAIL PROTECTED] >> >> >> >> >> >> >> > >> > >> >-------------------------------------------------------------------- >> >- To unsubscribe, e-mail: [EMAIL PROTECTED] >> >For additional commands, e-mail: [EMAIL PROTECTED] >> > >> > >> > >> > >> > >> > >> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]