Entity Bean ignoriert Datenbank

Status
Nicht offen für weitere Antworten.
Hi,

Ich probiere grade mit Entity Beans (CMP , mysql4.1, WTP) herum, nachdem ich mich mit Stateful und Stateless Beans probiert habe.

Ich nutze Eclipse, hab ein Projekt erstellt, Datenbank und alles angegeben, so dass sogar ein Reiter namens
"Database Explorer" erschien. die Datenbank enthält 4 Tabellen, eine davon will ich nur nutzen.

Ich kann mittels der create(Signatur sig..) Methode auch wunderbar Beans erstellen, die er auch speichert. Allerdings speichert Java die in einer Datei in jboss4.01... /tmp/deploy/tmpxxxKundendaten.jar

Problem:
Es erfolgt KEIN Zugriff auf meine Datenbank! Die Daten, die ich mit der Datenbank hochgeladen habe, erreiche ich nicht. Es ist der Bean sogar egal, ob mein MySQL Server läuft oder nicht. Einträge in der ejb-jar.xml sind gemacht.

Hab schon versucht den zu Erzwingen mittels Aufruf von ejbStore() und ejbLoad()...
Lustigerweise kann ich die tmp dateien, in denen das Projekt die neuen Daten anscheinend speichert löschen. Und trotzdem kennt er noch die vorhin kreierten neuen Kunden ^^

Aufgabe: Wir sollen uns mittels Webclient einloggen oder einen neuen Nutzer anlegen könnnen. Eingeloggt, soll man sich dann seine Daten angugucken können... naja.

Selbst wenn die Bean/der Container auf die Datenbank zugreifen könnte. Muss ich die Prüfung der Login Daten selbst implementieren? Das mache ich ja mit der findByPrimaryKey Methode, odeR?

--
edit:
wozu ist die ejbPostCreate Methode. Hab keine klare Antwort im Netz gefunden, weiß nur, dass er die Methode (wenn sie die gleiche Signatur wie die aufgerufene create(Sig sig) hat, automatisch aufgerufen wird....


danke :)
 
G

Guest

Gast
gedachtnissieb hat gesagt.:
mh.. hat dann jemand ne Idee, warum ich in der Regel (als einzigster...?) auf meine Posts keine Antwort bekomme?
Vermutlich deswegen, weil du mit diesem Thread zu viele Anfängerfragen stellst, und niemand Lust
hat ein Buch darüber zu schreiben.
 
also gut, neuer Versuch, weniger Gelaber:

Meine EntityBean speichert die Datenänderungen anscheinend in einer Datei in jboss4.01/.../tmp/deploy/tmpxxxKundendaten.jar, aber nicht in der von mir angegebenen Datenbank (MySql)
Der Aufruf von ejbStore bringt auch nix (sichtbares).

Den Aufruf manuell zu erstellen ist ja nicht Sinn einer EntityBean, oder? Dann hätte ich ja die Datenbank nicht angeben müssen, bei der Erstellung eines Beans...

Was mache ich falsch? :meld: Weitere Belehrungen erwünscht...
 

bronks

Top Contributor
Anonymous hat gesagt.:
gedachtnissieb hat gesagt.:
mh.. hat dann jemand ne Idee, warum ich in der Regel (als einzigster...?) auf meine Posts keine Antwort bekomme?
Vermutlich deswegen, weil du mit diesem Thread zu viele Anfängerfragen stellst, und niemand Lust
hat ein Buch darüber zu schreiben.
So einfängermäßig ist die Frage nicht, denn aus unachtsamkeit rutscht man schnell mal defaultdatenbank vom JBoss.

Eher könnte ich annehmen, daß genau die Leute welche das beantworten können, etwas vorsichtig beim Schreiben sind, wenn die Antwort ein längerer Text werden könnte. Denn es motiviert nicht unbedingt etwas zu schreiben, um am nächsten Tag festzustellen, daß es irgendein Mod oder Admin grundlos gelöscht hat und sich zu der Löschung, nach mehrmaligem nachfragen, niemand bekennt.
 

bronks

Top Contributor
gedachtnissieb hat gesagt.:
... Den Aufruf manuell zu erstellen ist ja nicht Sinn einer EntityBean, oder? Dann hätte ich ja die Datenbank nicht angeben müssen, bei der Erstellung eines Beans...

Was mache ich falsch? :meld: Weitere Belehrungen erwünscht...
Poste mal den Code Deiner Bean und der DS.
 
Code:
public abstract class KundendatenBean implements javax.ejb.EntityBean {	
	/**
	 *
	 * 
	 * The  ejbCreate method.
	 * 
	 *
	 *  
	 * @ejb.create-method 
	 *  
	 * @generated
	 */
	public java.lang.String ejbCreate() throws javax.ejb.CreateException {
		// EJB 2.0 spec says return null for CMP ejbCreate methods.
		// TODO: YOU MUST INITIALIZE THE FIELDS FOR THE BEAN HERE. 
		// setMyField("Something"); 
		// begin-user-code
		return null;
		// end-user-code
	}
	
	/**
...
	 */
	public java.lang.String ejbCreate(String kNr, String passwort, String kAdresse, String kName)throws javax.ejb.CreateException{
		setKNr(kNr);
		setKName(kName);
		setKAdresse(kAdresse);
		setPasswort(passwort);
		return this.ejbCreate();
	}

	/**
...
	 */
	public void ejbPostCreate() throws javax.ejb.CreateException {
		// begin-user-code
		System.out.println("ejbPostCreate started");
		// end-user-code
	}
	
	/**
...
	 */
	public void ejbPostCreate(String kNr, String passwort, String kAdresse, String kName) throws javax.ejb.CreateException {
		// begin-user-code
		System.out.println("ejbPostCreate 2 started");
		// end-user-code
		try {
			
			this.ejbStore();
		} catch (EJBException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (RemoteException e) {
			// TODO Auto-generated catch block 
			e.printStackTrace();
		}
	}

	/**
...
	 */
	public abstract java.lang.String getKNr();

	/**
...
	public abstract void setKNr(java.lang.String kNr);

	/**
...
	 */
	public abstract java.lang.String getKName();

	/**
...
	 */
	public abstract void setKName(java.lang.String kName);

	/**
	 *
	 *
	 * 
	 * CMP Field kAdresse
	 *
	 * Returns the kAdresse
	 * @return the kAdresse
	 * 
	 * 
	 *
	 *  
	 *
	 * @ejb.persistent-field 
	 * @ejb.persistence
	 *    column-name="3"
	 *     jdbc-type="VARCHAR"
	 *     sql-type="VARCHAR(0)"
	 *     read-only="false"
	 *  
	 *
	 * @ejb.interface-method
	 * 
	 *  
	 * @generated
	 */
	public abstract java.lang.String getKAdresse();

	/**
	 * 
	 * Sets the kAdresse
	 * 
	 * @param java.lang.String the new kAdresse value
	 * 
	 * 
	 *  
	 * @ejb.interface-method
	 * 
	 * @generated 
	 */
	public abstract void setKAdresse(java.lang.String kAdresse);

	/**
...
	 */
	public abstract java.lang.String getPasswort();

	/**
...
	 */
	public abstract void setPasswort(java.lang.String passwort);

	/* (non-Javadoc)
	 * @see javax.ejb.EntityBean#ejbActivate()
	 */
	public void ejbActivate() throws EJBException, RemoteException {
		// TODO Auto-generated method stub

	}

	/* (non-Javadoc)
	 * @see javax.ejb.EntityBean#ejbLoad()
	 */
	public void ejbLoad() throws EJBException, RemoteException {
		// TODO Auto-generated method stub

	}

	/* (non-Javadoc)
	 * @see javax.ejb.EntityBean#ejbPassivate()
	 */
	public void ejbPassivate() throws EJBException, RemoteException {
		// TODO Auto-generated method stub

	}

	/* (non-Javadoc)
	 * @see javax.ejb.EntityBean#ejbRemove()
	 */
	public void ejbRemove() throws RemoveException, EJBException,
			RemoteException {
		// TODO Auto-generated method stub

	}

	/* (non-Javadoc)
	 * @see javax.ejb.EntityBean#ejbStore()
	 */
	public void ejbStore() throws EJBException, RemoteException {
		System.out.println("ejbStore");
		// TODO Auto-generated method stub

	}

	/* (non-Javadoc)
	 * @see javax.ejb.EntityBean#setEntityContext(javax.ejb.EntityContext)
	 */
	public void setEntityContext(EntityContext arg0) throws EJBException,
			RemoteException {
		// TODO Auto-generated method stub

	}

	/* (non-Javadoc)
	 * @see javax.ejb.EntityBean#unsetEntityContext()
	 */
	public void unsetEntityContext() throws EJBException, RemoteException {
		// TODO Auto-generated method stub

	}

	/**
	 * 
	 */
	public KundendatenBean() {
		// TODO Auto-generated constructor stub
	}

}

Die xDoclet Anweisungen habe ich mal nur für eine getter und eine setter drin gelassen, zwecks Übersichtlichkeit...

Und was ist DS?
 
du meinst Datasource?
Code:
CREATE TABLE Kunden ( 
	kNr INT NOT NULL PRIMARY KEY,  
	kName VARCHAR(50) NOT NULL, 
	kAdresse VARCHAR(50), 
	passwort VARCHAR(50) NOT NULL); 

CREATE TABLE Artikel ( 
	aNr INT NOT NULL AUTO_INCREMENT PRIMARY KEY,  
	aBz VARCHAR(50) NOT NULL, 
	aPr DOUBLE,
        online BIT);
 

bronks

Top Contributor
gedachtnissieb hat gesagt.:
... Die xDoclet Anweisungen habe ich mal nur für eine getter und eine setter drin gelassen, zwecks Übersichtlichkeit...

Und was ist DS?
Das wäre die DataSource gewesen. Siehe z.B. hier: http://www.informit.com/articles/article.asp?p=352320&rl=1

Die mußt Du Deiner Bean mitteilen z.B.:
Code:
@jboss.persistence datasource="java:/jdbc/projektDS" datasource-mapping="PostgreSQL 8.0" create-table="true" remove-table="true" alter-table="true"

Wenn Du auf Deinem MySql nichts anderes draufhast, dann überleg Dir ob Du nicht evtl. auf eine andere DB wechselst. Den Luxus, daß es Dir die Tabellen anlegt, wie auf der HsqlDb hast Du damit nicht. Entsprechend kannst Du alter und remove-table knicken.
 
mh in Eclipse kam halt ein schönes Fenster, in dem ich Infos über die Datenbank angab.

Eclipse:
Database Explorer - Connections - new Connection
genau so.

Ich dachte, dass er alle notwendigen xml Dateien gleich mit konfiguriert.

edit:// ich stand wohl ein wenig auf dem Schlauch...

Code:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>onlineshop</jndi-name>
<connection-url>
jdbc:mysql://127.0.0.1:3306/onlineshop
</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password<istdashierwirklichdaspasswort?</password>
</local-tx-datasource>
</datasources>

Hier ist meine onlineshop-ds.xml, die lag aber schon in server/default/deploy ....
 

bronks

Top Contributor
gedachtnissieb hat gesagt.:
... Ich dachte, dass er alle notwendigen xml Dateien gleich mit konfiguriert ...
WTP hat zwar die tollsten Wizzards, aber sie machen immer nur die Hälfte der erwarteten Arbeit. So interessierts sich dieser Wizzard auch nicht für die CMP-Relations wenn man eine Bean aus einer Datenbanktabelle erstellt. Wegen ein paar anderen unberechenbaren Bugs und Problemen bin ich dann zur JBossIDE gewechselt.

gedachtnissieb hat gesagt.:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>onlineshop</jndi-name>
<connection-url>
jdbc:mysql://127.0.0.1:3306/onlineshop
</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password<istdashierwirklichdaspasswort?</password>
</local-tx-datasource>
</datasources>

...
Wird die DS fehlerfrei deployed?



Schau mal hier rein: http://www.laliluna.de/database-ejb-hibernate-tutorials.html "Simple Entity EJB ..." und "EJB-CMP-Relations" sind genau das Thema für Dich.
 
DS wird fehlerfrei deployed. Hatte die selbe Datenbank bereits mit einem Stateful Bean getestet, bei dem ich auch die DS xml deployen musste. Hat alles BESTENS funktioniert...

Ich zieh mir den Link mal rein.. danke erstmal

Müsste ich eigentlich eine Fehlermeldung beim Starten bekommen, wenn MySql nicht an ist, oder erst beim Ausführen des Clients, der die Funktionen aufruf? Doch erst beim Client, oder nicht?
 
Ein sensationeller Durchbruch in der Forschung :autsch:

Code:
17:59:01,843 ERROR [Kundendaten] Could not create entity
java.sql.SQLException: Column not found: KPASSWORT in statement [INSERT INTO KUNDENDATEN (kNr, kName, kAdresse, kPasswort) VALUES (?, ?, ?, ?)]
	at org.hsqldb.jdbc.Util.throwError(Unknown Source)

jetzt manipuliere ich dir XDoclet Anweisungen, aber dieselbe Fehlermeldung kommt immer wieder...

Eine Spalte
(case sensitive) hab ich gar nicht...

nur

setKPasswort
getKPasswort


die Spalten (column) habe ich anfangs mit 1, 2, 3, 4 benannt. Jetzt versucht sie umzubennen..... Aber selber Fehler..
 
G

Guest

Gast
Code:
  /**
  * @ejb.interface-method
  * @ejb.persistent-field
  *    column-name="passwort"
  */
  public abstract String getKPasswort();
und lass den Sch.. mit dem manuellen Aufruf von ejbStore() in ejbCreate().

Jesus, ist das grausam, was du da machst. :wink: Hol dir ein dickes Buch zu EJB und gehe es systematisch durch.
Anhand deines Codes erkennt man, dass dir die Konzepte dahinter gar nicht klar sind und so wirst du dich von
einem Fehler zum nächsten vorarbeiten, ohne zu wissen, was da alles schief geht und vor allem warum.

Wo du neu anfängst, vergiss das alte EJB 2.x und lerne lieber gleich EJB 3.
Hier gibt es ein gutes Buch dazu: http://www.theserverside.com/tt/books/wiley/masteringEJB3/index.tss
 
und lass den Sch.. mit dem manuellen Aufruf von ejbStore() in ejbCreate().
Das sind nur erste Versuche.. inzwischen läuft meine Bean übrigens sensationell... :p

Jesus, ist das grausam, was du da machst. icon_wink.gif Hol dir ein dickes Buch zu EJB und gehe es systematisch durch.

richtig. Das ist eigentlich meine Art. Problem: Aufgabe an der Uni (FB BWL, sagt doch alles), um Klausur zu verbessern.
Mehr als die Infos, die ich hatte, standen auch nicht auf den Folien.

Da ich für 3 Klausuren (in 3 Wochen) lerne (Hauptthema ist nicht Erstellung einer EJB in Eclipse ...) ist das ein echt schlechter Zeitpunkt, mir ein dickes Buch zu kaufen, das Werkzeug zu wechseln, womöglich sogar von Version 3, die NICHT relevant ist für uns, zu benutzen. Das verstehst du doch sicher...

Jetzt stehe also vor der Wahl:

1. hier im Forum "dumme Fragen zu stellen"
2. mir das dicke Buch zu kaufen und eins der anderen 3, die hier liegen wegzulegen ;-)
3. Auf die Bonuspunkte zu verzichten
4. Jemanden fragen, der sich damit auskennt (was ich schon längst getan hätte, aber wir sitzen leider alle in einem Boot)

Was hättest du gewählt? ???:L

Den Vorlesungsplan gewälzt um mögliche Aufgaben zur Notenverbesserung im vorweg zu klären mittels dicken Büchern? (An den Weihnachtsfeiertagen hatte ich noch Zeit gehabt, mist) ? :bahnhof:


Naja, an vielen Fragen, die hier gestellt werden, sehe ich auch, dass die Leute teilweise keinerlei Grundkenntnis von der Materie habe. Ich finde das nicht so schlimm.


Wenn du also die Einstellung hast, dass alle Leute, die etwas nicht verstehen, sich erstmal ein dickes Buch kaufen sollten, sind Foren sicherlich überflüssig, ne? Freut allerdings jede Buchhandlung und den Altpapierrecycling Markt. Das erklärt auch, warum du anscheinend gerne anonym, also aus dem off heraus, "gute Ratschläge" loslässt, ohne an den jeweiligen Kontext zu denken...

Thanx 4 your opinion

Danke an alle, die mir geholfen haben mit guten Links und Mühe (bronxxxx)!!!!

PS: Ich mache noch keinen Haken an das Thema, da ich irg. noch auf eine Antwort von dir warte.

mfg
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
ichbindiegute Performance von Entity Bean create vs. JDBC insert Allgemeines EE 11
A Selbstreferenzierter Entity-Bean Allgemeines EE 3
M Session Bean vers. Entity Bean Allgemeines EE 3
H Hibernate - OneToMany - mappedBy reference an unknown target entity property Allgemeines EE 1
T Anfängerfrage: h:selectOneMenu (JSF 2.0), @ManyToOne Annotation in Entity (JPA 2.0) Allgemeines EE 2
P detached entity passed to persist Allgemeines EE 5
H Bezug Entity<=>DB Allgemeines EE 5
I Entity wirft Nullpointer Allgemeines EE 2
J Datenbankmanipulation, methoden des Entity-Managers ? Allgemeines EE 3
F mappedBy reference an unknown target entity property Allgemeines EE 5
S EJB Entity Beans -> CMP Allgemeines EE 11
S Löschen einer Entity kaskadiert nicht auf Collection (1:n) Allgemeines EE 2
G JBoss - Session / Entity Allgemeines EE 8
G Persistenz-Entscheidung (Entity Beans, Hibernate, JDBC) Allgemeines EE 12
M Entity Beans: Rückgabe von Collectionen an Client Allgemeines EE 2
R JSF Entitybean direkt in Sessionscoped Bean referenzieren Allgemeines EE 2
I Session löschen in Bean (Session Beans) Allgemeines EE 1
J Hello World mit Stateless Session Bean - Was mache ich falsch? Allgemeines EE 2
J Unterschied zwischen HttpSession und Stateful Session Bean Allgemeines EE 3
R Wie eine stateful session bean erneut "aufgreifen" Allgemeines EE 22
B [EJB] javax.inject.DefinitionException: bean not a Java type Allgemeines EE 5
T Einstieg in J2EE: Remote auf Bean zugreifen Allgemeines EE 11
H Bean läuft unter GlassFish, aber JBoss nicht Allgemeines EE 5
P Unterschied Session Scope / Stateful Session Bean Allgemeines EE 6
A Im PhaseListener auf Stateful Session Bean zugreifen Allgemeines EE 6
J geschützter Bean zugriff mit einem Rich-Client Allgemeines EE 2
2 JSTL Tags für eine Bean? Allgemeines EE 4
M Spring: Bean als Webservice freigeben Allgemeines EE 9
D Problem mit EJB: Bean soll Objekt eigener Klasse zurückgeben Allgemeines EE 2
V JSP BEAN Speichern von einer Zahl nach eingabe Allgemeines EE 2
H Bean Vergleich.gibts da schon was Feines? Allgemeines EE 13
B unterschied servlet und bean Allgemeines EE 2
F response.sendError() von Bean aus Allgemeines EE 6
A Session Bean mit Local-Interface nutzen Allgemeines EE 3
J prozesse aus der application-bean threadfähig? Allgemeines EE 4
G JSF dynamsiche style zuweisung aus Backing Bean Allgemeines EE 3
G Objekt von jsp an set Methode von Bean übergeben! Allgemeines EE 2
N Lokation von Bean Klassen? Allgemeines EE 5
M JSF Bean-Property mit Parameter aufrufen Allgemeines EE 12
M JSF & EJB "Bean not bound" Problem Allgemeines EE 4
R Zugriff auf Managed Bean aus einem Filter Allgemeines EE 2
boxi JSF von einem Bean auf ein anderes Bean zugreifen Allgemeines EE 3
J Bean in der init-Methode des Servlets instanzieren Allgemeines EE 9
Y JSF - einzelne Bean zerstören/ungültig machen Allgemeines EE 2
S In einer Bean-Methode an ndere Beans kommen Allgemeines EE 7
RaoulDuke EJB 3.0 - Exceptions aus Methoden einer Session Bean Allgemeines EE 2
V Bean-Daten in JSF-JSP finden Allgemeines EE 3
J In einem Bean zugriff auf ein SessionBean? Allgemeines EE 2
F Session Bean -> Daten aus dem Servlet holen Allgemeines EE 11
F Package beim Cookie-setzten über BEAN nicht gefunden Allgemeines EE 4
M STRUTS/Cannot retrieve definition for form bean null on acti Allgemeines EE 4
E Methoden einer Bean aufrufen? Allgemeines EE 4
P jsf SelectOneMenu: Bean als SelectItem Value Allgemeines EE 5
P Struts Form Bean vs. Session Variable Allgemeines EE 6
G Exception creating bean of class . (Struts) Allgemeines EE 8
T statische Methoden versus Application-Bean Allgemeines EE 2
N Duplicate Bean Name (Tomcate 5.X, JDK 1.5) Allgemeines EE 2
M Unterschied zwischen Servlet und Bean/EJB Allgemeines EE 2
flashfactor Logging in einem Session-Bean Allgemeines EE 2
N Einbindung einer Bean in eine JSP (Tomcat-Server 5.5.x) Allgemeines EE 2
H Sichtbarkeit von Bean-Modifikationen? Allgemeines EE 2
H JSP, Session und Java-Bean Allgemeines EE 4
R html-form mit bean:write Allgemeines EE 10
R Use bean in scriptlet in struts Allgemeines EE 4
N Deployen einer EJB3.0 Bean Allgemeines EE 4
U Enterprise Bean mit dynamischer Datenbankauswahl? Allgemeines EE 3
T Filesystemzugriff von einer Bean? Allgemeines EE 6
C Mail von einer Session Bean aus senden Allgemeines EE 2
C Message Driven Bean soll keine Nachrichten empfangen Allgemeines EE 4
A Begriffe MBean JMX-Bean? Allgemeines EE 2
K JAVA BEAN DB Connection Prob Allgemeines EE 5
B Kein definiertes Bean? --- JDeveloper Allgemeines EE 5
C JSP mit java Bean Allgemeines EE 22
T Bean übertragen von Servlet zu Servlet Allgemeines EE 9
T Variablen von Bean über Servlet setzen Allgemeines EE 5
S XML parsen in Bean Allgemeines EE 2
G Instanzvariablen mit Strings in Bean vergleichen... Allgemeines EE 3
S Struts: Problem mit <bean:message> - Tag Allgemeines EE 1
A Kommunikation zwischen Java Servlet und Bean Allgemeines EE 1
J server ignoriert jsp code Allgemeines EE 4

Ähnliche Java Themen

Neue Themen


Oben