Device Manager
En este apartado se describen los siguientes temas:
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.
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.
Para invocar un servicio Web en el servidor Device Manager, cuando se utiliza dmapi.jar, siga estos pasos:
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):
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.
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:
Indica que un ID de usuario o una contraseña no son válidos o se han omitido.
| Información relacionada |
|---|