HI Leute,
also stehe irgendwie auf Kriegsfuß was Datenbank Anbindung mit Java angeht....
Ich will mit der kleinen EJB3 Anwendung ne Tabelle erzeugen!
Also erstmal die Fehlermeldung:
KundenClient.class(hier steht die lookup)
Kunde.class:
KundenDAO.class:
KundenDAOImpl.class:
Meta-Inf/persistence.xml:
Im Classpath habe ich schon jbossall-client.jar und ich verwende JBoss5
Hoffe ihr könnt mir mal wieder helfen:-(
Danke schon mal!!!
also stehe irgendwie auf Kriegsfuß was Datenbank Anbindung mit Java angeht....
Ich will mit der kleinen EJB3 Anwendung ne Tabelle erzeugen!
Also erstmal die Fehlermeldung:
Code:
Exception in thread "main" javax.naming.NameNotFoundException: KundenDAOImpl not bound
at org.jnp.server.NamingServer.getBinding(NamingServer.java:771)
at org.jnp.server.NamingServer.getBinding(NamingServer.java:779)
at org.jnp.server.NamingServer.getObject(NamingServer.java:785)
at org.jnp.server.NamingServer.lookup(NamingServer.java:396)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
at sun.rmi.transport.Transport$1.run(Transport.java:177)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:553)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:808)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:667)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:273)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:251)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:160)
at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:713)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:673)
at javax.naming.InitialContext.lookup(InitialContext.java:409)
at KundenClient.main(KundenClient.java:12)
Java:
import java.util.Properties;
import javax.naming.InitialContext;
public class KundenClient {
public static void main(String[] args) throws Exception {
Properties props = new Properties();
props.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.put("java.naming.provider.url", "jnp://localhost:1099");
InitialContext context = new InitialContext(props);
KundenDAO dao = (KundenDAO) context.lookup("KundenDAOImpl/remote");
if (args.length > 0) {
if (args[0].equals("erzeuge") && args.length == 3) {
int kundenNr = dao.erzeugeKunde(args[1], args[2]);
System.out.println(kundenNr);
return;
}
else if (args[0].equals("finde") && args.length == 2) {
Kunde kunde = dao.findeKunde(Integer.parseInt(args[1]));
if (kunde != null)
System.out.println(kunde.getVorname() + " " + kunde.getNachname());
else
System.out.println("Nicht gefunden");
return;
}
else if (args[0].equals("aktualisiere") && args.length == 4) {
Kunde kunde = dao.aktualisiereKunde(Integer.parseInt(args[1]), args[2], args[3]);
if (kunde == null)
System.out.println("Kein passender Kunde vorhanden");
return;
}
}
System.out.println
("Aufruf: KundenClient\n" +
" erzeuge <Vorname> <Nachname>\n" +
" finde <ID>\n" +
" aktualisiere <ID> <Vorname> <Nachname>");
}
}
Kunde.class:
Java:
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity public class Kunde implements java.io.Serializable {
@Id @GeneratedValue private int id;
private String vorname;
private String nachname;
public int getId() { return this.id; }
public String getNachname() { return nachname; }
public String getVorname() { return vorname; }
public void setVorname(String vorname) { this.vorname = vorname; }
public void setId(int id) { this.id = id; }
public void setNachname(String nachname) { this.nachname = nachname; }
}
KundenDAO.class:
Java:
import javax.ejb.Remote;
@Remote
public interface KundenDAO {
public int erzeugeKunde(String vorname, String nachname);
public Kunde findeKunde(int id);
public Kunde aktualisiereKunde(int id, String vorname, String nachname);
}
KundenDAOImpl.class:
Java:
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Stateless(name="KundenDAOImpl")
public class KundenDAOImpl implements KundenDAO {
private @PersistenceContext EntityManager em;
public int erzeugeKunde(String vorname, String nachname) {
Kunde kunde = new Kunde();
kunde.setVorname(vorname);
kunde.setNachname(nachname);
em.persist(kunde);
return kunde.getId();
}
public Kunde findeKunde(int id) {
return em.find(Kunde.class, id);
}
public Kunde aktualisiereKunde(int id, String vorname, String nachname) {
Kunde kunde = findeKunde(id);
if(kunde != null)
{
kunde.setVorname(vorname);
kunde.setNachname(nachname);
}
return kunde;
}
}
Meta-Inf/persistence.xml:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<persistence>
<persistence-unit name="Kunden">
<jta-source>java:/PostgresDS</jta-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
</properties>
</persistence-unit>
</persistence>
Im Classpath habe ich schon jbossall-client.jar und ich verwende JBoss5
Hoffe ihr könnt mir mal wieder helfen:-(
Danke schon mal!!!
Zuletzt bearbeitet: