Glassfish v3, JDBC auf Mysql....wo ist der Fehler?

Stroker89

Bekanntes Mitglied
Hallo liebe Community,

da ich im Moment dabei bin mich in EJBs einzuarbeiten und gerade ein bisschen rumteste, steh ich nun vor einem nicht ganz unerheblichen Problem bei dem ich leider nicht alleine weiter komme :(

Situation sieht wie folgt aus:

Glassfish Server lokal: check
Mysql Server: check
Datenbank namens "appservertest" erstellt: check
Tabelle namens "users" mit Felder: "ID", "Vorname", "Nachname": check
JDBC Pool und Ressource erstellt: Ping erfolgreich

Es geht darum nur einen einzigen Testeintrag in die Tabelle zu schreiben um zu schaun wie das ganze funktioniert. Client ruft vom Bean nur einen Funktion auf und übergibt zwei Strings: Vorname, Nachname.

Bean sieht wie folgt aus:

Interface:
Java:
import java.sql.SQLException;
import javax.ejb.*;
import javax.naming.NamingException;

@Remote 
public interface SimpleBean {
    
    public void mysqlinsertUser(String vorname, String nachname) throws NamingException, SQLException;

}

soweit so gut :)

Implementation:

Java:
import java.sql.*;
import javax.ejb.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;


@Stateless(name="Example", mappedName="ejb/SimpleBeanJNDI") 
public class SimpleBeanImp implements SimpleBean{
    
    public void mysqlinsertUser(String vorname, String nachname) throws NamingException, SQLException {
        
        Connection conn = null;
        try{
            Context ctx = new InitialContext();
            DataSource ds = (DataSource) ctx.lookup("NTAlumni");
            conn = ds.getConnection();
            Statement stmt = conn.createStatement();
            stmt.executeUpdate("INSERT INTO 'users' ('ID','Vorname',Nachname') VALUES ('0', 'Max', 'Mustermann');");
            
        }catch(SQLException e){
            conn.close();
        }
        
    }
        
}

Bean exportiert und in Auto Deplay gehaun, erfolgreich aktiviert, Client gestartet, Funktion aufgerufen,................kein Eintrag in der Tabelle :( sie ist immer noch leer :(

Habe ich vielleicht etwas falsch gemacht oder sogar vergessen? Ich hoffen jemand von euch kann mir weiterhelfen :(

PS: Nicht wundern die Parameter werden noch nicht gebraucht in der Funktion, wollte es erst mit festen Werten probieren.
Gruß Martin
 
G

gman

Gast
Hi,

ich würde mal einen Breakpoint in der Methode setzen und den Glassfish im Debugging-Modus starten. Dann
schau mal ob die Connection aufgebaut wird.
 
G

Gelöschtes Mitglied 5909

Gast
da fehlt ein commit würd ich sagen?!?!? da du kein jpa nutzt sind die transaktionen auch nicht container-managed, oder täusch ich mich.
 

Stroker89

Bekanntes Mitglied
Hallo danke für deine Antwort,

ich habe das mit dem Commit jetzt ausprobiert

Java:
public class SimpleBeanImp implements SimpleBean{

	public void mysqlinsertUser(String vorname, String nachname) throws NamingException, SQLException {
		Connection conn = null;
		try{
			Context ctx = new InitialContext();
			DataSource ds = (DataSource) ctx.lookup("test");
			conn = ds.getConnection();
			conn.setAutoCommit(false);
			Statement stmt = conn.createStatement();
			stmt.executeUpdate("INSERT INTO 'ejbtest', 'users' ('ID','Vorname','Nachname') VALUES ('0', 'Max', 'Mustermann');");
			conn.commit();
			conn.setAutoCommit(true);
		}catch(SQLException e){
			conn.close();
		}
		
	}
		
}

Es kommt auch kein Exception zurück :(

Leider ist diese Änderung auch ohne Erfolg gewesen.
 
G

gman

Gast
"executeUpdate" gibt ja ein "int" zurück, schau doch mal welcher Wert da ankommt.

Und ich glaube das "setAutocommit()" ist relativ sinnlos wenn es NACH dem commit kommt ;-)
 
G

Gelöschtes Mitglied 5909

Gast
Java:
        }catch(SQLException e){
            e.printStackTrace();
            conn.close();
        }

mach das mal so
 
J

JohannisderKaeufer

Gast
Java:
throws NamingException, SQLException

Wirf die Exceptions mal nicht weiter, sondern behandle das im try-catch-Block.
Also Stacktrace ausgeben.
 

Ähnliche Java Themen

Neue Themen


Oben