Entradas

JavaEE 7: Adios ManagedBean, Bienvenido CDI

En la reciente versión de Java EE7, los ManagedBean ( o también llamados Bean Administrados) ya no se usarán. Estos beans se usaban como Backend de las páginas JSF. En su lugar, se usarán inyección de dependencias, ya que se instanciarán de la misma manera como lo hacía los ManagedBean.

Cómo agregar un javascript o css a un portlet

En liferay, cuando creamos un portlet, éste tiene un .js y un .css asociados directamente al portlet. Modificamos allí, creamos nuestras cascadas o funciones JavaScript y listo. ¿Pero si queremos agregar un .js de terceros únicamente a este portlet? Aquí dejo un tip. Primero, debemos considerar el taglib liferay-util <%@ taglib uri="http://liferay.com/tld/util" prefix="liferay-util" %> Luego, debemos agregar los siguientes tags, si queremos que aparezcan nuestro JavaScript o CSS al inicio de la página web. <liferay-util:body-top> <script type="text/javascript" src="<%=PortalUtil.getStaticResourceURL(request,request.getContextPath() + "/js/mi_archivo.js")%>"></script> </liferay-util:body-top> <liferay-util:body-bottom> <script type="text/javascript"> alert("cargado"); </script> </liferay-util:body-bottom> Y si queremos que aparezca al in

Apache 2.4 + Tomcat 7 en Windows

Imagen
¿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

Java API JSON en Java EE 7 (JSR 353)

Imagen
El JSON es un formato bastante usado para el envío de datos por internet. Es más ligero que los XML, y es usado en el API de las redes sociales tales como Twitter , Google , Flickr , Facebook , etc. En Java, para poder procesar ( parsing ) un texto JSON, existen varias bibliotecas (revisar al pie de la página de http://json.org/json-es.html ). Personalmente me gusta el GSon de Google. Pero es tiempo que el mismo Java tenga incorporado su propio API para manejar JSON. En este post hablaremos un ejemplo de cómo consumir un JSON, usando otro ejemplo usado anteriormente.

WebSockets en Java EE 7 (JSR 356)

Imagen
Los WebSockets son una manera de poder comunicarse vía web entre un cliente y un servidor. A diferencia con otras tecnologías parecidas como los RESTful WebService, es que esta tecnología es bidireccional. El RESTful tiene que constantemente pedir al servidor para ver si hay un cambio, y con algunas técnicas "push" se puede simular una comunicación bidireccional. Con WebSockets, la comunicación es nativa. Ya que estamos cerca del lanzamiento de Java EE 7 implementado en GlassFish 4.0, veremos un pequeño esbozo de esta tecnología.

¿Por valor o por referencia?

Imagen
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.

RESTful parte 5: REST con autenticación

Imagen
Hasta el momento hemos visto un CRUD usando RESTful, con un objeto y varios objetos. Ahora, quiero mostrar el manejo de la seguridad en RESTful usando los estándares de Java EE6.

RESTful con NetBeans 7.3

Imagen
Este post es solo una actualización del primer apunte RESTful... la forma más ligera de hacer WebServices (Parte 1)  ya que esa vez se hizo con NetBeans 6.9.1.

Probando Java EE 7 con NetBeans

Imagen
Ya se acerca JavaEE 7, y que mejor es ir probando sus funcionalidades. Así que comenzaré (y espero continuar) con una serie que habla sobre Java EE 7.

JSON WebService Liferay 6.1 (GA2) (Queja)

Este es un post pequeño, y quizás un poco fastidiado por algo que encontré en esta nueva versión de Liferay 6.1 GA2 (es decir, la 6.1.1) Para crear un JSON WebService, basta con crear un Service en el Portlet y ya está publicado. (Leer aquí  http://www.liferay.com/community/wiki/-/wiki/Main/JSON+Web+Services ) Si usamos Tomcat, no existe ningún problema. Es más, podemos ver el API WebService en una web para hacer las pruebas desde la misma web. Por ejemplo: si creamos un portlet llamado "Test-portlet" y creamos un servicio llamado "Calc", podemos entrar a http://localhost:8080/Test-portlet/api/jsonws y vemos todo el API. Pero... si usamos el GlassFish, no aparecerá la página. Según la gente de LR, cada contenedor tiene manera diferente de reconocer su contexto. Me consta: depuré el código fuente, y desde GlassFish devuelve el contexto "null" mientras que con tomcat devuelve el contexto (o sea, Test-portlet) Y la salida que me dan es llamar a un URL c

JMX en Tomcat Windows Service

Imagen
JMX es una tecnología que permite la administración y monitoreo de aplicaciones Java. A partir de la versión 6, en el JDK viene incluido el Java VisualVM que es una herramienta que permite monitorear visualmente las aplicaciones Java en la máquina virtual. Lo pueden encontrar dentro de la carpeta bin del JDK. Cuando lo ejecutan, pueden ver como se está ejecutando las aplicaciones en Java, sus clases, qué tipo de objeto es el que está usándose más, etc. Es muy recomendable usarlo para mejorar el rendimientos de las aplicaciones. Tomcat también puede ser monitoreado desde Java VisualVM, pero encontré un detalle si ejecuto el Tomcat en modo servicio de Windows: no puedo conectarme desde el Java VisualVM. La solución es simple: modificar la configuración del servicio de Tomcat. Ejecutamos el tomcat7w.exe desde el servidores, y nos mostrará la configuración del servicio Tomcat. En la sección "Java" agregar estas líneas en la sección "Java options" -Dcom.sun.ma

Recomendaciones para el manejo de excepciones

Imagen
Cuando se programa, es necesario manejar las excepciones, controlarlas y aprovechar su información. Considero que hay tres malas prácticas que se deben evitar cuando queremos usar un método que lanza un excepción manejada. Antes de continuar con este apunte, vamos a repasar lo que es una excepción.

Backup de todas las bases de datos en MySQL

Imagen
Comparto otro post no java (OPNJ) referente a MySQL. La idea es simple: quiero hacer backup de todas las bases de datos de MySQL, pero con las siguientes condiciones: Un archivo sql por cada base de datos Que en el nombre del archivo indique la fecha en que se hizo el backup Y que se ejecute en Windows. Hacemos un archivo .bat con el siguiente contenido: set USER=root set PASS=password set DB_LIST=databases.txt REM obtenemos todas las bases de datos echo show databases where not `Database` like '%%schema' | mysql -u %USER% -p%PASS% --column-names=false > %DB_LIST% REM recorre el contenido del archivo y ejecuta el comando mysqldump FOR /F %%G IN (%DB_LIST%) DO mysqldump -u %USER% -p%PASS% -B %%G -R --hex-blob=true > %%G-%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%.sql y ahora, para que se ejecute cada cierto tiempo, usar el "Programador de Tareas de Windows".  saludos

Implementando Contextos Java e Inyección de Dependencia (CDI)

Imagen
La inyección de dependencia es una técnica popular en el desarrollo de aplicaciones empresariales java. En una inyección de dependencia, también llamada Inversión de Control (Inversion of Control - IoC) , un componente especifica los recursos de los que depende. Un inyector, típicamente un contenedor, proporciona los recursos al componente. Aunque la inyección de dependencia puede ser implementado de varias maneras, muchos desarrolladores lo implementan con anotaciones.

Hackatón de Saneamiento en América Latina

Imagen
El Banco Mundial convoca a hackers para resolver los problemas del saneamiento en América Latina a través del uso de la tecnología. Se inicia la Hackatón de Saneamiento en América Latina Premios en efectivo serán otorgados para hacer de las soluciones propuestas una realidad. Utilizar las tecnologías de la información y comunicación para hacer que más personas tengan acceso a un baño digno en Latinoamérica o que las empresas de agua tengan mejores herramientas para atender las necesidades de su comunidad son algunos de los objetivos de la Hackatón de Saneamiento 2012 en Latinoamérica .

Liferay, más que un CMS

Imagen
Estamos desarrollando una Intranet 2.0 en una reconocida empresa, utilizando para ello Liferay. Y es que usar Liferay como un Sistema de Gestión de Contenido, no sería lo más justo para tal plataforma. Se puede hacer muchas cosas con este aplicativo.

Java EE 6 Cookbook for Securing, Tuning, and Extending Enterprise Applications

Imagen
@Mick Knutson publica su libro " Java EE 6 Cookbook for Securing, Tuning, and Extending Enterprise Applications " donde se muestra, de manera general y concisa, los aspectos de seguridad, rendimiento y mejorar las aplicaciones Java EE 6. Aquí, mis comentarios del libro.

Permisos por usuario para recursos de Liferay

Imagen
A partir del Liferay 5, los permisos a los recursos (blog, foro, contenido, etc) se hacen a través de "Roles". Es decir, si se quería compartir un solo archivo a una sola persona, habría que crear un "Rol" donde esté esa persona. Eso es algo complicado de mantener, si es que estamos usando el Liferay como una intranet y se les permite  a los usuarios que compartan información únicamente a ciertos usuarios.

Resultado de Encuesta: Tutorial de Instalación de Liferay

Imagen
Bueno, la cosa estuvo reñida. Pero aquí los resultados de la encuesta sobre qué software utilizar para el curso de Liferay que estoy elaborando.

Encuesta: Tutorial de Instalación de Liferay

Estoy preparando un tutorial de Liferay y - para que los que desean llevar el curso online - me gustaría conocer qué es lo que quieren encontrar ahí