المشاركات

عرض الرسائل ذات التصنيف trucos

NetBeans Portable + Java Portable [+ GlassFish Portable + Tomcat Portable...]

صورة
Lo más requerido de una aplicación es que sea portable, y - según viendo algunas estadísticas - existen programadores que quieren tener el NetBeans también portable. Qué significa que una aplicación sea portable? Bueno, que se pueda ejecutar sin que se instale en el sistema operativo. Así que en este post explicaré un truco para que tengas tu NetBeans IDE de manera portable.

Maven: Crear app .jar ejecutable con bibliotecas dependientes

صورة
Lo que me gusta de NetBeans es que - al usar su propia creación de proyectos basado en Apache Ant  - es que crea una carpeta llamada dist que tiene todo lo necesario para que pueda ser distribuido y ejecutado en cualquier computador que tenga JVM. Hace un tiempo hice un post que ampliaba esta funcionalidad para que al final quedara todo empaquetado en un archivo zip: Empaquetar una aplicación para distribuir, desde NetBeans . Ahora que estoy usando un poco más de Maven , noté que eso prepara los archivos como lo hacía con Ant. No los culpo... pero quiero hacer algo igual!.

Migración de datos de MySQL desde Windows a Linux

صورة
Este es otro apunte "No Java" Si creas tablas en MySQL con nombres en Mayusculas/Minúsculas, habrás notado que puedes migrar la base de datos de un MySQL en Linux a uno en Windows sin problema.. pero no sucede al revés. ¿Por qué? MySQL crea un archivo un archivo físico por cada tabla. Entonces, en Linux una tabla llamada "Cuenta" no es lo mismo a "cuenta", ya que el sistema de archivos de Linux no lo permite. En cambio, en Windows, "Cuenta" es lo mismo que "cuenta".

Cómo cargar una página JSF en MyFaces / ADF dentro de un iframe

صورة
Oracle Application Development Framework (más conocido como ADF) está basado en Apache MyFaces . Algunas de sus configuraciones se puede hacer en los archivos de Myfaces, como el trinidad-config.xml . Esta semana me he roto la cabeza tratando de cargar una página JSF de ADF dentro de un iframe que estaba en otro contexto. Noté que sí cargaba la página, sí la identificaba, pero no la mostraba. Comencé a revisar la configuración del archivo web.xml y encontré un parámetro muy escondido.

Mostrar únicamente el contenido del portlet en Liferay

صورة
Este es un post corto, ya que es un tip. Los portlets  tienen tres estados de ventana: Minimizado (minimized) Maximizado (maximized) Normal (normal) El primero hace que el portlet se muestre "cerrado", y que solo muestre el título. El segundo hace que el portlet se muestre en toda la página web del portal. El tercero es el común: se muestra dentro del diseño del portal. Pero estos tres estados tienen algo en común: muestra el portlet dentro del diseño del portal, incluyendo sus javascript, los diseños, la cabecera, su theme, etc etc etc. Está muy bien si lo que queremos es mostrar todo el look&feel del portal adornando nuestro portlet. Ahora bien: si estamos haciendo un portlet que su contenido queremos que no salga incrustado (la palabra ' embebido' suena feo en castellano) en el portal ¿cómo le hacemos?

Apache 2.4 + Tomcat 7 en Windows

صورة
¿Para qué usar Apache con Tomcat si Tomcat ya es un servidor web? Pues bien, sabemos que el Tomcat utiliza el puerto 8080, y el Apache 80. Bastaría con que cambiemos el puerto del Tomcat a 80 y listo, los url deberían ser de la forma http://midominio.com y ya no http://midominio.com:8080 Sabemos que es más elegante evitar que la dirección no tenga puerto. Pero, si tenemos una aplicación en PHP o Python que necesariamente debe correr en Apache ¿qué hacemos? Creamos un subdominio de la forma http://app1.midominio.com http://app2.midominio.com Pues, no está mal. Lo pondré más especial: no se van a crear subdominios, sino, que todo debe estar dentro del dominio principal, como sub carpetas.  Así, por ejemplo: http://midominio.com/app1.python http://midominio.com/app2.php http://midominio.com/app3.tomcat y.. algo más divertido... le agregamos otro contenedor java totalmente diferente http://midominio.com/app4.weblogic Entonces, ya tenemos un pequeño problema ¿cómo hacemos p

¿Por valor o por referencia?

صورة
Esta es una pregunta existencial para todo programador Java. Cada uno encuentra una respuesta satisfactoria. Pero ahora veremos, basándonos en el libro para Certificación SCJP 1.5 de Katty Sierra, sobre la respuesta correcta.

Optimizando GlassFish para producción

صورة
Gracias a un Tweet de Edwin Ilovares (@_edwini) me hizo recordar en publicar un post que lo tenía pendiente desde hace un tiempo, y es sobre la optimización de GlassFish.

EJB 3.1 en Porlets de Liferay

صورة
Ya que GlassFish v3 es compatible con Java EE6, y permite módulos web con componentes EJB (por la característica propia de EJB 3.1).. y además Liferay puede ser instalado sobre GlassFish v3... y... los portlets son módulos web con otro archivo de despligue ¿los portlets para Liferay/GFv3 deberían permitir EJB 3.1?

Liferay: Registrando varios usuarios (usando complemento Hook)

صورة
He estado buscando alguna opción de Liferay que me permita crear varios usuarios a la vez... pero no tuve éxito. Pensé (y hasta pregunté en el foro de liferay.com) si se podía modificar directamente la base de datos. Pero como es un sistema complejo, hacer esto podría malograr el sistema. Entonces pensé que debería haber otra solución utilizando el API de Liferay. Al final de todo, es una plataforma, y debería existir un API completo para ello.

mysqldump: ignorando el tag DEFINER

صورة
Este es otro no-apunte-de-java. Se trata del MySQL. Resulta que he tratado de hacer un dump de un servidor a otro. Pero como tienen usuarios restringidos por host, y el mysqldump me genera el script con el tag /*!50013 DEFINER=`root`@`10.%` SQL SECURITY DEFINER */ ... pensé que debería haber algún parámetro de mysqldump para ignorar estos tags. Pero según el mismo MySQL dicen que tendría problemas de seguridad (vamos: darle derechos de pasar un VIEW o STORED PROCEDURE a alguien que no le corresponde). Así que tuve que valerme de un comando de unix/linux para ignorar estos tag:

Empaquetar una aplicación para distribuir, desde NetBeans

صورة
Uno de los tantos motivos por lo que utilizo NetBeans en lugar de otro IDE, es que utiliza la Apache Ant para compilar, crear .jar .war .ear, javadoc, etc.. prácticamente para todo, y solo usando un archivo .xml. Y lo mejor es que se puede personalizar el .xml a nuestro antojo. En este post se va a explicar cómo empaquetar una aplicación Swing en un archivo .zip para ser distribuido a los usuarios finales.

Convertir cualquier cadena en objeto java.util.Date

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = dateFormat.parse("2010-05-17 15:18:19");

Definición de DataSource en JavaEE6

Las aplicaciones Java EE que se han mostrado en este blog son más orientados para desplegarlos en GlassFish. Esto conlleva a que cada los DataSource sean de acuerdo para proveedor de cada Java EE. Así, mis ejemplos para GlassFish no funcionarían para JBoss, Geronimo, WebLogic, etc. Aún así, cuando se desarrolla la aplicación desde NetBeans, y cuando se genera el .war, este no asegura que en ese archivo no exista la configuración de DataSource para la aplicación para usar. Por ejemplo, para GlassFish desde NetBeans se crea el archivo sun-resources.xml , pero este archivo no existe dentro del .war. Por tanto, antes de desplegar el .war en el GlassFish, se necesita crear manualmente el Pool de Conexiones y el Recurso JDBC. Como siempre he dicho a los que he dictado el curso Java EE: el archivo sun-resources.xml es el archivo de recursos para el modo de desarrollo. Solo es usado desde NetBeans. Ahora bien ¿no debería haber un archivo único? Vamos: el JPA funciona para todos los motores

Dónde descargar los complementos (plugins) curiosos de NetBeans

En mi post " Plugins curiosos para NetBeans 6.8 "olvidé mencionar cómo descargar estos plugins. Realmente no pertenecen exclusivamente a la versión 6.8. Son complementos que están en fase de desarrollo, son útiles, pero no están en producción. Pero son muy buenos. Estos están disponibles en la versión de desarrollo de NetBeans. Ahora, les diré cómo incluirlos en cualquier versión de NetBeans. Si el complemento a descargar no es compatible con la versión del IDE que se tiene, se emitirá un mensaje de error.

Nuevas sugerencias (hints) de NB 6.9

صورة
He estado revisando el nuevo NetBeans 6.9 y he encontrado algunos interesantes hints. No concatenar en un StringBuilder/StringBuffer El logger debe ser final Parametriza el logger, no lo concatenes

Concatenar filas en una columna (MySQL)

Este truco lo vi en la documentación de MySQL (vamos, sí, sí. no es Java, pero es algo que encontré y quiero compartirlo). Imaginemos que tenemos una tabla así +--------+--------+ | campo1 | campo2 | +--------+--------+ | fila1 | a | | fila2 | b | | fila2 | c | | fila1 | b | | fila3 | b | | fila2 | c | +--------+--------+ Y queremos concatenar todos los valores del campo2 por cada fila no repetida de campo1 así: +--------+--------+ | campo1 | campo2 | +--------+--------+ | fila1 | a,b | | fila2 | b,c | | fila3 | b | +--------+--------+ Para ello, hay que usar la función de agregación GROUP_CONCAT SELECT campo1,group_concat(distinct campo2) FROM tabla GROUP BY 1

Combinación de teclas y autocompletar en NetBeans

Aquí podeís ver un PDF con todas las combinaciones de teclas que son usados desde la versión 6.5 del NetBeans IDE. http://www.netbeans.org/files/documents/4/2355/shortcuts-6.5.pdf Además contiene atajos que permite escribir más rapido en el IDE. Por ejemplo ¿sabias que si escribes en el editor las letras psvm e inmediatamente presionas la tecla TAB crea el método public static void main(){} con todo y parámetros?. Es un documento bien útil.

Glassfish: " Error al cargar los descriptores de implementación para el módulo..."

El escenario es el siguiente: Tienes un módulo EJB que consume un WebService, ya sea desde otro proyecto local o desde un WSDL externo al proyecto. Y tienes una aplicación web que utiliza el módulo EJB. Cuando despliegas el EJB, no hay problemas, pero cuando despliegas el módulo web, no sale nada y lanza un error: wsdl file META-INF/wsdl/client/......wsdl does not exist for service-ref... Dirás (como yo dije) "pero si compila!!!".. y pensarás "y si consumo el WS dentro del modulo web?". y te negarás porque eso rompería el esquema que pensabas... bueno... alguien también le pasó y también encontró la solución. Nada más hay que revisar el código que crea NetBeans en el EJB cuando consume un WebService: @WebServiceRef(wsdlLocation = "META-INF/wsdl/client/ProductsList/localhost_8084/ProductsListService/ProductsList.wsdl") private ProductsListService service; El EJB lo consume normalemente, porque el WSDL está dentro del mismo proyecto EJB. Cuando es llamado d

NetBeans en la bandeja del sistema (System Tray)

صورة
Encontré un plugin en la ventana "plugins" del NetBeans, llamado "System tray". Lo instalé, y me olvidé que lo habia hecho... hasta que minimicé todas las ventanas, y ví que apareció esto en mi bandeja del sistema Bueno, ahí lo tienen.. el NetBeans en el "System tray". Pueden ver sus opciones en la ficha "System tray" de "Misceláneas" de las opciones de NetBeans.