部署后没有数据库连接(Java Hibernate)

No database connection after deployment (Java Hibernate)

我正在为学校创建一个生成业务规则的应用程序。 前端由 Apex 组成,后端是一个 java 使用休眠访问数据库的应用程序。

为了在 Apex 和 Java 之间进行通信,我正在使用休息服务(使用 struts2)。 当我在我的 IDE (netbeans) 中部署应用程序时,这工作正常。但随后它在我的本地主机上运行。这样 Apex 应用程序就无法连接到它。 (Apex申请由我校主办)

所以我尝试使用各种网站部署我的应用程序。其余服务部分仍然有效,我可以将 java 应用程序与我的 Apex 应用程序连接。

问题是 java 应用程序似乎无法在我在线部署后立即连接到数据库。 当我尝试从数据库中获取数据时,glassfish 控制台显示:

(Tosad 是 project/course 的名称)

[2016-01-08T15:23:07.004+0000] [glassfish 4.1] [INFO] [] [] 
[tid: _ThreadID=43 _ThreadName=Thread-8] [timeMillis: 1452266587004] [levelValue: 800] [[
[EL Severe]: ejb: 2016-01-08 15:23:07.004--ServerSession(1585495182)--       
Exception [EclipseLink-7060] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): 
org.eclipse.persistence.exceptions.ValidationException
Exception Description: Cannot acquire data source [TOSAD].
Internal Exception: javax.naming.NamingException: Lookup failed for 'TOSAD' in SerialContext[
myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory,
       java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl,
       java.naming.factory.url.pkgs=com.sun.enterprise.naming} 
[Root exception is javax.naming.NameNotFoundException: TOSAD not found]]]

Hibernate.cfg.xml(为了安全起见,我替换了一些信息)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate     Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
    <property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
    <property name="hibernate.connection.url">jdbc:oracle:thin:@ondora02.hu.nl:PORT:COURSE</property>
    <property name="hibernate.connection.username">USERNAME</property>
    <property name="hibernate.connection.password">PASSWORD</property>
  </session-factory>
</hibernate-configuration>

HibernateUtil.java

package Service;

import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class HibernateUtil {

    private static String orclcfg = "nl.hu.ict.jpa.oracle";
    private static String mysqlcfg = "nl.hu.ict.jpa.mysql";
    private static boolean mysql = false;
    private static String dbcfg = orclcfg;
    private static final EntityManagerFactory entityManagerFactory;

    //entityManagerFactory = Persistence.createEntityManagerFactory("nl.hu.ict.jpa.oracle" );
    static {
        try {
            if (!mysql) {
                dbcfg = orclcfg;
            }

            entityManagerFactory = Persistence.createEntityManagerFactory(dbcfg);

        } catch (Throwable th) {
            System.err.println("Initial EntityManagerFactory creation failed" + th);
            throw new ExceptionInInitializerError(th);
        }
    }

    public static EntityManagerFactory getEntityManagerFactory() {
        return entityManagerFactory;
    }

}

错误信息比较清楚。无法在远程部署的服务器上找到名为 TOSAD 的 JNDI 资源。确保它在远程服务器上的配置就像您在本地机器上所做的那样。