Publicado el Dejar un comentario

Aplicación con Hibernate 5 no puede ser instalada en Glassfish 4.1.1.

No es posible hacer el deploy de una aplicación que contiene las librerías de Hibernate 5.0.3 a Glassfish 4.1.1. En ell archivo log manda el siguiente error grave:

Grave:   java.lang.NoSuchMethodError: org.jboss.logging.Logger.debugf(Ljava/lang/String;I)V
	at org.hibernate.internal.NamedQueryRepository.checkNamedQueries(NamedQueryRepository.java:149)
	at org.hibernate.internal.SessionFactoryImpl.checkNamedQueries(SessionFactoryImpl.java:764)
	at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:495)
	at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444)
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:802)
	at org.hibernate.jpa.HibernatePersistenceProvider.createContainerEntityManagerFactory(HibernatePersistenceProvider.java:135)
	at org.glassfish.persistence.jpa.PersistenceUnitLoader.loadPU(PersistenceUnitLoader.java:199)
	at org.glassfish.persistence.jpa.PersistenceUnitLoader.<init>(PersistenceUnitLoader.java:107)
	at org.glassfish.persistence.jpa.JPADeployer$1.visitPUD(JPADeployer.java:223)
	at org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.iteratePUDs(JPADeployer.java:510)
	at org.glassfish.persistence.jpa.JPADeployer.createEMFs(JPADeployer.java:230)
	at org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:168)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:925)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:434)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219)
	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:539)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:535)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:534)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:565)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:557)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:556)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1464)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:109)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1846)
	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1722)
	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:534)
	at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:224)
	at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:189)
	at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
	at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206)
	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180)
	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
	at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111)
	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536)
	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571)
	at java.lang.Thread.run(Thread.java:745)
Grave:   Exception while preparing the app
Grave:   Exception during lifecycle processing

El problema es la incompatibilidad de versiones de la librería jboss-logging.jar que usan dichas versiones de Hibernate y Glassfish. Reemplazando la librería jboss-logging.jar que se encuentra en glassfish/modules  con la librería versión 3.3.0 (jboss-logging-3.3.0.Final.jar) se soluciona el problema.

¡No olvides dar click en los anuncios!

¡Saludos!

 

Publicado el Dejar un comentario

Mensaje “Cannot run /usr/bin/firefox” en Netbeans 8.

Hola a todos nuevamente.

Me topé con este error al querer ejecutar una aplicación web con el IDE Netbeans 8 en Ubuntu 14.04.  Netbeans no podía abrir firefox para mostrar la aplicación, Chrome funcionaba perfectamente bien.

“Googleando” el problema no daba con la solución, hasta que encontré en el log de netbeans un error lanzado por el Java:

java.io.IOException: error=2, No existe el archivo o el directorio
        at java.lang.UNIXProcess.forkAndExec(Native Method)
        at java.lang.UNIXProcess.<init>(UNIXProcess.java:187)
        at java.lang.ProcessImpl.start(ProcessImpl.java:134)
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1023)
Caused: java.io.IOException: Cannot run program "/usr/bin/firefox ": error=2, No existe el archivo o el directorio
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1042)
        at org.openide.execution.NbProcessDescriptor.exec(NbProcessDescriptor.java:202)
        at org.openide.execution.NbProcessDescriptor.exec(NbProcessDescriptor.java:154)
        at org.openide.execution.NbProcessDescriptor.exec(NbProcessDescriptor.java:218)
        at org.openide.execution.NbProcessDescriptor.exec(NbProcessDescriptor.java:229)
[catch] at org.netbeans.modules.extbrowser.UnixBrowserImpl.loadURLInBrowserInternal(UnixBrowserImpl.java:163)
        at org.netbeans.modules.extbrowser.ExtBrowserImpl$1.run(ExtBrowserImpl.java:166)
        at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1423)
        at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2033)

Si ejecutaba directamente el programa, éste respondía bien. Lo qué observé es que ese archivo no era en realidad un archivo, sino que un link que apuntaba al archivo /usr/lib/firefox/firefox.sh. Encontré el archivo ejecutable de firefox en esa misma carpeta, por lo que opté reemplazar la ruta de ese ejecutable en la ventana de administración de navegadores de netbeans como se muestra en la siguiente imagen:

Selección_409

Una vez cambiado el path del firefox y sus argumentos, la aplicación se abrió en farefox sin problemas.

(No olviden visitar los anuncios de los patrocinadores para seguir conservando este sitio).

¡Saludos!

 

 

Publicado el Dejar un comentario

Pentaho Report Designer 5.4: parametrización sql avanzada.

Utilizamos el software open source Pentaho report designer 5.4 en el trabajo diario para crear reportes que luego publicamos en el servidor de reportes biserver-ce del mismo fabricante.

Recientemente nos vimos en la necesidad de crear consultas sql dinámicas en donde el parámetro a pasar el reporte fuera el nombre de la tabla a consultar. Habíamos creado otros reportes con parámetros dónde lo que pasábamos eran valores de columnas por los que queríamos filtrar los datos, pero esta técnica no funcionó cuando el parámetro representaba el nombre de la tabla.

Nos fuimos a la documentación de este software y no estaba muy clara, ya que omitía varios pasos que en el siguiente video les comparto.

Espero que les sea útil.

¡Saludos!