简体   繁体   English

Java Web 项目 + JPA/JDBC“连接到端口 1527 上的服务器本地主机时出错,消息连接被拒绝”

[英]Java web project + JPA/JDBC “Error connecting to server localhost on port 1527 with message Connection refused”

I have this old web project which is called "Drinks Archive".我有一个名为“Drinks Archive”的旧网络项目。 You can, among other things, add, remove, list and edit drinks.除其他外,您还可以添加、删除、列出和编辑饮品。 It runs fine locally from NetBeans but when I deploy my project as a .war file to a server, which uses Tomcat 6, it gives the following error every time I try to do a database operation (eg add drink to db):它在 NetBeans 本地运行良好,但是当我将我的项目作为 .war 文件部署到使用 Tomcat 6 的服务器时,每次尝试执行数据库操作(例如将饮料添加到 db)时,它都会出现以下错误:

javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.DatabaseException Internal Exception: java.sql.SQLNonTransientConnectionException: java.net.ConnectException : Error connecting to server localhost on port 1527 with message Connection refused. javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.DatabaseException 内部异常: java.sql.SQLNonTransientConnectionException: java.net.ConnectException :连接到端口 1527 上的服务器 localhost 时出错,消息连接被拒绝。 Error Code: 40000 org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(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) archive.Register.getEntityManager(Register.java:53) archive.Register.getDrinks(Register.java:170) servlets.ListServlet.doGet(ListServlet.java:67) javax.servlet.http.HttpServlet.service(HttpServlet.java:617) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)错误代码:40000 org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:501) org.eclipse.persistence.internal.jpa.EntityManagerFactoryDe​​legate.getDatabaseSession(EntityManagerFactoryDe​​legate.java:188) org.eclipse.persistence. internal.jpa.EntityManagerFactoryDe​​legate.createEntityManagerImpl(EntityManagerFactoryDe​​legate.java:277) org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:290) org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(ManagerEntityManager) java:268) archive.Register.getEntityManager(Register.java:53) archive.Register.getDrinks(Register.java:170) servlets.ListServlet.doGet(ListServlet.java:67) javax.servlet.http.HttpServlet.service( HttpServlet.java:617) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

Here's my source code, (in NetBeans I use GlassFish as a server).这是我的源代码(在 NetBeans 中,我使用 GlassFish 作为服务器)。

Register.java:注册.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:

<?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>

I read that the problem could be because of derby network server not starting on my server but if that's so, how to fix it?我读到问题可能是因为 derby 网络服务器没有在我的服务器上启动,但如果是这样,如何解决?

EDIT: Fixed, I changed to HSQLDB JDBC Driver in my persistence.xml settings and after that it was all about adding different missing jar-files to my project in the server.编辑:已修复,我在我的 persistence.xml 设置中更改为 HSQLDB JDBC 驱动程序,之后就是将不同的缺失 jar 文件添加到服务器中的项目中。

Here's persistence.xml now:现在是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="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>

Glassfish comes with Java DB bundled. Glassfish 附带了 Java DB。 That's why it works on your local machine.这就是它在您的本地机器上工作的原因。 Your deployment server either has a different database server configuration (check your persistence.xml) or no database server running at that port.您的部署服务器要么具有不同的数据库服务器配置(检查您的 persistence.xml),要么没有在该端口上运行的数据库服务器。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在端口1527上连接到服务器localhost时出错,并显示消息连接被拒绝 - Error connecting to server localhost on port 1527 with message Connection refused 在端口1527上连接到服务器localhost时出错,消息已在使用中 - Error connecting to server localhost on port 1527 with message already in use java derby错误连接到服务器本地主机1527 - java derby Error connecting to server localhost 1527 java derby连接到端口1,527上的服务器localhost,消息连接被拒绝 - java derby connecting to server localhost on port 1,527 with message Connection refused 如何解决:连接到本地主机时出错:Java中的连接被拒绝 - How to fix: Error connecting to localhost: Connection Refused in Java 连接到本地主机时出错:8060:java.net.ConnectException:连接被拒绝 - Error connecting to localhost:8060: java.net.ConnectException: Connection refused 错误:连接到套接字服务器时连接被拒绝 - ERROR: Connection refused when connecting to socket server 在Java中连接到FTP端口990时“连接被拒绝” - “Connection refused” when connecting to FTP port 990 in Java JAVA Web项目连接到firebase(而不是JDBC) - JAVA Web project connecting to firebase (instead of JDBC) 在本地主机上连接Oracle时出错:无法获得JDBC连接? - Error connecting Oracle on localhost: Could not get JDBC Connection?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM