Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Problem bei Nutzung des Sun Java Application Server

0 views
Skip to first unread message

Thomas G. Liesner

unread,
Nov 25, 2005, 7:59:08 PM11/25/05
to
Hallo!

Ich bin noch bei "Mastering Enterprise Beans 3" und bin gerade beim
ersten Entity Bean "Account" (S.150ff).

Den korrekten Zugriff auf die Datenbank bekomme ich inzwischen hin, aber
es gibt ein paar Haken, die ich nicht nachvollziehen kann.

Zum ersten schlägt das Deploy-Tool als Name immer xyzBean vor, wobei die
Buchbeispiele immer nach dem Home-Objekt fragen, was auch von der Logik
her sinnvoller ist. Ich kann den JDNI-Namen zwar in Home ändern, aber
das scheint nur kosmetische Wirkung zu haben.

Die Zuordnung Home-Object und Bean-Object funktioniert leider nicht wie
im Buch beschrieben - solange die Home-Methode create heisst oder mit
get beginnt, klappt es mit korrespondierenden Methoden ejbHomeCreate
bzw. ejbHomeGet... im Bean, aber z.B. findBy... findet er nicht als
ejbHomeFindBy..., erst ein Umbennennen in getBy/ejbHomeGetBy verhindert
die Laufzeitfehler. Für mich unverständlich, aber im aktuellen Testfall
noch unter Schmerzen umgehbar.

Ein echter Stopper ist die Nicht-Umsetzung Keys zu Objekten: AccountPK
ist als Primärschlüssel gedacht, somit ist die Homefunktion als:
Account getByID(AccountPK) definiert und die Umsetzung im Bean als
AccountPK getByID(AccountPK), wobei die Implementierung im wesentlichen
daraus besteht, die Existenz des Datensatzes zu prüfen und bei Erfolg
die übergebene AccountPK zurückzuliefern.

Wenn ich im Client.-Code dann schreibe:

| Iterator i = home.getByOwnerName("Hans Müller").iterator();
| if (i.hasNext()) {
| Account account = (Account) PortableRemoteObject.narrow(i.next(), Account.class);

gibt es eine nette Exception:

| Exception in thread "main" java.lang.ClassCastException
| at com.sun.corba.ee.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:229)
| at javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:137)
| at Mastering_Java_Beans.ClientAccount.main(ClientAccount.java:21)

Nehme ich stattdessen

| AccountPK account = (AccountPK) PortableRemoteObject.narrow(i.next(), AccountPK.class);

läuft es, nur habe ich dann natürlich immer noch nicht das erwünschte
Objekt.

Im Prinzip geht wohl "nur" was beim Deployen schief, hat da jemand im
Zusammenhang mit dem Sun Java Application Server Erfahrungen gesammelt,
um mir zu sagen, auf welche Details ich im Zusammenhang mit Entity-Beans
achten muß, damit Primärschlüsselumsetzung funktioniert und ich die
Namen freier wählen kann?

So long,
Thomas G. Liesner
--
----------------- Neue Hamster-stable 2.1.0.0 seit 3.10.2005 -----------------
Ich suche eine neue Vollzeitarbeitsstelle als Softwareentwickler (Schwerpunkt
Windows) entweder im weiteren Umkreis von Münster (Westfalen) oder in Heim-
arbeit. Details: http://www.tglsoft.de <mailto:jobs...@tglsoft.de>

0 new messages