Re: transactions

Sunil Goyal <[email protected]>
Newsgroups gmane.comp.java.ozone.user
Organization Salzburg Research
Message-ID <[email protected]>
Hello all,

My purpose of giving the previous example by writing transactions was
so that I create some database objects , store the objects(persistent),
close the database and when I open the database again , I am able to 
retrieve
the object.

Now this works fine with the Bus and Auto example, there in the samples
directory. I modified the code of the Client.java to check that.

But when I try to do the same with my defined classes, I get a stack 
overflow.
I can try to give a feel of what my class definitions look like and what I 
am trying
to do.

public interface A extends OzoneRemote{
// getter setter methods
// additional methods
}

public abstract class AImpl extends OzoneObject implements A{
//member variables - HashSet, HashMap , Strings ..

// methods
}


public interface B extends A{
// getter setter methods
// additional methods
}

public class BImpl extends AImpl implements B{
//member variables - HashSet, HashMap , Strings ..

// methods
}

Now I am trying to store objects of class B , when I get this problem.
These are the operations I am trying to do now..

String dbDir = "D:/test/database";
LocalDatabase db = new LocalDatabase();
if(!db.exists(dbDir))
   db.create(dbDir);			

db.open(dbDir);
B b = (B)db.createObject(BImpl.class.getName(),0,"bnode");
b.setName("B node check");

db.close();
// opening database after closing
// check for the "bnode"
db.open(dbDir);
b = (B)db.objectForName("bnode");
System.out.println("B instance name "+b.getName());		
db.close();	

And when I do this , I get this
      [java] WARN   [main] Transaction - ta[id=5102,blocker=null]: uncaught 
exception: (java.lang.StackOverflowError)
      [java] java.lang.StackOverflowError
      [java] WARN   [main] Transaction - ta[id=5102,blocker=null]: uncaught 
exception: (java.lang.StackOverflowError)
      [java] java.lang.StackOverflowError
      [java] java.lang.StackOverflowError
      [java]     at 
org.ozoneDB.ExternalDatabase.sendCommand(ExternalDatabase.java:536)
      [java]     at 
org.ozoneDB.ExternalDatabase.sendCommand(ExternalDatabase.java:490)
      [java]     at 
org.ozoneDB.ExternalDatabase.objectForName(ExternalDatabase.java:760)

 From the stack trace, the error is for a call on
b = (B)db.objectForName("bnode");


Any tips for where the error lies will be helpful.

Thank You

Regards
Sunil



On 02 Mar 2004 16:57:49 +0100, Leo Mekenkamp <[email protected]> 
wrote:

> While I think using external transactions is overkill in this situation
> (and use of external transactions should be avoided if not explicitly
> needed, implicit transactions are better and produce better readable
> code), I cannot see any reason why this would go wrong.
>
> Maybe one of the other people on this list?
>
> Cheers,
> Leo

-- 
=====================================================================
Sunil Goyal
New Media Lab
Salzburg Research Forschungsgesellschft m.b.H.
Jakob Haringer-Strasse 5/III | A-5020 Salzburg
T: +43.662.2288-414 | F: +43.662.2288-222
[email protected]
http://www.salzburgresearch.at
======================================================================


-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.