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
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.
Aquí dejo el módulo por si os es de utilidad.


28/01/2009 a las 16:38 |
Hola, puedes poner las imagenes de la llamada desde fuera de opencms mas grandes, que no se ven??
28/01/2009 a las 16:49 |
Hola Jose,
Ahora si pulsas sobre la imagen debe mostrarse en grande, espero que te sirva.
Un saludo.
Ángel C. Lázaro
29/01/2009 a las 08:41 |
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
29/01/2009 a las 08:44 |
De acuerdo Jose,
Lo preparo y lo cuelgo.
Un saludo.
Ángel C. Lázaro
29/01/2009 a las 08:50 |
Muchísimas gracias,me haces un favor!!
30/01/2009 a las 08:36 |
Dejo el módulo, espero que sea de utilidad.
Un saludo.
Ángel C. Lázaro
02/02/2009 a las 11:07 |
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”.
02/02/2009 a las 23:25 |
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
04/02/2009 a las 08:24 |
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
28/04/2009 a las 21:16 |
[...] 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 [...]