|
El API Apache SOAP v2.2 |
Manejar Servicios
Apache-SOAP proporciona una herramienta de administración para manejar servicios. Hay dos clientes para el controlador de servicios: uno HTML usado mediante un navegador y una herramienta de la línea de comandos.
|
NOTA:
Si hemos desplegado previamente servicios a una versión anterior de Apache-SOAP, esta nueva versión podría no reconocer dichos servicios porque las clases que fueron serializadas para representar los servicios se han cambiado desde entonces. |
Ejecutar la Herramienta "Server Side Admin Tool" para Manejar Servicios
Con las Herramientas de Administración de Apache-SOAP es posible usar un navegador Web para desplegar y eliminar servicios y para revisar la lista de definiciones de servicios desplegados en un servidor SOAP dado.
Apuntamos nuestro navegador a http://hostname:port/soap/admin (ver arriba) y veremos la pantalla de Apache-SOAP Admin con tres opciones:
- Deploy para desplegar un nuevo servicio.
- Un-deploy para eliminar un servicio desplegado.
- List muestra la listra de servicios desplegados actualmente en el servidor.
El uso de estas funciones es inmediato una vez entendida la naturaleza de la información requerida para desplegar un servicio.
Información de Despliegue de Servicios
Aquí revisamos la información que define un servicio desplegado. Estas información debe proporcionarse cuando usemos la función Deploy, y puede ser navegada usando la función List. Nos referimos a esta información como las properties del servicio.
- ID. Una URN única que identifica el servicio para los clientes. Debe ser única entre los servicios desplegados y debe estar codificada como una URI. Nosotros recomendamos usar el formato: urn:UniqueServiceID. Corresponde con la ID del objeto objetivo, en la terminología de la especificación SOAP.
- Scope. Define el tiempo de vida del objeto servido en la invocación a request. Este corresponde con el atributo scope de la etiqueta <jsp:useBean> de las JavaServer Pages. Debe tener uno de los siguientes posibles valores:
- page: el objeto está disponible mientras que la página JSP (en este caso rpcrouter.jsp) envíe una respuesta de vuelta o la respuesta es re-enviada a otra página (si estamos usando el mecanismo de despliegue estándard esto es lo único que sucede).
- request: el objeto está disponible durante toda la duración de la solciitud, sin importar el reenvío.
- session: el objeto está disponible durante toda la duración de la sesión.
- application: cualquier página dentro de la aplicación podrían acceder al objeto. En particular, sucesivas llamadas al servicio que pertenezcan a diferentes sesisones compartirán el mismo ejemplar del objeto. Es importante observar que el valor de este atributo puede tener importantes implicaciones de seguridad. Los ámbitos de página y solicitud aíslan las llamadas sucesivas. En el otro extremo, el ámbito de aplicación implica que todos los objetos de servicio se comparten entre diferentes usuarios del servidor SOAP. Sería bueno crear un documento que desccriba los escenarios para los diferentes ámbitos.
- Method list Define los nombres del método que pueden ser invocados sobre el objeto de servicio.
- Provider type. Indica si el servicio está implementado usando Java, un lenguaje de script, o un proveedor definido por el usuario. Si estamos usando un proveedor definido por el usuario, también necesitaremos especificar el nombre totalmente cualificado de la clase del proveedor así como cualquier opción (parejas clave/valor) que deseemos pasarle.
- For Java services, Provider class. Nombre totalmente cualificado de la clase Java del objeto destino que sirve la solicitud.
- For Java services, Use static class. Si se selecciona a Yes el método de la clase se hace disponible como un método estático, y así no se ejemplarizará ningún objeto. Cuando se usa la invocación estática, no se puede aplicar la propiedad scope.
- For script services, Script language. Indica el lenguaje de script usado para implementar el servicio.
- For script services, Script filename. Nombre del fichero que contiene el script, o
- For script services, Script. El script real a ejecutar.
- Type mappings. Para poder controlar la serialización y deserialización de tipos específicos de Java hacia y desde XML en un estilo de codificación particular, podría ser necesario proporcionar clases de serialización y deserialización que sepan como realizar correctamente las conversiones de tipos. El servidor Apache-SOAP ya incluye clases de serialización para la mayoría de los tipos básicos en el estilo de codificación SOAP, así como la clase de codificación Bean que puede proporcionar serialización genérica de un bean en términos de propiedades. También incluye clases serializadoras/deserializadoras XML que soportan el estilo de codificación XML. Como los diferentes tipos podrían requerir soporte adicional para una correcta serialización, Apache-SOAP mantiene un registro de Serializers y Deserializers. El registro esta accesible para los administradores del servicio a través de la herramienta de administración Apache-SOAP. Para poder registrar una clase (de)serializer, la clase debe implementar los interfaces Serializer o Deserializer, de org.apache.soap.util.xml.Serializer o com.org.apache.soap.util.Deserializer.
- Default Mapping Registry. Nombre totalmente cualificado de la clase para un registro personalizado que maneje los serializer/deserializers por el servicio. Debe ser una subclase de org.apache.soap.encoding.SOAPMappingRegistry. En el descriptor de despliegue XML, puede ser especificado en un atributo defaultRegistryClass del elemento isd:mappings.
Usar la Herramienta de la Línea de Ccomandos para Manejar Servicios
La herramienta de la línea de comandos se ejecuta tecleado java org.apache.soap.server.ServiceManagerClient. Su ejecución nos presentará:
% java org.apache.soap.server.ServiceManagerClient Usage: java org.apache.soap.server.ServiceManagerClient [-auth username:password] url operation arguments
donde:
- username y password es la información de autentificación Básica HTTP
- url es la URL del enrutador Apache SOAP cuyos servicios estámos manejando
- operation y arguments son:
- deploy fichero-descriptor-despliegue.xml
- list
- query nombre-servicio
- undeploy nombre-servicio
Para desplegar un servicio, por ejemplo, tecleamos:
% java org.apache.soap.server.ServiceManagerClient
http://hostname:port/soap/servlet/rpcrouter deploy foo.xml
donde foo.xml es el descriptor de despliegue y la URL es la apropiada para nuestra instalación.
|
NOTA:
Si configuramos la opción SOAPInterfaceEnabled a false en el fichero soap.xml, se evitará que los usuarios manipulen los servicios mediante ServiceManagerClient. Sin embargo, todavía podrán hacer esto a través de las páginas JSP de administración. Para más información sobre cómo controlar el ServiceManager, mira aquí |
















































