lunes, octubre 17, 2005

Oracle vs Tomcat en el puerto 8080

Por defecto Oracle utiliza el puerto 8080 para montar Oracle XMLDB, por lo que si queremos utilizar tomcat y oracle en la misma máquina hay o bien modificar server.xml de tomcat o bien modificar el puerto de escucha de Oracle. A mi como desarrollador java, me mola mas la opción de seguir usando el puerto 8080 para mi precioso tomcat, por lo que mi decisión es clara. ORACLE FUERA de mi puerto 8080!!

El proceso es muy sencillo:
-Nos logamos en oracle como SYSDBA y con esta linea le indicamos que escuche por el puerto 8083 en vez del 8080
call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(), '/xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text()', 8083));
- Regrescamos la configuración
exec dbms_xdb.cfg_refresh;

lunes, octubre 10, 2005

Crear una plantilla

Creamos la plantilla en el directório /modules/.../templates, sera una Jsp. y le ponemos un título para poder reconocer la plantilla.

Creamos una pagina /pages/default-portada.html que se utilizara como página por defecto.

Modificamos el fichero opencms-modules.xml para añadir al módulo la definición de elementos.
    <module>
           
<name>com.avansi.webcorporativa</name>
           
<nicename><![CDATA[www.avansi.com]]></nicename>
           
<class>com.avansi.opencms.InitModule</class>
           
<description><![CDATA[Primera version de la Web de Avansi,
Portada de Magnolia a OpenCMS]]></description>
           
<version>0.8</version>
           
<authorname><![CDATA[Felix Garci­a
Borrego]]></authorname>
           
<authoremail><![CDATA[fgarcia@avansi.com]]></authoremail>
           
<datecreated/>
           
<userinstalled/>
           
<dateinstalled/>
           
<dependencies/>
           
<exportpoints>
               
<exportpoint
uri="/system/modules/com.avansi.opencms.webcorporativa/classes/"
destination="WEB-INF/classes/"/>
           
</exportpoints>
           
<resources>
               
<resource
uri="/system/modules/com.avansi.opencms.webcorporativa/"/>
           
</resources>
           
<parameters/>
           
           
<resourcetypes>
               
<type class="org.opencms.file.types.CmsResourceTypeXmlContent"
name="portada" id="200">
                   
<properties>
                       
<property>
                           
<name>template-elements</name>
                           
<value
type="shared"><![CDATA[>/system/modules/com.avansi.opencms.webcorporativa/pages/default-portada.html]]></value>
                       
</property>
                   
</properties>
                   
<param
name="schema">/system/modules/com.avansi.opencms.webcorporativa/schemas/portada.xsd</param>
               
</type>
           
</resourcetypes>
           
<explorertypes>
               
<explorertype name="portada" key="fileicon.portada"
icon="emailform.gif" reference="xmlcontent">
                   
<newresource page="structurecontent"
uri="newresource_xmlcontent.jsp?newresourcetype=portada" order="60"/>
                   
<accesscontrol>
                       
<accessentry principal="GROUP.Administrators"
permissions="+r+v+w+c"/>
                       
<accessentry principal="GROUP.Projectmanagers"
permissions="+r+v+w+c"/>
                       
<accessentry principal="GROUP.Users" permissions="+r+v+w+c"/>
                   
</accesscontrol>
               
</explorertype>
           
</explorertypes>       
             
        </module>





Creamos el fichero de recursos(com.avansi.webcorporativa.messages.properties) para que reconozca la key fileicon.portada
# Nombre para el tipo de recurso
fileicon.portada=Portada

viernes, octubre 07, 2005

Instalación OpenCMS

  • En primer lugar descargamos Tomcat y opencms
  • Instalamos Tomcat.
  • Descomprimimos el fichero opencms.war en java/tomcat/webapps/opencms
  • Arrancamos tomcat /Users/borrego/java/openCmsTomcat/catalina.sh run
  • Accedemos al instalador de OpenCMS desde el navegador:
    http://localhost:8080/opencms/setup
    y configuramos el usuario y contraseña para acceder a mysql
    grant all on * to opencms@localhost identified by 'opencms';
  • Una vez instalado opencms accedemos http://localhost:8080/opencms/opencms/index.jsp

Crear un Módulo en OpenCMS

Creamos el nuevo módulo:

Creamos el directorio en el que vamos a meter el módulo:
/system/modules/com.avansi.webcorporativa


Creamos dentro del directorio las carpetas:
/classes
/templates
/resources
/elements

Tenemos que definir estos elementos como recursos del módulo creado

A Modo de ejemplo vamos a definir un controlador para el modulo que simplemente pinte en consola los eventos que recive el módulo

Creamos el fichero :
package com.avansi.opencms;

import org.opencms.configuration.CmsConfigurationManager;
import org.opencms.db.CmsPublishList;
import org.opencms.file.CmsObject;
import org.opencms.main.CmsEvent;
import org.opencms.module.CmsModule;
import org.opencms.module.I_CmsModuleAction;
import org.opencms.report.I_CmsReport;



public class InitModule implements I_CmsModuleAction{

public void initialize(CmsObject arg0, CmsConfigurationManager arg1, CmsModule arg2) {
System.out.println("/*****\n\n\nModulo: AvansiWeb Inicializado.\n\n***/");

}

public void moduleUninstall(CmsModule arg0) {
System.out.println("/*****\n\n\nModulo: AvansiWeb Desinstalado.\n\n***/");

}

public void moduleUpdate(CmsModule arg0) {
System.out.println("/*****\n\n\nModulo: AvansiWeb Actualizado.\n\n***/");

}

public void publishProject(CmsObject arg0, CmsPublishList arg1, int arg2, I_CmsReport arg3) {
System.out.println("/*****\n\n\nModulo: AvansiWeb Publicado.\n\n***/");

}

public void shutDown(CmsModule arg0) {
System.out.println("/*****\n\n\nModulo: AvansiWeb Apagado.\n\n***/");

}

public void cmsEvent(CmsEvent e) {
System.out.println("/*****\n\n\nModulo: AvansiWeb Recibido el evento."+ e+"\n\n***/");

}

}

Subimos el paquete/fichero a: /system/modules/com.avansi.opencms.webcorporativa/classes
Configuramos la clase como clase controladora del módulo:

Indicamos que el directorio /classes es un Exportpoint

Deberemos reiniciar el tomcat para que la clase sea copiada al /WEB-INF/classes ( quizas tambien sea necesario exportar el módulo y volverlo a importar para que se copien las classes)