Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Bloque de Fichero XML y parseo de el mismo

Hola,

Tengo un problemilla y espero que alguien me pueda iluminar un poco.

El problema es el siguiente, tengo que compartir entre multiples aplicaciones un ficerho XML, en el que ha unos valores de parametrización que hacen que dichas aplicaciones esten "sincronizadas".

Como es muy posible que varias aplicaciones intenten acceder a dicho fichero y realizar modificaciones al mismo tiempo lo quiero bloquear. Para ello mi codigo es el siguiente:

File file = new File(IPropiedades.FILECONTROLPATH);
FileChannel channel = new RandomAccessFile(file, "rw").getChannel();
FileLock lock = channel.lock();

una vez que el ficehro esta bloqueado lo quiero parsear y modificar sus valores , para ello mi codigo es el siguiente:

SAXBuilder builder = new SAXBuilder();
Document document = (Document) builder.build( file );
Element rootNode = document.getRootElement();
......

Cuando intento crear el Document tras haberlo bloqueado no me recoje el fichero como si no tuviera acceso a él pero el objeto que le paso es el mismo, si no realizo el bloqueo si que me lo parsea correctamente.

Asi que esta es mi duda, cualquier sugerencia será bienvenida.
¿Qué es la ingeniería biomédica?.

Muchas gracias

abril 10, 2013 | Unregistered CommenterCarlosM

Buenos dias.
El método build de clase SaxBuilder acepta varios tipos de parámetros. Revisa el Javadoc. Lo que puedes hacer el primero leer el fichero, una vez leido lo bloqueas y hacer el proceso de parseo de lo que has leido. Es decir, lees el fichero almacenandolo en un ImputString o String si no es muy grande, bloqueas tal y como lo has hecho y haces el tratamiento con SAX pasando al método build el ImputString o el String que has usado en el primer paso.

Un saludo

abril 11, 2013 | Unregistered Commenterfileal_v

Hola, gracias por el consejo, lo voy a probar pero el motivo de bloquearlo antes de leer es que ninguna otra aplicacion "mirona" pueda leer el fichero desde el momento en el que comienzo a utilizarlo, para que asi el estado de el fichero sea valido. Todo este jaleo es por intentar sincronizar distintas aplicaciones atraves de un fichero de control.

Tambien acepto sugerencias para este problema o mala planteación jejeje

abril 12, 2013 | Unregistered CommenterCarlosM

Si lo que quieres es sincronizar el acceso lo que tienes que hacer es eso, utilizar un método con el modificador "synchronized". Este método es el encargado de todo el proceso y es el único punto de acceso al fichero de tal modo que hasta que un proceso no termine de tratar el XML no entrará el siguiente obteniendo la funcionalidad que buscas.

Un saludo

abril 12, 2013 | Unregistered Commenterfileal_v