Errores y soluciones de deployment en Java EE

EL ARCHIVO GLASSFISH-RESOURCES.XML ES IMPORTANTE!
ES EL QUE TIENE TODAS LAS CONEXIONES DE BD.
SI HAY ERRORES DE DEPLOYMENT REFERIDOS A LAS CONEXIONES, HAY QUE REVISAR ESTE ARCHIVO (ESTA DENTRO DEL EJB, EN LA CARPETA SETUP)

Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTION SQL_SELECT_LIMIT=DEFAULT' at line 1
=======================================================================
Verificar que se está utilizando la version mysql-connector-java-5.1.23.jar
Y verificar que está copiado en estas ubicaciones:
                c:\glassfish4\glassfish\domains\<dominio>\lib
                c:\glassfish4\glassfish\domains\<dominio>\lib\ext

Test de webservices REST
==================
Hay que elegir correctamente el proyecto para test. La 1ra pantalla muestra como NO funciona, la 2da es la correcta (siempre elegir el proyecto con "Web Test Client in Project..."



Si da errores de FileNotFoundException (ej, que no puede encontrar el build.xml, etc)
==========================================================
Revisar las propiedades de cada proyecto, y ver si hay "missing files" en algun lado

Si da error: java.lang.Exception: Virtual server server already has a web module Web1
==========================================================

1. Hacer undeploy de la aplicacion (si es que esta deployed en glassfish)
2. Bajar servidor Glassfish
3. Borrar el contenido de la carpeta: C:\glassfish4\glassfish\domains\domain1\generated
4. Subir el servidor Glassfish
5. Hacer el deploy nuevamente

Si no encuentra el WADL cuando se quiere testear un webservice REST
=================================================
Revisar el archivo persistence.xml

Debe ser parecido a este:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="Web1PU" transaction-type="JTA">
      
      <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
      
    <jta-data-source>jdbc/achilles</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    
        <properties>
      <property name="javax.persistence.schema-generation.database.action" value="create"/>
    </properties>
  </persistence-unit>
</persistence>


Si da error de Application contains no valid components
======================================
El EJB debe contener por lo menos un Session Bean!!! sino da este error.

Si no se puede hacer el deploy
=====================
Verificar que no este intentando crear las tablas y ya estan en la base de datos.

Si no hace insert...
============
Verificar si esta marcado Use Java Transaction APIs (JTA) en persistence.xml.
Si esta marcado, los begin, commit y rollback los maneja JPA, por lo cual no hay que ponerlos.

Si no se puede hacer deploy y aparece este mensaje:
===================================

There is no installed container capable of handling this application


En el enterprise application, click derecho, Add Java EE Module
Seleccionar el módulo EJB.

Luego hacer deploy de nuevo.



Como hacer deploy utilizando el glassfish server:
================================

Click derecho sobre el enterprise application.
Clean and Build

Esto genera un archivo .ear dentro de la carpeta dist:

Por ejemplo:

C:\_KARINA\EJB2\AppGestionPersona\dist\AppGestionPersona.ear

OJO!!! si el deploy luego falla, puede que el NetBeans no haya podido generar el .ear.

En este caso:

Abrir la carpeta dist de cada una de las aplicaciones que componen la solución
Borrar todo el contenido de la carpeta "dist" [si no deja borrarlo, puede ser que el archivo lo tenga capturado el java, para eso hacer control
alt suprimir, task manager, y matar todos los java que haya... Si se hace esto hay que levantar de nuevo el servidor de aplicaciones, porque es uno
de esos javas qeu matamos recién]

Volver a hacer clean and build


[DEPLOY]

OJO!! ANTES DE HACER EL DEPLOY RECORDAR CREAR LA BASE DE DATOS!!

Renombrar el .ear generado a .zip, abrirlo y copiar el archivo glassfish-resources.xml (que esta en la carpeta del EJB), a la carpeta META-INF. (luego renombrarlo nuevamente a .ear)

OJO!!!! al archivo glassfish-resources.xml hay que configurarle el password antes de incluirlo en META-INF (en la property name="Password")

OJO!!! El nombre del datasource que se defina en el persistence unit en el netbeans debe ser asi: java:app/achilles
(The solution is making the resource an application-wide resource. Make sure you make the JNDI name prefixed with java:app/. And so,
in your case, it'll be java:app/Vodafone. This should be done in both your persistence.xml file and
in the WEB-INF/glassfish-resources.xml file also)

Para hacer el deploy desde el Glassfish:



1. Abrir Glassfish como administrador: http://localhost:4848 (usuario admin, passwd root)
2. Click en Applications
3. Click en Deploy...
4. Seleccionar "packaged file to be uploaded to the server"
5. Seleccionar el archivo .ear que se generó dentro de la carpeta "dist" del enterprise application (ej: C:\_KARINA\EJB2\AppGestionPersona\dist\AppGestionPersona.ear)
6. Dar OK


No hay comentarios:

Publicar un comentario