Web Services sobre OpenCms

En este post voy a explicar un tema muy específico: cómo generar un módulo de OpenCms 7.0.5 que despliegue un web service sobre mismo contexto de OpenCms 7.0.5.

Para ello me recomendaron que me basara en la arquitectura Axis2 de Apache.

Antes de comenzar es muy importante que se haya comprendido cómo se ha de trabajar con un módulo de OpenCms 7.0.5 y Maven, para ello me gustaría recomendaros el estupendo post que en su día escribió mi compañero Antonio Manuel Muñiz respecto a este tema.

El primer paso que debemos dar para poder desplegar servicios web sobre el contexto de OpenCms, a través de un módulo, es preparar la instancia de OpenCms para tal propósito, para ello crearemos dentro del directorio “WEB-INF” un nuevo directorio “services” tal y como se muestra en la siguiente ilustración:

Estructura de directorios

Estructura de directorios

A continuación deberemos modificar el fichero web.xml de OpenCms para declarar el servlet de Axis2 que se encargará de atender las peticiones a los servicios web que declaremos.

<servlet>
—-<servlet-name>AxisServlet</servlet-name>
—-<display-name>Apache-Axis Servlet</display-name>
—- <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
—-<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
—-<servlet-name>AxisServlet</servlet-name>
—-<url-pattern>/services/*</url-pattern>
</servlet-mapping>

Una vez hecho esto, crearemos un módulo de OpenCms y modificaremos las directivas “<exportpoint />” del fichero “manifest.xml” para que OpenCms copie en el directorio “/WEB-INF/services” los servicios web desplegados como ficheros .aar

<exportpoint uri=”/system/modules/com.test.webservice.regard/services/” destination=”WEB-INF/services/”/>

Lo que tenemos que hacer a continuación es generar el fichero pom.xml necesario para que realice dos tareas fundamentales: obtener las librerías necesarias para que los servicios web puedan funcionar sobre la instancia de OpenCms y para que genere el fichero .aar a partir de los fuentes que le indiquemos.

Una vez hecho todo lo anterior tendremos listo el módulo para poder generar servicios web que corran dentro del mismo contexto que el OpenCms sobre el que se despliegan y, por tanto, puedan acceder a su información, para ello lo último que tendremos que hacer será generar un Singleton o un método dentro de la propia clase que se encargue de iniciar un objeto de la clase CmsObject que será el objeto a partir del cual podremos realizar todas las operaciones necesarias. Para llevar a cabo el desarrollo del servicio web para Axis2 os recomiendo el siguiente post.

Una vez hecho todo lo anterior ya solo nos quedará desplegar el módulo OpenCms y probar el nuevo servicio web a través de algún programa de generación de clientes.

0021

Respuesta positiva

Respuesta negativa

Respuesta negativa

Aquí dejo el módulo por si os es de utilidad.

Anuncios

12 Responses to Web Services sobre OpenCms

  1. Jose dice:

    Hola, puedes poner las imagenes de la llamada desde fuera de opencms mas grandes, que no se ven??

  2. Ángel Cristóbal Lázaro Ríos dice:

    Hola Jose,

    Ahora si pulsas sobre la imagen debe mostrarse en grande, espero que te sirva.

    Un saludo.

    Ángel C. Lázaro

  3. Jose dice:

    Después de haber seguido tus pasos, en algo me debo de estar equivocando, ya que no me funciona. Me podrías enviar el modulo que te queda en opencms para ver donde me falla? Un saludo,

    JOSE

  4. Ángel Cristóbal Lázaro Ríos dice:

    De acuerdo Jose,

    Lo preparo y lo cuelgo.

    Un saludo.

    Ángel C. Lázaro

  5. Jose dice:

    Muchísimas gracias,me haces un favor!!

  6. Ángel Cristóbal Lázaro Ríos dice:

    Dejo el módulo, espero que sea de utilidad.

    Un saludo.

    Ángel C. Lázaro

  7. ruton dice:

    Hola, he importado tu modulo en mi opencms y me ha dado errores por todas partes. Que estpoy haciendo mal?

    Importando /system/modules/com.test.webservice.regard/lib/xalan-2.6.0.jar … Excepción org.opencms.db.CmsDbSqlException: Error creating resource “/system/modules/com.test.webservice.regard/lib/xalan-2.6.0.jar” on path “/system/modules/com.test.webservice.regard/lib/xalan-2.6.0.jar”.

    Importando /system/modules/com.test.webservice.regard/lib/xbean-2.2.0.jar … Excepción org.opencms.db.CmsDbSqlException: Error creating resource “/system/modules/com.test.webservice.regard/lib/xbean-2.2.0.jar” on path “/system/modules/com.test.webservice.regard/lib/xbean-2.2.0.jar”.

  8. Ángel Cristóbal Lázaro Ríos dice:

    Buenas noches Mikel y José,

    No consigo replicar los errores que me comentais, he hecho la prueba en 4 OpenCms (7.0.4 y 7.0.5), el último sobre uno recién instalado, lo único que se me ocurre que pueda estar pasando es que los “uuidstructure” de los módulos que faltan ya existan en vuestra base de datos, probad a cambiarlos con cuidado de que se mantenga la estructura y que no coincida con ningún “uuidstructure” que ya exista en el manifest.

    Espero vuestras noticias.

    Un saludo.

    Ángel C. Lázaro

  9. ruton dice:

    Hola,

    He conseguido importar el modulo sin errores. La culpa no era del modulo como bien señalabas, sino que era la BBDD y su tamaño max de la memoria de 1M. Lo he hecho sobre un tomcat 5.5 y un tomcat 6 los dos con mySQL 5. Adjunto una imagen de lo que he cambiado en el MySQL Administrator para solucionar el problema de la memoria de la BBDD.

    http://www.subirimagenes.com/privadas-bbdd-335370.html

  10. […] desarrollado un módulo de OpenCms que ofrece un servicio web con dos operaciones para realizar la autenticación de usuario, a este servicio web solo hay que […]

  11. […] Para llevar a cabo su instalación es necesario, además de desplegar el módulo, instalar un servicio web en el contexto de OpenCms. […]

  12. Juanjo dice:

    Buenas Angel, he seguido tu post para crear un modulo desde cero usando el plugin de eclipse, usando tu pom pero no se como generar el manifest.xml, podrias ayudarme? Muchas gracias de antemano.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: