lunes, 9 de marzo de 2015

Como hacer que funcionen los servicios RESTFul con Eclipse Luna y Glassfish

Si estás usando Eclipse Luna RC1 junto a Glassfish vas a tener algunos problemas por el propio eclipse tal y como comentamos en otro post anterior.

El problema viene porque eclipse RC1 es una Release Candidate, es decir una versión Beta y hay cosas que han cambiado en la versión final SR1.

Supongamos que tienes instaladas las herramientas de Glassfish y quieres hacer un servicio REST con esa versión de eclipse.

Bien pues lo primero que debes hacer es NO utilizar las herramientas de creación de servicios REST de Glassfish. Bueno esto incluso aunque uses la versión SR de eclipse.
Hazlo desde las herramientas de eclipse y cuando termines te encontrarás que no funciona bien y es porque han cambiado en la versión Glassfish 4 la implementación de Jersey y por tanto el servlet de acceso es distinto. Así pues tienes que cambiar en el web.xml el servlet que aparece por este otro:


org.glassfish.jersey.servlet.ServletContainer



miércoles, 4 de marzo de 2015

No funcionan los servicios REST en eclipse luna





Hay diferencias notables entre las distintas versiones de eclipse Luna y algunas se notan una barbaridad.

Una de estas diferencias es en la gestión de los servicios REST, que dependiendo de la versión de Luna que uses aparecen más o menos opciones, o incluso ninguna.

Así pues si intentas crear un servicio REST que has visto en algún tutorial de Internet y no te aparecen las mimas opciones, o menos, o incluso distinto asistente, posiblemente esté usando Eclipse Luna RC1.

Si quieres poder trabajar con servicios REST sin problemas y usando las herramientas de eclipse lo mejor es que migres de versión hacia Eclipse Luna SR1 o bien la SR2.

Puedes encontrar una lista completa de paquetes de eclipse aquí:
http://www.eclipse.org/downloads/packages/all

Recuerda:

  • RC significa Release Candidate y todavía no puede considerarse una versión final
  • SR significa Stable Release y puede usarse con confianza.
  • M significa Milestone y por tanto en fase de desarrollo y poco estable.

El número a continuación hace referencia a la revisión en la que se encuentra. Así SR2 es más estable que SR1, pero en cualquier caso huye de las versiones M y casi con toda seguridad de las RC, o por lo menos cámbiala en cuanto aparezca una SR.

martes, 3 de marzo de 2015

Solución a Eclipse no importa proyectos EJB desde git o github

A veces al importar un proyecto desde un repositorio git o github.com nos encontramos con un problema y es que se importa mal en eclipse, sobretodo cuando el proyecto es de tipo EJB o de tipo EAR.

El problema viene porque tanto el proyecto EAR como el EJB necesitan de una serie de directorios de configuración en eclipse aunque estén vacíos y sin ese directorio eclipse no logra abrir el proyecto o si lo abre no lo trata como un proyecto Java JEE y comienza a dar excepciones y la pestaña de mensajes se llena de errores.

El asunto es fácil cuando se sabe, y es que git no guarda versiones de directorios vacíos de ahí el problema.

Así que el flujo de trabajo es el siguiente:


  1. Creamos un proyecto EJB o EAR y le añadimos el EJB y el WAR en eclipse.
  2. Creamos los componentes
  3. Creamos el repositorio local
  4. Hacemos el primer commit
  5. Lo subimos a un repositorio global como github, bitbucket o uno de nuestra empresa
  6. Un compañero hace clone del proyecto
  7. FALLA


Y es debido al asunto anterior, git no versiona directorios vacíos y necesarios para eclipse.

La solución es chapucera, pero simple y efectiva.
En esos directorios vacíos y necesarios para eclipse simplemente hay que agregar dentro un fichero vacío, sin contenido y ya está solucionado. Se incorpora ese fichero en el siguiente commit y por tanto git mantendrá también el directorio que lo contiene.

Es común informar de alguna manera que el fichero no debe borrarse, así pueden encontrar esos ficheros vacíos de contenido con el nombre: keep.

Mi recomendación es que para evitar estos problemas, como otros asociados con el trabajo de los proyectos nativos de eclipse, como versiones de java, problemas de classpath, codificación de caracteres y un largo etcétera es que uses maven.

lunes, 2 de marzo de 2015

Resolver el error 404 con enlaces permanentes de wordpress

Un error común es encontrar un error 404 "File not found" tras configurar los enlaces permanentes de wordpress (permalinks), donde las opciones predeterminadas funcionan pero las configuraciones a medida no y ya que los permalinks suelen ser una parte fundamental del SEO marketing vamos a tratar de ayudar.

Las siguientes recomendaciones pueden ayudarte a resolver el problema:

1º Opción


Asegúrate de tener activado el módulo mod_rewrite de apache.
Para saber si lo tienes activo puedes crear una página php. Llámala phpinfo.php y escribe el siguiente código en ella:
<?php phpinfo(); ?>

Accede a la dirección http://tuservidor.com/phpinfo.php  En el resultado observa la parte de módulos a ver si aparece como activo.

Si no es así debes activarlo si tienes acceso a tu host, o bien solicitar a tu proveedor que lo active.

2º Opción


Si lo tienes activo y no funciona puede que tu wordpress no pueda escribir en tu fichero .htaccess, así que comprueba los permisos necesarios para que wordpress pueda, por ejemplo prueba poniendo permisos 0775 al fichero .htaccess y repite la configuración de permalinks.

O bien copia y pega el siguiente código en el fichero:


RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]


Es posible que también tengas que cambiar los permisos del fichero index.php

3ª Opción


Si con esto tampoco funciona, la solución puede que caiga en el lado del servidor apache. Deberías poder abrir el fichero de configuración apache2.conf  (depende del sistema operativo, pero una ruta común en sistemas linux es: /etc/apache2/apache2conf y esto supone que tienes permisos y acceso completo a tu servidor, si usas una cuenta de hosting deberías ponerte en contacto con tu administrador) y buscar el siguiente código:

Options Indexes FollowSymLinks
AllowOverride None
Require all granted

y cambiar la opción por esta: 

AllowOverride All

El resto déjalo como está y todo esto asumiendo que el directorio de lectura donde tu apache busca los documentos sea /var/www/ 

4ª Opción


A veces se ha encontrado algunos fallos en las distribuciones de wordpress o de algunos plugins y este problema se ha resuelto actualizando a las últimas versiones. Así que mantén un ojo abierto sobre tus actualizaciones.

miércoles, 19 de diciembre de 2012

Ofertas de navidad en cursos online

Antes de que acabe el año sacamos unas ofertas en cursos en últimas tecnologías en el sitio www.crazycrhristmasdays.com con descuentos importantes.

Hemos oído las sugerencias y hemos creado nuestro portal de formación online con vídeos de alta calidad y tutoriales adaptados a vuestras necesidades.

Estas ofertas navideñas sólo están disponibles para el 2012 y sale una cada día, así que date prisa ya que duran solamente 24 horas.

Los contenidos son variados: Responsive Web Design, Desarrollo para móviles, Diseño de webs para móviles, Springframework, SpringMVC, Twitter Bootstrap, y muchas cosas más, pero recuerda que cada oferta sólo está dispnible durante 24horas .

Si necesitas otros tipos de cursos, estamos creando un área para webmasters donde puedes aprender  a diseñar para móviles, crear landing pages, analítica web, comercio electrónico, Responsive Web Design, temas para Wordpress, Magento, Prestashop y Moodle.

Mejor pásate por www.aulawebmaster.com y mira todo lo que tenemos preparado.

lunes, 26 de diciembre de 2011

Oracle y el fin de Java

El fin del mundo Java conocido.

Puede parecer alarmista, pero creo que el mundo java está llegando a su fin, por lo menos tal y como lo conocemos. El desarrollo de aplicaciones en Java ha ido cambiando y poco a poco han ido apareciendo nuevos lenguajes y formas de acometer proyectos.

La complejidad propia del desarrollo con este lenguaje y la complejidad sometida por metodologías de desarrollo orientadas a procesos ha hecho que muchas empresas empiecen a mirar otras alternativas como por ejemplo metodologías ágiles.

Pero en este caso, el artículo no habla de las complejidades propias del desarrollo con lenguaje java, ni de las metodologías asociadas a estos proyectos, si no de la propia Oracle, propietaria de esta plataforma de desarrollo desde que compró a Sun Microsystems.

Mucho se ha rumoreado y mucho se sigue especulando sobre el futuro del desarrollo de aplicaciones en Java. Desde luego la filosofía de Oracle nada tiene que ver con la filosofía de apertura de Sun. A este último siempre se le achacó el que no abriera la plataforma de desarrollo de Java al exterior y conservara las patentes, pero por lo menos aunque conservando las patentes, dejó que otras empresas colaboraran en la definición de está normas y prácticas de desarrollo, así como definiciones que acabaron siendo parte de las nuevas APIs y formas de J2SE y sobretodo de J2EE. Algo que hizo estandarizar los proyectos en los servidores de aplicaciones fueran del proveedor que fueran.

Decía que la filosofía de Oracle desde luego no es para nada igual a la de Sun Microsystems. Oracle es un gigante que quiere maximizar sus beneficios y ha realizado numerosas compras de empresas líderes en sus sectores. De un plumazo se ha hecho los servidores de aplicaciones más relevantes del sector: Weblogic, SunOne y OAS, comprando a Sun se ha hecho también con la base de datos gratuita más implantada en proyectos, MySql. Dispone a su vez de una de las herramientas de desarrollo para Java más usadas en este sector como NetBeans, se quedó también con toda la familia de productos de Sun y su galería de servidores Solaris.

Además de otros sectores, el fin de Java no viene por estas compras, si no por los movimientos que está realizando Oracle en este mundo. De momento canceló el proyecto OpenSolaris, ha puesto demandas a Google por uso del JDK en los dispositivos Android, hecho por el cual Google contrató al ingeniero que desarrolló el jdk y ha creado una versión de jdk adaptada a sus necesidades libre de cargas para con Oracle.

Por otra parte, también modificó la licencia de uso del servidor de integración continua Hudson, creado por ingenieros de Sun y de libre distribución, de tal modo que los creadores de Hudson han abandonado el proyecto creando un gemelo llamado Jenkins.

Java se ha convertido en el lenguaje rey para aplicaciones empresariales, nacido inicialmente como respuesta a la afronta de Microsoft y que permitió el agrupamiento de grandes empresas rivales a trabajar de alguna manera aunando esfuerzos, y resulta que el enemigo estaba en casa.

Entiendo los motivos de negocio que pueden llevar a Oracle a tomar este tipo de decisiones, pero creo que en general es una equivocación para el mundo del desarrollo de aplicaciones basadas en Java. Pese a las dificultades del desarrollo de este tipo de aplicaciones, las empresas preferían este modelo, porque estaba basado en buenas prácticas y por lo menos casi estándares. Pero este movimiento monopolístico sólo hará que las cosas cambien más deprisa.

La pregunta es clara, ¿cuánto tardará Oracle en dar el golpe de estado? ¿Cuánto tardará en decir que Java le pertenece y todo aquel que quiera desarrollar aplicaciones debe pagar royalties? De manera directa o indirecta con sus servidores o aplicaciones.

Me imagino que IBM debe de estar ya buscando alternativas. No es un movimiento sencillo, y yo calculo que al ritmo que se mueven las aplicaciones de Internet, 5 años será el tiempo suficiente para el cambio, y si contamos el ritmo de las aplicaciones empresariales, no más de 10 años.

Ahora bien, ¿Cuál será el soporte candidato al relevo? Esa es una buena pregunta, cada vez hay más movimientos en este sentido. En el caso del lenguajes Python y Ruby parecen una buena alternativa, aunque estar trabajando a nivel de fichero creo que es un atraso. Por otro lado Groovy y Scala pueden ser dos buenas alternativas a los desarrolladores Java y sobretodo con los datos que tenemos hoy día, creo que Springframework es una alternativa a tener en cuenta. Lástima que esté completamente basado en Java, pero se puede ver como VMWare está realizando movimientos creando una infraestructura basada en cloud y lenguajes como Groovy, Scala y Ruby  y mezclando con Spring, dando resultados como Grails.

El mundo Java está cambiando, Oracle devora todo lo que contiene este mundillo y sólo le falta atacar el mundo de las aplicaciones móviles, Google lo ha visto venir, incluso crea sus propios lenguajes y herramientas de desarrollo, algo normal para no depender de nadie, pero puede ser infructuoso a largo plazo aislarse tal y como hizo Nokia, mientras otros como IBM con capacidad de hacer fuerza y capacidad de decisión  y hacerse oir, se dedican a hablar del mundo del futuro y su único interés es vender hierro, y no ven la realidad que se acerca.

Tiempos de cambios, hay que ser visionario, las oportunidades saldrán para aquellos que estén preparados.

miércoles, 21 de diciembre de 2011

Botones Css3 adiós photoshop

Corren nuevos tiempos para los diseñadores.

No cabe duda que Css3 ha venido a quedarse, algunas de sus propiedades son realmente impresionantes y ha sido gracias a muchas voces relacionadas con el diseño gráfico para Internet las que se han tenido en cuenta.

Revisando unos materiales online sobre diseño de widgets para la web desde UIParade, me topé con un vídeo, donde explicaba  cómo hacer un botón con un buen diseño en photoshop (en concreto este vídeo tutorial), así que me propuse hacer lo mismo mediante CSS3 y básicamente este es el resultado:




El efecto es mejorable y cabría añadir el icono del tick dentro del botón, pero el resultado, aún con esquinas redondeadas, se parece bastante y es totalmente funcional, con rollover y todo.

Para poder ver el resultado debes disponer de un navegador con soporte a CSS3 y que soporte gradientes y sombras. Hasta la fecha los navegadores que mejor soporte dan a CSS3 son Firefox y los basados en Webkit, como Safari y Google Chrome. Opera no da un buen resultado y si has venido hasta aquí con Internet Explorer, lo siento pero no podrás ver mucho.

Sí que he encontrado algunas diferencias sobretodo en Chrome a la hora de interpretar el fondo, no lo realiza del todo uniforme. Pero no es una mala solución, ya que no se ha manejado ninguna imagen.

Las conclusiones pueden ser muchas, pero a grandes rasgos en el vídeo necesitamos adquirir una licencia de photoshop y un buen conocimiento del mismo programa, mientras que con CSS3 solamente un bloc de notas sería suficiente y otra conclusión es que no hay sobrecarga de imágenes, no hay múltiples peticiones de las mismas, ni conexiones concurrentes desde nuestro navegador (algo que por otra parte se puede resolver usando CSS Sprites), también el contenido es indexable y al ser texto descarga muy rapidamente.

La desventaja es que a día de hoy el soporte a CSS3 no es completo por todos los navegadores, aunque en el caso de Internet Explorer se puede aplicar un parche para entienda CSS3.

CSS3 viene empujando fuerte y cada vez se ve mejor su potencial, sobretodo en el desarrollo de aplicaciones móviles y tablets. Por otro lado, los diseñadores deberán empezar a conocer este tipo de herramientas y tecnología para los nuevos diseños web.

A continuación dejo el código usado para crear el botón:


<style type="text/css">
#contenedor {
  background-image: -moz-repeating-linear-gradient(150deg, rgb(102, 102, 102) 1px, rgb(0, 0, 102) 3px);
  background-image: -webkit-repeating-linear-gradient(150deg, rgb(102, 102, 102) 1px, rgb(0, 0, 102) 3px);
  background-image: repeating-linear-gradient(150deg, rgb(102, 102, 102) 1px, rgb(0, 0, 102) 3px);
  height: 100px;
  width: 150px;
  padding-top: 10px;
  padding-right: 10px;
  padding-bottom: 10px;
  padding-left: 10px;
}
#btnEnviar {
  color: rgb(6, 21, 50);
  left: 20%;
  position: relative;
  top: 20%;
  background-image: -moz-linear-gradient(rgb(94, 172, 202), rgb(70, 128, 150));
  background-image: -webkit-linear-gradient(rgb(94, 172, 202), rgb(70, 128, 150));
  background-image: linear-gradient(rgb(94, 172, 202), rgb(70, 128, 150));
  background-image: -webkit-gradient(linear, center top, center bottom, color-stop(0, rgb(94, 172, 202)), color-stop(1, rgb(70, 128, 150)));
  border-top-width: 1px;
  border-right-width: 1px;
  border-bottom-width: 1px;
  border-left-width: 1px;
  border-top-style: solid;
  border-right-style: solid;
  border-bottom-style: solid;
  border-left-style: solid;
  border-right-width: 1px;
  border-right-style: solid;
  border-right-color: rgb(51, 51, 255);
  border-bottom-width: 1px;
  border-bottom-style: solid;
  border-bottom-color: rgba(51, 51, 255, 0.25);
  -webkit-border-radius: 5px 5px 5px 5px;
  border-radius: 5px 5px 5px 5px;
  -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5);
  box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5);
  text-shadow: 0px -1px 0px rgb(0, 0, 102), 1px 1px 1px rgba(255, 255, 255, 0.5);
  padding-top: 10px;
  padding-right: 20px;
  padding-bottom: 10px;
  padding-left: 20px;
  font-weight: bold;
  vertical-align: middle;
}
#btnEnviar:hover {
  color: rgb(255, 102, 0);
  text-shadow: -1px -1px 1px rgba(255, 204, 51, 0.5), 1px 1px 1px rgba(255, 204, 0, 0.5);
}
#btnEnviar:active {
   border-top-color: #1b435e;
   background: #1b435e;
   }
</style>
 

El código html es simple, un div y un button:


<div id="contenedor">

<button id="btnEnviar" name="enviar" type="submit" value="Enviar">Enviar</button>
</div>

Articulos relacionados