Suporte a Clientes para Transações
Os aplicativos clientes podem, com certos limites, suportar o uso de transações.
Aplicativos clientes em execução em um contêiner do aplicativo cliente corporativo podem demarcar explicitamente limites de transação, conforme descrito no tópico sobre transações gerenciadas por componente. Os aplicativos clientes não podem desempenhar, diretamente no contêiner do cliente, trabalho transacional no contexto de qualquer transação global que iniciarem, pois o contêiner do cliente não é um processo recuperável.
Os aplicativos clientes podem fazer pedidos para objetos remotos, como enterprise beans, no contexto de uma transação iniciada pelo cliente. Qualquer trabalho transacional desempenhado em um processo de servidor remoto e recuperável é coordenado como parte da transação iniciada pelo cliente. O coordenador de transação é criado no primeiro processo do servidor para o qual a transação iniciada pelo cliente é propagada.
Um cliente pode começar uma transação e, em seguida, acessar uma origem de dados JDBC diretamente no processo do cliente, por exemplo. Nesses casos, qualquer trabalho executado pelo provedor JDBC não é coordenado como parte da transação global. Em vez disso, o trabalho é executado em uma transação local do gerenciador de recursos. O processo do contêiner do cliente é não recuperável e não contém coordenador de transação com o qual um gerenciador de recursos pode ser inscrito.
Um cliente pode iniciar uma transação e, em seguida, chamar um componente de aplicativo remoto como um enterprise bean. Nesses casos, o contexto de transação iniciado pelo cliente é propagado implicitamente para o servidor de aplicativos remoto em que um coordenador de transação é criado. Quaisquer gerenciadores de recursos acessados no servidor de aplicativos recuperável (ou qualquer outro servidor de aplicativos que hospeda componentes de aplicativos chamados pelo cliente) são inscritos na transação global.
Os componentes do aplicativo cliente precisam estar cientes de que os gerenciadores de recursos acessados localmente não são coordenados pelas transações iniciadas pelo cliente. Os aplicativos clientes reconhecem isso por meio de uma opção de implementação que permite o acesso à interface UserTransaction no contêiner do cliente. Por padrão, o acesso à interface UserTransaction no contêiner do cliente não é permitido. Para ativar a demarcação de UserTransaction para um componente do cliente aplicativo, defina a propriedade de extensão "Permitir Demarcação de JTA" no descritor de implementação do cliente. Para obter informações sobre a edição do descritor de implementação do cliente, consulte as informações do Rational Application Developer.