Carga de clases de aplicaciones cliente Java EE

Cuando ejecute el cliente de aplicaciones Java™ Platform, Enterprise Edition (Java EE), se creará una jerarquía de cargadores de clases para cargar las clases que utiliza la aplicación.

En la siguiente lista se describe la jerarquía de cargadores de clases:
  • El tiempo de ejecución del cliente de aplicaciones de WebSphere Application Server (Application Client) establece este valor como la variable de entorno WAS_LOGGING.
  • [AIX Solaris HP-UX Linux Windows][z/OS]El cargador de clases de extensiones es el hijo del cargador de clases de rutina de carga. Este cargador de clases contiene los archivos JAR que están en el directorio java/jre/lib/ext o los archivos JAR definidos mediante el parámetro -Djava.ext.dirs del mandato Java. El tiempo de ejecución del cliente Application Client no establece los parámetros -Djava.ext.dirs. Por lo tanto, se utilizan los archivos JAR del directorio java/jre/lib/ext.
  • [IBM i]El cargador de clases de extensiones es el hijo del cargador de clases de rutina de carga. Este cargador de clases contiene archivos JAR en los directorios raíz_servidor_aplic /java/ext, inicio_java/lib/ext o inicio_java/jre/lib/ext y /QIBM/UserData/Java400/ext. Es directorio raíz_servidor_aplic es la vía de acceso de instalación del producto. El directorio inicio_java es la vía de acceso de instalación de los archivos Java.
    [IBM i]Atención: El parámetro inicio_java puede ser cualquiera de los tres valores, en función de la Java virtual machine (JVM) que esté activada. Los tres valores posibles son:
    • /QOpenSys/QIBM/ProdData/JavaVM/jdk60/32bit (Java SE 6 32 bit)
    • /QOpenSys/QIBM/ProdData/JavaVM/jdk60/64bit (Java SE 6 64 bit)
  • El cargador de clases del sistema contiene archivos y clases JAR definidos por el parámetro -classpath del mandato Java. El tiempo de ejecución de Application Client establece este parámetro como la variable de entorno WAS_CLASSPATH.
  • El cargador de clases de WebSphere carga el tiempo de ejecución del cliente de aplicaciones y cualquier clase incluida en los directorios de usuario del cliente de aplicaciones. Los directorios que utiliza este cargador de clases se definen mediante la variable de entorno WAS_EXT_DIRS. Las variables de entorno WAS_BOOTCLASSPATH, WAS_CLASSPATH y WAS_EXT_DIRS se establecen en el script raíz_servidor_aplic/bin/setupCmdLine para las instalaciones de WebSphere Application Server o en el script raíz_servidor_aplic/bin/setupClient para las instalaciones de cliente.

A medida que se inicializa el tiempo de ejecución del cliente de aplicaciones Java EE, se crean los cargadores de clase adicionales como hijos del cargador de clases de WebSphere. Si la aplicación cliente utiliza recursos como, por ejemplo, la API Java DataBase Connectivity (JDBC), la API Java Message Service (JMS) o el Uniform Resource Locator (URL), se crea un cargador de clases diferente para cargar cada uno de estos recursos. Por último, el tiempo de ejecución de Application Client establece el cargador de clases de WebSphere para que cargue las clases en el archivo EAR procesando el manifiesto JAR del cliente repetidamente. La classpath del sistema, definida mediante la variable de entorno CLASSPATH nunca se utiliza y no forma parte de la jerarquía de los cargadores de clases.

Para poder empaquetar las aplicaciones de clientes correctamente, debe comprender qué cargador de clases carga sus clases. Cuando el código Java carga una clase, se le asigna el cargador de clases utilizado para cargar esta clase. Cualquier clase que cargue posteriormente esta clase utilizará el cargador de clases o cualquiera de sus padres, pero no utilizará los cargadores de clases hijo.

En algunos casos, el tiempo de ejecución de Application Client puede detectar si la clase de la aplicación del cliente la ha cargado un cargador de clases distinto del que ha creado para ello el tiempo de ejecución de Application Client. Cuando ocurre esto, aparece el mensaje siguiente:
WSCL0205W: se ha utilizado un cargador de clases incorrecto para la carga [0]
Este mensaje se muestra cuando la clase de la aplicación de cliente la carga uno de los cargadores de clases padre de la jerarquía. Generalmente, esto ocurre cuando se tienen las mismas clases en el archivo EAR y en la unidad de disco duro. Si uno de los cargadores de clases padre localiza una clase, cargará la clase antes de que lo haga el cargador de clases del tiempo de ejecución de Application Client. En algunos casos, la aplicación del cliente continúa funcionando correctamente. No obstante, en la mayor parte de los casos recibirá una excepción de tipo "no se ha encontrado la clase".

Configuración de los campos de classpath

Cuando empaquete su aplicación cliente Java EE, deberá configurar varios campos de classpath. Idealmente, debe empaquetar todo lo que necesite su aplicación en el archivo EAR. Este es el modo más fácil de distribuir la aplicación cliente Java EE a los clientes. No obstante, no debe empaquetar recursos como, por ejemplo, las API JDBC, las API JMS o los URL. En el caso de estos recursos, utilice las referencias a la vía de acceso de clases para acceder a estas clases den la unidad de disco duro. Es posible que también tenga otras clases instaladas en las máquinas del cliente que no necesite volver a distribuir. En tal caso, es posible que desee utilizar las referencias a classpath para acceder a las clases de la unidad de disco duro, como se describe a continuación.

Cómo hacer referencias a las clases en el archivo EAR

Las aplicaciones Java EE del producto WebSphere no utilizan la vía de acceso de clases del sistema. Utilice la entrada de classpath MANIFEST para hacer referencia a otros archivos JAR dentro del archivo EAR. Configure estos valores utilizando una herramienta de ensamblaje. Por ejemplo, si la aplicación cliente necesita acceder a la vía de acceso del archivo JAR de EJB, añada el nombre del módulo del enterprise bean desplegado a la classpath del cliente de aplicaciones. El formato del campo Classpath para cada uno de los módulos diferentes (cliente de aplicaciones, EJB, web) es el mismo:
  • Los valores deben hacer referencia a los archivos JAR y a los archivos de clase contenidos en el archivo EAR.
  • Los valores deben ser relativos a la raíz del archivo EAR.
  • Los valores no pueden hacer referencia a vías absolutas en los sistemas de archivos.
  • Si hay varios valores, éstos deben separarse mediante espacios y no mediante dos puntos o un punto y coma.
Atención: Este es el método Java para que las aplicaciones puedan funcionar independientemente de la plataforma.

Normalmente, se añaden módulos (archivos JAR) a la raíz del archivo EAR. En este caso, solamente necesita especificar el nombre del módulo (archivo JAR) en el campo Classpath. Si opta por añadir un módulo con una vía de acceso, debe especificar la vía de acceso relativa a la raíz del archivo EAR.

Para hacer referencia a los archivos de clase, debe especificar el directorio relativo a la raíz del archivo EAR. Con una herramienta de ensamblaje, puede añadir los archivos de clases individuales al archivo EAR. Se recomienda que estos archivos de clase adicionales se empaqueten en un archivo JAR. Añada este archivo JAR a los campos Classpath del módulo. Si añade archivos de clase a la raíz del archivo EAR, añada ./ a los campos Classpath del módulo.

Observe la estructura de directorio del ejemplo siguiente en la que el archivo myapp.ear contiene el archivo JAR del cliente de aplicaciones llamado myclient.jar y un módulo EJB llamado mybeans.jar. Las clases adicionales residen en los archivos class1.jar y utility/class2.zip. Una archivo de clase llamado xyz.class no se ha empaquetado en un archivo JAR sino que es la raíz del archivo EAR. Especifique ./ mybeans.jar utility/class2.zip class1.jar como el valor de la propiedad classpath. El orden de búsqueda es: myapp.ear/myclient.jar myapp.ear/xyz.class myapp.ear/mybeans.jar myapp.ear/utility/class2.zip myapp.ear/class1.jar

Cómo hacer referencia a clases que no están en el archivo EAR

Utilice el parámetro de launchClient -CCclasspath. Este parámetro se especifica durante la ejecución y toma los valores de classpath específicos de la plataforma, lo que significa que los diferentes valores se separan con dos puntos o con un punto y coma. El cliente y el servidor son parecidos en este aspecto.

Classpaths de recursos

Al configurar recursos utilizados por la aplicación cliente utilizando la herramienta ACRCT (Application Client Resource Configuration Tool[z/OS]), o la herramienta de scripts z/OS ACRCT, puede especificar vías de acceso de clase que son necesarias para el recurso. Por ejemplo, si la aplicación utiliza JDBC para una base de datos DB2, añada db2java.zip al campo Classpath del proveedor de la base de datos. Estos valores de classpath son específicos de la plataforma y requieren dos puntos o un punto y coma para separar varios valores.

En WebSphere Application Server para i5/OS, si utiliza el proveedor de JDBC de IBM® Developer Kit para Java con el fin de acceder a DB2/400, no es necesario que añada el archivo db2_classes.jar a la classpath. Sin embargo, si utiliza el proveedor de JDBC de IBM Toolbox para Java, deberá especificar la ubicación del archivo jt400.jar.

Utilización de la API de launchClient

Si utiliza el mandato launchClient, la jerarquía de cargadores de clases de WebSphere se crea automáticamente. No obstante, si utiliza la API launchClient, debe realizar personalmente la configuración. Copie el mandato del shell de launchClient para definir las propiedades del sistema Java.


Icon that indicates the type of topic Reference topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rcli_classloading
File name: rcli_classloading.html