sql >> Base de Datos >  >> RDS >> Mysql

No se puede conectar a MySQL - Glassfish e Hibernate

Mirando la siguiente línea en el stacktrace

usted puede adivinar cuál puede ser el problema. El primer problema es el problema del controlador de la base de datos, creo. 1527 es el número de puerto predeterminado de la base de datos derby que se envía con el servidor de aplicaciones Glassfish.

Como no ha proporcionado ninguna fuente de datos en su configuración, el servidor está tratando de encontrar la base de datos predeterminada, que en este caso es derby; pero no puede conectarse a esa base de datos ya que no ha proporcionado ninguna información de conexión para esta base de datos.

Así que tienes que hacer lo siguiente en tu META-INF/persistence.xml :

  • Proporcione el transaction-type (en su configuración, se supone que es JTA porque está implementando su aplicación en el entorno JEE según la especificación) como

    <persistence-unit name="unit" transaction-type="JTA">
    
  • Proporcione el jta-data-source elemento como hijo de persistence-unit

    <persistence-unit name="unit" transaction-type="JTA">
        ...
        <jta-data-source>your_data_source_name</jta-data-source>
        ...
    </persistence-unit>
    

Para que la configuración anterior funcione, primero debe configurar su servidor de aplicaciones (Glassfish). Para hacerlo, debe descargar el controlador MySQL jdbc, descomprimirlo y copiar el archivo jar en <glassfish_installation_directory>/glassfish/domains/domain1/lib (Estoy asumiendo aquí Glassfish 3.1). La razón de esto es que Glassfish no se envía con el controlador MySQL, por lo que debe hacerlo usted mismo.

Después de esto, inicie Glassfish y abra la consola de administración (http://localhost:4848 ). En el panel izquierdo abierto

  1. Resources/JDBC/JDBC Connection Pools y crea un nuevo grupo de conexiones
  2. Resources/JDBC/JDBC Resources y crear una nueva fuente de datos. El nombre que le das a tu fuente de datos es el que tienes que poner en tu persistence.xml como se mencionó anteriormente.