View Full Version : passare un XML tramite RMI
Ciao ho un applicazione che legge un XML e ne estrae i dati con Xpath, per ora faccio le cose in locale:
File xmlDocument = new File("c:/test.xml");
...
InputSource inputSource = new InputSource(new FileInputStream(xmlDocument));
Ora però vorrei far eseguire delle operazioni con il server, e chiamare il metodo remoto con RMI e passargli in qualche modo l'XML che poi si gestisce il server.
Per passarlo però come parametro mi serve qualche classe serializzata (giusto?) dunque, cosa mi consigliate per passare al server sto XML da elaborare poi tramite xpath?
thanks
theClimber
01-05-2005, 17:39
Serializzare un oggetto che e' un XML e' logicamente equivalente a riscriverlo in XML, e analogamente per la lettura.
Se le operazioni sull'XML sono tutte sul server, lato client non parsare nemmeno il file, ma passalo al server come Stringa XML.
Se invece vuoi usare la serializzazione java, API come jdom e dom4j hanno i nodi e gli elementi serializzabili. Con il W3C DOM mi sa che invece bisogna per forza riserializzare in XML (Cmq le performance di parsing e write dell'xml dovrebbero essere comparabili a quelle di serializzazione/deserializzazione, se non migliori. Ci vorrebbero dei benchmarks..)
Ciao
Serializzare un oggetto che e' un XML e' logicamente equivalente a riscriverlo in XML, e analogamente per la lettura.
Se le operazioni sull'XML sono tutte sul server, lato client non parsare nemmeno il file, ma passalo al server come Stringa XML.
Se invece vuoi usare la serializzazione java, API come jdom e dom4j hanno i nodi e gli elementi serializzabili. Con il W3C DOM mi sa che invece bisogna per forza riserializzare in XML (Cmq le performance di parsing e write dell'xml dovrebbero essere comparabili a quelle di serializzazione/deserializzazione, se non migliori. Ci vorrebbero dei benchmarks..)
Ciao
In pratica l'applicazione ora è solo "client" e fa queste cose:
- Legge file .xml
- Estrae dati con XPath da file .xml
- In base ai dati istanzia determinati oggetti
- Effettua un'elaborazione sugli oggetti.
- Restituisce con System.out.println un testo con tag tali da renderlo un file xml.
File xmlDocument = new File("c:/test.xml");
InputSource inputSource;
XPathFactory factory = XPathFactory.newInstance();
XPath xPath = factory.newXPath();
try {
inputSource = new InputSource(new FileInputStream(xmlDocument));
replication = Integer.parseInt(xPath.evaluate("/simulator/setup/replication", inputSource));
System.out.println(replication);
inputSource = new InputSource(new FileInputStream(xmlDocument));
warmuptime = Integer.parseInt(xPath.evaluate("/simulator/setup/warmuptime", inputSource));
System.out.println(warmuptime);
...
Ora devo rendere l'app client e server, usando RMI come mezzo di comunicazione.
CLIENT:
- Legge file .xml
- Chiama metodo remoto sul server e gli passa come parametro l'xml letto
SERVER:
- Riceve chiamata dove è stato passato come parametro l'xml.
- Lancia thread dove elabora il file .xml
- Estrae i dati con XPath
- Istanzia determinati oggetti
- Fa Elaborazioni su oggetti.
Ora il mio dubbio è sul "formato" del parametro che contiene l'.xml che viene passato dal client al server.
In sostanza vorrei tenere il codice il più possibile semplice.
L'xml è equiparabile ad una stringa, quindi un'idea poteva essere di ficcare il testo del file in una stringa, passarla via RMI, ma a quel punto devo in qualche modo ottenere un oggetto InputSource a partire da una stringa, in modo poi da poter continuare a lavorare come faccio attualmente sul client.
theClimber
02-05-2005, 09:18
Passalo come String e poi:
inputSource = new InputSource(new StringReader(stringaXml));
Ciao
Passalo come String e poi:
inputSource = new InputSource(new StringReader(stringaXml));
Ciao
grazieeeeee, poi provo e incrocio le dita :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.