Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo,
ich habe ein kleines Problem - ich benutzte db4o als Objektorientierte Datenbank ist auch weiter nicht wichtig außer das diese einen eigne Collection implementations hat. Eigentlich auch nicht weiter wild - wenn das Wörtchen wenn nicht währe.
Diese Collection ObjectSet implementiert leider nicht Serializable kann ich diese collection leider nicht über das RMI schicken.
Lösung liegt auf der Hand - klar einfach.
public Collection remoteMethod() {
ObjectSet os = <code zur daten abfrage>
return new ArrayList(os);
}
Funktionert ja auch - nur finde ich dies wirklich nicht schön.
Nur finde ich das von der Codirung her höchst unschön - habt hier jemand vieleicht eine besser idee wie ich dafür sorgen könnte das die Collection in eine Serialisirbare Collection umgewandelt wird ohne das ich bei jeder methode return new ArrayList machen muss?
du willst das nur bei den remote-Methoden machen oder? da fällt mir nix zu ein,
außer komische Proxy, AOP-Intercepter die da vielleicht heimlich was austauschen,
wenn dagegen bei allen DB-Abfragen, dann wäre das doch denkbar,
dann gibt es sicher eine zentrale Stelle wie bei Hibernate query.list();
dort dann eingreifen durch statische Methode oder so
public List getList(Query q) {
return new ArrayList(q.list());
}
Naja Hibernate hängt ja sowiso nicht dazwischen - da es sich wie bereits gesagt um eine ObjectOrientierte DB handelt.
Das hat mich schon auf die idee gebracht eine middleware klasse zu schreiben die aus dem DataObject eine ArrayList macht, aber auch da wie du schon richtig sagst ist der Aufwand erheblich.
Da es doch etliche verschieden Möglichkeiten gibt querries auszulösen.
Falls dir beim hinweis auf die sache mit der OO datenbank noch etwas einfällt währe ich dir dennoch dankbar.
Hi maki,
es geht mir ja darum das ich um die "Result" Collection von db4o von meinen application Server zum client zu bekommen über RMI muss das object Serializable sein.
bzw einen leren konstruktor besitzten (da ich JBoss Remoting mit Jboss Serialization benutze reicht das aus).
Leider ist weder das eine noch das andre zutreffend für ObjectSet wie du schon richtig erfasst hast - daher kann ich leider ohne diese Collection in eine Arrayliste oder andre Collection die Serializable unterstützt nich über das Jboss Transportprotocol an meinen client übermitteln.
Sonst wüste ich keine alternative um die ergebnise meinen Client zu füttern.
Note that the underlying ObjectContainer of an ObjectSet needs to remain open as long as an ObjectSet is used. This is necessary for lazy instantiation. The objects in an ObjectSet are only instantiated when they are actually being used by the application.