| 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. | |