Este sitio contiene las normas, ficheros y utilidades para el desarrollo de aplicaciones IP para el Consorcio de la Zona Franca de Vigo

Para instalar en el server en C:\Archivos de programa\netbeans-4.1\enterprise1\jakarta-tomcat-5.5.7\common
  Parsers Xml colocar en la carpeta endorsed
  JDBC Drivers colocar en la carpeta lib
Abrir NetBeans, ir a la etiqueta Runtime/Servers/Tomcat y botón derecho editar Server.xml en <GlobalNamingResources> incluir
  <Resource driverClassName="org.gjt.mm.mysql.Driver" maxActive="4" maxIdle="2" maxWait="5000" name="jdbc/ArdanMySql" password="mipassword" type="javax.sql.DataSource" url="jdbc:mysql://localhost:3306/" username="root" />
<Resource driverClassName="com.ibm.as400.access.AS400JDBCDriver" maxActive="4" maxIdle="2" maxWait="5000" name="jdbc/Ardan" password="pepe" type="javax.sql.DataSource" url="jdbc:as400://srh.ardan.es" username="curso" />
Conjunto de dependencias utilizadas en las aplicaciones (jars)
  Dependencias colocar en c:\dependencias. Dentro de este ZIP, está ComunCZFV.jar, versión 11/05/2006
CVS (Control de Versiones)
  El libro del cvs para descargar
Cadena de conexión pserver:
:pserver:usuario@cvs.ardan.es:/home/repositorios

Los usuarios y los passwords se crean en un fichero llamado passwd que está en el subdirectorio CSVROOT dentro del repositorio al que nos conectamos. El fichero passwd tiene un usuario para cada linea en el formato usuario:password_encriptada:usuario_sistema La mejor forma de añadir usuarios es utilizar el comando
htpasswd passwd usuario
antes debemos estar dentro del subdirectorio CVSROOT del repositorio. Htpasswd añade lineas en el formato
usuario:password_encriptada
Nos falta añadir el usuario del sistema que tenga permisos para escribir en las carpetas del repositorio. Hemos creado un usuario en el sistema llamado pepe que pertenece al grupo cvsgrp y que tiene permisos para este repositorio
Cuando añadamos otro repositorio, nos aseguraremos de hacer que el usuario pepe tenga permisos en todas sus carpetas. De momento se ha creado en passwd un usuario llamado cvs con password cvs
cvs:9iD/GbOIUyIls:pepe
Este usuario nos valdrá para hacer pruebas, pero hay que añadir usuarios para los que utilicemos el repositorio a efectos de saber quien cambia las cosas.
Es importante saber que el único usuario real del sistema es "pepe" los usuarios que añadamos en el fichero passwd del subdirectorio no tienen por que existir en el sistema
La contraseña para el sistema del usuario pepe no es trivial ni interesa en principio para nada
En lugar de pepe se puede usar cualquier otro usuario del sistema con permisos para escribir en las carpetas del repositorio
Demo del CVS (Control de Versiones) en NetBeans
  Ver una demo con flash

CVS es un sistema antiguo pero que ha sido totalmente integrado en NetBeans, de forma que podamos acceder a su funcionalidad integrada totalmente con el IDE, sin necesidad de software adicional alguno. No es necesario instalar ningun cliente CVS
El valor del CVS es en este caso doble, ya que aparte de permitir trabajar en equipo y tener copias de seguridad de las diferentes versiones de nuestros programas, la forma de usarlo está totalmente integrada en el IDE. Así, por ejemplo, si cambiamos un nombre de una clase, el refactoring verifica todos los fuentes en los que se utiliza la clase cambiada y los cambia, propagando de forma automática estos cambios al CVS.
En la versión 5.5 del netbeans se continua mejorando la integración del CVS como sistema de control de versiones.
Problemas CVS
  Estamos usando para autentificarnos los mismos usuarios que tenemos en la maquina normas, pero con una password diferente. Se puede entrar con el nombre de usuario y la password del sistema, en este caso todo parecera funcionar pero no seremos capaces de acceder en escritura al reposotorio. La razón es que cuando usamos un usuario y password del CVS se nos asigna el usuario del sistema PEPE para acceder al CVS. Este usuario es el único que tiene permiso. Cuando accedemos con nuestra password REAL el CVS utiliza nuestros permisos REALES y no los de PEPE para acceder a las carpetas del CVS por lo que salen los problemas.
Ejemplos diversos y ayuda
  Conversion XML a HTML en cliente con javascritp
  Tutorial de XSL-FO, formato XML para describir páginas impresas (se usa para generar pdf)
  Tutorial de DOM XSLT XPATH, según la implementación de Microsfot, (para hacer javascript en el Explorer)
  SDK4 XML de Microsfot, (toda la documentación de la implementación XML de Microsoft)
  Ayuda sobre los Estandares XML por ZVON una web especializada en formación
Documentación de Clases y Etiquetas CZFV
  Documentación de Etiquetas CZFV
  Documentación de Clases CZFV
Nuevo!!! def es compatible con EL a través del atributo value
 

<%@page contentType="text/html"%>

<%@include file="inicializaEtiquetas.jsp"%>

<a:define>

    edad="47"

</a:define>

<html>

    <body>

        Amigo tienes ${def.value.edad} tacos 

        ${def.value.edad > 45 ? ' retirate coño ' : ' aún estas en la onda' }

    </body>

</html

Nuevo!!! acceso a funciones estaticas a través de expression language
 

<%@page contentType="text/html"%>

<%@include file="inicializaEtiquetas.jsp"%>

<a:define>

    saldo="12323474"

</a:define>

<html>

    <body>

    Tu saldo es de  ${a:format(def.value.saldo)} liras italianas

    </body>

</html>

Problemas y errores detectados
  Define no cambiaba las variables que estaban a null. Si existían con anterioridad se mantenía su valor. En las bases de datos no hay muchos campos con null. Pero si había uno, se arrastraba el valor del registro anterior. Al empezar a trabajar con null se detectó el problema. Se soluciono para def.SetElemento(String,String) Pendiente de revisar la lógica del resto.
  Cuando en un SQL se solicitan datos de varias tablas que contienen el mismo nombre de campo existe diferente comportamiento en XML y Detalle ya que XML usa los primeros y se detiene Sin embargo Detalle y EjecutaDetalle, sigue sustituyendo, por lo que los primeros son pisados por los segundos y estos por los terceros.
El problema me salto al hacer un LEFT JOIN de tabla con secundaria y pedir un secundaria.*, algunos campos de tabla estaban tambien en secundaria, pero en esta eran null, por no existir registro. Al sustituir persistieron los null Esto saltó al arreglar el bug anterior. La solución puede estar en recorrer el detalle en orden inverso.
  Si utilizamos EjecutaDetalle, se crean un porron de variables en el DEF que son permanentes a la aplicacion. Dos por cada campo del sql V_CAMPO y VNUMCAMPO. Parece más sensato que las variables de EjecutaDetalle fuesen LOCALES al EJECUTADETALLE y no globales. Está pendiente buscar una solución a esto.