Device Manager


Creación de una aplicación utilizando la API de administración


En este apartado se describen los siguientes temas:

Introducción

Mediante la API de administración contenida en el archivo dmapi.jar o la API generada a partir de archivos WSDL, puede crear su aplicación. La API de administración incluye proxies para los servicios Web y clases de soporte para los parámetros de entrada y salida. Las clases de soporte son JavaBeans que se utilizan como parámetros de entrada y salida para los métodos proxy.

Hay información de Javadoc disponible para la API de administración en el directorio DeviceManager/api/doc. También puede consultar los archivos WSDL en el directorio DeviceManager/api/wsdl.

Configuración del entorno

Para compilar la aplicación, debe tener instalado un entorno de WebSphere, por ejemplo WebSphere Application Server, Rational Application Developer o WebSphere Application Client.

Debe estar utilizando JRE 1.4.2 (o superior). Añada el archivo dmapi.jar a la vía de acceso de clase junto con los archivos de ejecución de WebSphere siguientes:

Para un cliente gestionado que se ejecuta en un contenedor J2EE, deberá configurar el descriptor de despliegue de cliente (web.xml, ejb-jar.xml o application-client.xml). Si desea ver un ejemplo, consulte la versión de application-client.xml que está instalada en el directorio DeviceManager/api/j2ee. Los clientes gestionados están empaquetados como parte de un archivo WAR de archivador Web, JAR EJB o JAR de cliente de aplicación. Consulte la sección del Centro de información de WebSphere que trata sobre el desarrollo de clientes de servicio Web si desea obtener más información.

Para ejecutar la aplicación cliente gestionada en el entorno J2EE, sólo necesita el archivo dmapi.jar en la vía de acceso de clase. El contenedor de WebSphere proporciona acceso a todas las clases necesarias adicionales. Si la aplicación se ejecuta en un entorno de cliente de aplicación WebSphere, utilice el programa de utilidad launchClient.

Para ejecutar la aplicación de cliente no gestionada utilizando el mandato java, necesita llamar al script setupCmdLine de WebSphere y, a continuación, utilizar el mandato siguiente: (Para facilitar la lectura, el mandato aparece en varias líneas. Utilice una sola línea.)

Para Windows:

"%JAVA_HOME%\bin\java" "-Xbootclasspath/p:%WAS_BOOTCLASSPATH%"
-Djava.security.auth.login.config="%WAS_HOME%\properties\wsjaas_client.conf"
-Djava.ext.dirs="%WAS_EXT_DIRS%;%JAVA_HOME%\jre\lib\ext" -classpath "%WAS_CLASSPATH%;dmapi.jar"
nombre_clase_totalmente_calificado_para_ejecutar_los_parámetros_de_ejecución

Para AIX, Linux y Solaris:

"$JAVA_HOME/bin/java" "-Xbootclasspath/p:$WAS_BOOTCLASSPATH"
-Djava.security.auth.login.config="$WAS_HOME/properties/wsjaas_client.conf"
-Djava.ext.dirs="%WAS_EXT_DIRS%:%JAVA_HOME%\jre\lib\ext"   -classpath "$WAS_CLASSPATH:dmapi.jar
nombre_clase_totalmente_calificado_para_ejecutar_los_parámetros_de_ejecución

Nota:  En algunos entornos, la variable WAS_BOOTCLASSPATH es nula y, por consiguiente, se deberá omitir el parámetro -Xbootclasspath.

Programación de una llamada de servicio Web

Para invocar un servicio Web en el servidor Device Manager, cuando se utiliza dmapi.jar, siga estos pasos:

  1. Cree una instancia del proxy.

  2. Opcionalmente, establezca el entorno local para la localización.

  3. Opcionalmente, llame al método setEndpoint para configurar el destino del servidor Device Manager.

  4. Defina los parámetros de entrada, según sea necesario.

  5. Llame al método o a los métodos del proxy para invocar el servicio Web.

  6. Capture las excepciones que se produzcan.

Utilice el ejemplo siguiente como guía para crear un objeto Software en la base de datos de Device Manager.

import com.tivoli.dms.api.*;
import com.tivoli.dms.api.proxy.*;
try {
   //Crear instancia del proxy
   SoftwareManagerProxy proxy = new SoftwareManagerProxy();
   //proxy.setLocale(new Locale("fr","FR"));
   //proxy.setEndpoint(nuevo URL("http://nombre_servidor/dmserver/services/SoftwareManagerService"));


   //Crear objeto Software
   //El paquete de software ha de estar en el servidor
   //Web para que createSoftware se ejecute correctamente.
   Software sw = new Software();
   sw.setSoftwareType("WINCE_PACKAGE");
   sw.setSoftwareURL("http://server/testsw.pkg");

//crear software en el servidor Device Manager
   long swid = proxy.createSoftware(sw,null,null);
} catch (DeviceManagerException e) {
   System.out.println("Se ha producido una excepción en la api - " + e);
}

Para invocar un servicio Web en el servidor Device Manager utilizando la API generada desde los archivos WSDL (entorno de cliente gestionado), realice los pasos siguientes (utilice el código mostrado más abajo como guía):

  1. Asegúrese de que las clases de API generadas están en la classpath.

  2. Asegúrese de que el archivo de descriptor de despliegue de cliente esté en el directorio WEB-INF o el directorio META-INF.

  3. Cree una instancia del método InitialContext.

  4. Use una búsqueda JNDI para encontrar la fábrica del servicio.

  5. Use el método de fábrica getSoftwareManagerService para obtener la interfaz Service Endpoint Interface (SEI). Opcionalmente, puede pasar el URL para configurar el destino del servidor Device Manager.

  6. Defina los parámetros de entrada.

  7. Llame al método del stub para invocar el servicio Web.

  8. Capture las excepciones que se produzcan.

Código de ejemplo:

import com.tivoli.dms.api.*;
import javax.naming.*;
import javax.rmi.RemoteException;
import java.net.URL;
import java.net.MalformedURLException;
public static void main(String[] args) {
  javax.naming.InitialContext ic = null;
  SoftwareManagerService sw_sei = null;
  SoftwareManagerServiceService sw_factory = null;
		
  try {
     //Use la búsqueda de JNDI para saber la fábrica
    ic = new javax.naming.InitialContext();
    sw_factory =
(SoftwareManagerServiceService)ic.lookup("java:comp/env/service/SoftwareManagerServiceService");
			
  } catch (NamingException nme) {
        nme.printStackTrace();			
             return;
  }


  try {
       //get access to SEI
      sw_sei = sw_factory.getSoftwareManagerService(new URL("http://hostname:80/dmserver/services/SoftwareManagerService"));
			
      //La SEI es también el stub que se puede usar para establecer el ID de usuario y la contraseña.
         //El ID de usuario y la contraseña también se pueden establecer en los descripotores del despliegue
      SoftwareManagerServiceSoapBindingStub stub = (SoftwareManagerServiceSoapBindingStub)sw_sei;
      stub._setProperty(SoftwareManagerServiceSoapBindingStub.USERNAME_PROPERTY, "frankb");
      stub._setProperty(SoftwareManagerServiceSoapBindingStub.PASSWORD_PROPERTY, "xxxx");
			
      //Se puede usar el stub para establecer el entorno local (locale) como propiedad. También se
          //puede establecer en el descriptor de despliegue.
      //El manejador se registra en webservicesclient.xml y obtendrá el entorno local
      //en MessageContext
      stub._setProperty("Locale", java.util.Locale.GERMAN);
			
      //Cree el software
      //El paquete de software ha de estar en el servidor
      //Web para que createSoftware se ejecute correctamente.
      Software sw = new Software();
      sw.setSoftwareType("WINCE_PACKAGE");
      sw.setSoftwareURL("http://server/testsw.pkg");
      long swid = sw_sei.createSoftware(sw, null, null);
      System.out.println("created se - " + swid);
  } catch (DeviceManagerException dme) {
      System.out.println("dme - " + dme.getMessage());
  } catch (RemoteException rme) {
      rme.printStackTrace(); 
  } catch (MalformedURLException mue) {
      mue.printStackTrace(); 
  } catch (ServiceException se) {
      se.printStackTrace();
  }
			
}

En un entorno de cliente no gestionado, se puede utilizar el código siguiente para obtener acceso a la SEI (Service Endpoint Interface - Interfaz de punto final de servicio) en lugar de utilizar JNDI.

SoftwareManagerServiceServiceLocator locator = new  SoftwareManagerServiceServiceLocator();
SoftwareManagerService sw_sei = locator.getSoftwareManagerService(new URL(http://nombrehost:80/dmserver/services/SoftwareManagerService"));

El asistente para Rational Application Developer que genera los enlaces de cliente también puede generar un proxy que se puede utilizar en lugar del código mostrado más arriba. El proxy se denomina:

com.tivoli.dms.api.SoftwareManagerServiceProxy

En este caso, la codificación es similar a la utilizada en el escenario de dmapi.jar excepto en que el nombre del proxy es diferente.

Excepciones

La excepción com.tivoli.dmapi.DeviceManagerException es emitida por todos los métodos proxy y stub.

Una base de datos situada en el servidor Device Manager contiene registros para los objetos Devices, Jobs, Software, DeviceJobs y NamedQuery. Cada registro se identifica mediante un identificador exclusivo (deviceID, jobID, softwareID y queryID) que se genera en el servidor. El identificador es un atributo de solo lectura. Si se especifica un atributo de ID al crear un objeto, se emite una excepción.

Por omisión, el texto de los mensajes de excepción se devuelve en el entorno local del servidor. Esto puede modificarse pasando el entorno local del cliente al proxy mediante el método setLocale si está utilizando dmapi.jar. El tema Globalización de servicios Web proporciona más información sobre esta función.

La validación de los parámetros de entrada se efectúa en el servidor Device Manager.

Estos son algunos de los errores habituales que generan excepciones:


Información relacionada