Parámetros Para Web Service

De Dos Ideas.
Revisión del 23:41 14 sep 2008 de 190.172.81.135 (discusión) (Ver también)
Saltar a: navegación, buscar

Practicamente cualquier aplicación medio seria necesita usar parametros de configuración. Un webservice no iba a ser diferente.

Alternativas hay para todos los gustos o más bien para todas las necesidades, desde crear un fichero properties para ese par de parametros de configuración a uno xml para configuraciones algo más estructuradas. Incluso se ha llegado a ver usar el fichero properties-service.xml de JBoss. Una mala práctica que no aconsejamos, mejor el properties o xml empaquetado dentro de la aplicación y evitamos ataduras innecesarias.

En el caso de desarrollar un webservice con Axis2, el propio Axis2 nos ofrece otra alternativa: el fichero services.xml del propio webservice.

Veamos un ejemplo de cómo almacenar parametros de configuración simples y complejos dentro del fichero services.xml:

<service name="elWebserviceDeDosIdeas"> <description>Webservice de DosIdeas</description> <parameter name="ServiceClass">DosIdeas.ServiceClass</parameter>

<parameter name="UnParametroSimple">UnValorSimple</parameter>
<parameter name="UnParametroComplejo">
   <mailconfig>
      <username>DosIdeas</username>
      <password>clave</password>
      <host>http://mail.dominio.com</host>
   </mailconfig>
</parameter>

<operation name="operacion"> </operation> </service>

Y ahora para obtenerlos hay que hacer uso de la clase MessageContext, obtener el contexto actual y usar el método getParameter teniendo en cuenta que estamos recuperando objetos de tipo OMElement. Un código para el ejemplo anterior seria el siguiente:

MessageContext msgContext = MessageContext.getCurrentMessageContext(); Parameter parametroSimple = msgContext.getParameter("UnParametroSimple"); Parameter parametroComplejo = msgContext.getParameter("UnParametroComplejo");

System.out.println("Parametro Simple " + parametroSimple.getParameterElement().getText()); System.out.println("ParametroComplejo " + parametroComplejo.getParameterElement());

Ver también

Web Service