Sugerencias de hebras para programación de clientes ActiveX

El puente de ActiveX a EJB (Enterprise JavaBeans) da soporte al acceso libre de hebras y al acceso de hebras de apartamentos e implementa Free Threaded Marshaler para trabajar en un entorno híbrido como, por ejemplo, ASP (Active Server Pages). Cada hebra que se crea en el proceso ActiveX se duplica en el entorno Java™ cuando la hebra se comunique mediante el puente de ActiveX a EJB.

Cuando todas las referencias a objetos Java (no hay objetos JObjectProxy o JClassProxy ) se cargan en una hebra ActiveX, el puente de ActiveX a EJB desconecta la hebra del código JVM (Máquina virtual Java). Por lo tanto, debe prestar atención ya que cualquier código Java al que acceda desde una aplicación Windows de varias hebras es seguro para hebras. Esencialmente, el código Visual Basic y las aplicaciones VBScript son de hebras individuales. Por lo tanto, las aplicaciones Visual Basic y VBScript no tienen problemas de hebra en los programas Java a los que acceden. Active Server Pages y los programas C y C++ de varias hebras pueden tener problemas.

Consideremos el escenario siguiente:
  1. Se inicia un contenedor de Windows Automation de varias hebras (nuestro proceso ActiveX). Existe en la hebra A.
  2. El proceso ActiveX inicializa el puente de ActiveX a EJB, el cual inicia el código JVM. La JVM se conecta a la misma hebra y llama internamente a la hebra 1.
  3. El proceso ActiveX inicia dos hebras: B y C.
  4. La hebra B del proceso ActiveX utiliza el puente de ActiveX a EJB para acceder a un objeto que se ha creado en la hebra A. La JVM se conecta a la hebra B y la llama hebra 2.
  5. La hebra C del proceso ActiveX no se comunica nunca con el código JVM, por lo tanto, JVM no necesita nunca conectarse a la misma. Esto es así cuando el código JVM no tiene una relación individual entre las hebras de ActiveX y las hebras Java.
  6. Posteriormente, la hebra B libera todos los objetos JObjectProxy y JClassProxy que utiliza. La hebra 2 de Java se desconecta.
  7. La hebra B vuelve a utilizar el puente de ActiveX a EJB para acceder a un objeto que se ha creado en la hebra A. Una vez más, el código JVM se conecta a la hebra y la llama hebra 3.
Tabla 1. Escenario de hebra.. Escenario de hebra
Proceso ActiveX Acceso a JVM mediante el proceso ActiveX
Hebra A - creada en 1 Hebra 1 - conectada a 2
Hebra B - creada en 4 Hebra 2 - conectada en 4, desconectada en 6 Hebra 3 - Conectada en 7
Hebra C - Creada en 4  

Hebras y Active Server Pages

Active Server Pages (ASP) en Microsoft Internet Information Server es un entorno de varias hebras. Cuando cree el objeto XJB.JClassFactory, puede almacenarlo en la agrupación de aplicaciones como un objeto global de aplicación. Ahora, todas las hebras del entorno ASP pueden acceder al mismo objeto de puente de ActiveX a EJB. De forma predeterminada, Active Server Pages crean 10 hebras de departamentos por proceso ASP para cada CPU. Esto significa que cuando se inicializa el objeto de puente de ActiveX a EJB, cualquiera de las 10 hebras pueden llamarlo, y no simplemente la hebra que lo ha creado.

Si tiene que simular el comportamiento de un solo apartamento, puede crear una biblioteca de enlaces dinámicos (DLL) de ActiveX de hebras de un solo apartamento en el código Visual Basic y encapsular el objeto de puente de Active X a EJB. Esta encapsulación garantiza que todos los accesos al objeto JVM se hagan en la misma hebra. Tiene que utilizar el código <OBJECT> para asignar XJB.JClassFactory a un objeto de aplicación y debe saber cuáles son las consecuencias de introducir el comportamiento de una sola hebra en una aplicación web.

Microsoft KnowlegeBase tiene varios artículos acerca de ASP y hebras, incluidos:
  • Q243543 INFO: Do Not Store STA Objects in Session or Application
  • Q243544 INFO: Component Threading Model Summary Under Active Server Pages
  • Q243548 INFO: Design Guidelines for VB Components Under ASP

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_xthread
File name: rcli_xthread.html