Java web Projekt + JPA/JDBC "Fehler beim verbinden mit dem server "localhost" auf port 1527 mit der Meldung Connection refused"
Habe ich das alte web-Projekt, das heißt "Getränke-Archiv". Sie können, unter anderem, hinzufügen, entfernen, auflisten und Bearbeiten, Getränke. Es läuft wunderbar lokal von NetBeans, aber wenn ich mein Projekt bereitstellen als .war-Datei auf einem server, der benutzt Tomcat 6, es gibt die folgende Fehlermeldung jedes mal, wenn ich versuche, eine Datenbank-operation (z.B. add trinken db):
javax.die Persistenz.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.die Persistenz.Ausnahmen.DatabaseException
Internal Exception: java.sql.SQLNonTransientConnectionException: java.net.ConnectException : Fehler beim verbinden mit dem server "localhost" auf port 1527 mit der Meldung Connection refused.
Fehler-Code: 40000
org.eclipse.die Persistenz.intern.jpa.EntityManagerSetupImpl.bereitstellen(EntityManagerSetupImpl.java:501)
org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:290)
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:268)
Archiv.Registrieren.getEntityManager(Registrieren.java:53)
Archiv.Registrieren.getDrinks(Registrieren.java:170)
servlets.ListServlet.doGet(ListServlet.java:67)
javax.- servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.- servlet.http.HttpServlet.service(HttpServlet.java:717)
Hier mein source-code (in NetBeans verwende ich GlassFish als server).
Register.java:
public class Register {
private static Register instance;
private EntityManager em;
private EntityManagerFactory emf = null;
public static Register getInstance() {
if (instance == null) {
instance = new Rekisteri();
}
return instance;
}
private Register() {
try {
Class.forName("org.apache.derby.jdbc.ClientDriver");
} catch (ClassNotFoundException ex) {
Logger.getLogger(Rekisteri.class.getName()).log(Level.SEVERE, null, ex);
}
emf = Persistence.createEntityManagerFactory("DrinksArchivePU");
}
public EntityManager getEntityManager() {
return emf.createEntityManager();
}
public void addDrink(Drink new) {
em = getEntityManager();
em.getTransaction().begin();
em.merge(new);
em.getTransaction().commit();
}
etc...//
}
persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="DrinksArchivePU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
<property name="eclipselink.jdbc.user" value="d"/>
<property name="eclipselink.jdbc.password" value="d"/>
<property name="eclipselink.jdbc.url" value="jdbc:derby://localhost:1527/drinks;create=true"/>
<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
<property name="eclipselink.ddl-generation.output-mode" value="database"/>
<property name="eclipselink.weaving" value="false"/>
<property name="eclipselink.logging.level" value="FINE"/>
</properties>
</persistence-unit>
Habe ich gelesen, dass das problem sein könnte, weil der derby network server startet nicht auf meinem server, aber wenn das so ist, wie es zu lösen ist?
EDIT: Fest, änderte ich HSQLDB JDBC-Treiber in meinem persistence.xml Einstellungen und nach, dass es war alles über das hinzufügen verschiedener fehlende jar-Dateien in mein Projekt in die server.
Hier persistence.xml jetzt:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="DrinksAchivePU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>archive.Ingredient</class>
<class>archive.Review</class>
<class>archive.Drink</class>
<class>archive.DrinkCategory</class>
<class>archive.User</class>
<class>archive.Register</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:mem:testdb;default_schema=true"/>
<property name="javax.persistence.jdbc.user" value="sa"/>
<property name="javax.persistence.jdbc.password" value=""/>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
- Ist die Datenbank auf localhost auf dem server?
- Ich bin mir nicht sicher, also wahrscheinlich nicht. Was kann ich dagegen tun?
- Kontaktieren Sie den Systemadministrator und starten Sie es. Oder starten Sie selbst, wenn es kein system-administrator.
- Haben Sie einen Blick docs.oracle.com/javaee/6/tutorial/doc/bnadi.html
Du musst angemeldet sein, um einen Kommentar abzugeben.
Glassfish kommt mit Java DB gebündelt. Das ist, warum es funktioniert, auf Ihrem lokalen Rechner. Ihre deployment-server entweder eine andere Datenbank-server-Konfiguration (überprüfen Sie Ihre persistence.xml) oder kein Datenbank-server läuft auf diesem port.