Parámetros Para Web Service
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());