El siguiente programa (Servidor) esta diseñado para atender solicitudes de "Estado del Tiempo" vía XMLRPC bajo el puerto TCP 12000
de la máquina local (localhost), dicho procesamiento es llevado acabo por el Parser Xerces; después se observará como este mismo Servidor puede atender solicitudes de otros Clientes que no están escritos en Java.
En base a su ambiente puede generar el siguiente Servidor XMLRPC Asegúrese que ningún otro Servidor este corriendo bajo el mismo puerto |
package com.osmosislatina.xml.xmlrpc; import java.io.IOException; import org.apache.xmlrpc.WebServer; import org.apache.xmlrpc.XmlRpc; public class ServicioClima { public static void main(String[] args) { try { XmlRpc.setDriver("org.apache.xerces.parsers.SAXParser"); // Iniciar el Servidor System.out.println("Intentando iniciar el Servidor XML-RPC en el puerto 12000..."); WebServer server = new WebServer(12000); System.out.println("Inicialización exitosa"); // Registrar Clase con el Servidor server.addHandler("clima", new Clima()); System.out.println("Clima registrado al ServicioClima"); System.out.println("Aceptando solicitudes. (Ctrl-C para terminar el servidor)"); } catch (ClassNotFoundException ex) { System.out.println("Error al buscar Clase : " + ex.getMessage()); } catch (IOException io) { System.out.println("No fue posible iniciar el servidor: " + io.getMessage()); } } } |
El primer paso es declarar las clases que serán utilizadas por el Servidor XMLRPC.
Después de iniciar el método principal se indica el uso del parser Xerces.
Posteriormente se genera una instancia del Servidor XMLRPC indicando como parámetro el puerto 12000
.
Se debe asociar una clase con los respectivos procedimientos así como un nombre para esta.
Continúan las declaraciones de los posibles errores del programa.
A continuación se describe la clase asociada y procedimientos utilizados para XMLRPC.
package com.osmosislatina.xml.xmlrpc; public class Clima { public String mundial(String pais) { if (pais.equals("mexico")) { return ""+ pais +" : Smog, que más ? "; } else if (pais.equals("canada")) { return ""+ pais +" : Frío "; } else if (pais.equals("venezuela")) { return ""+ pais +" : Cálido "; } else { return ""+ pais +" no esta disponible , por favor elija entre [mexico|canada|venezuela]"; } } } |
mundial
que en base al parámetro de entrada retorna un resultado distinto.template
, XPath, Condicionales y Ciclos en XSL.