Solução de problemas do CRM COM+
A seguir estão os problemas mais comuns encontrados ao desenvolver e usar o CRM COM+:
Mensagens de log de eventos. Se o aplicativo de servidor CRM encontrar um erro interno grave, ele falhará rapidamente (encerrará o processo de aplicativo de servidor CRM) e gravará uma mensagem no log de eventos do Windows. Consulte o log de eventos se algum problema for encontrado.
Exceções do CRM Compensator. A infraestrutura do CRM cria o Compensador do CRM e passa a ele as notificações de resultado da transação e os registros de log gravados pelo Trabalhador do CRM. Se o Compensador do CRM retornar um erro ou lançar uma exceção, é capturado pela infraestrutura do CRM, causando um failfast. Uma mensagem no log de eventos indica que uma exceção foi recebida do Compensador do CRM. É possível forçar estas exceções a serem ignoradas. (Consulte Configurações do Registro do CRM COM+.) As exceções do Compensador do CRM provavelmente significam um problema no componente específico do Compensador do CRM e não na infraestrutura do CRM em si.
Rastreio de recuperação. O traço de recuperação pode ser muito útil para determinar problemas durante a recuperação. Para obter informações sobre como habilitar o rastreamento de recuperação, consulte Configurações do Registro do CRM COM+.
Tentando executar com o CRM não habilitado. Não é suficiente simplesmente colocar os componentes CRM Worker e CRM Compensator no aplicativo de servidor COM+. O suporte para CRMs deve ser habilitado especificamente na aplicação de servidor COM+ utilizando a opção Habilitar gestores de recursos compensadores no separador Avançado das páginas de propriedades da aplicação COM+. (Consulte Configurando componentes do CRM COM+ para obter mais informações.) Se for feita uma tentativa de usar um CRM dentro de um aplicativo de servidor que não tenha o CRM habilitado, um código de erro será retornado para o CRM Worker.
Tentando executar CRMs em processos de clientes. Os CRMs não são executados em processos de clientes; eles devem ser executados em um processo de aplicativo de servidor COM+. Os componentes do CRM podem ser colocados em um pacote de biblioteca para uso por vários aplicativos de servidor COM+, mas não estão disponíveis para uso em processos de cliente. A tentativa de usar as interfaces do CRM dentro de um processo de cliente retorna um código de erro para o CRM Worker.
Recuperação em curso. A recuperação começa quando um aplicativo de servidor CRM é iniciado. No entanto, a recuperação ocorre em segundo plano durante o processamento normal do aplicativo de servidor CRM. O CRM Worker pode ser criado antes da conclusão da recuperação. Os CRMs não podem ser usados em um processo de aplicativo do servidor CRM até que a recuperação tenha sido concluída com êxito. Nesse caso, o CRM Worker recebe um código de erro "recuperação em curso" ao tentar registrar o CRM Compensator. O Trabalhador do CRM deve sondar ou atrasar até que a recuperação seja concluída. O tempo de recuperação é específico para um tipo específico de CRM, e isso deve ser considerado ao projetar o CRM. Recuperações de longa duração não são desejáveis.
Segurança no arquivo de log do CRM. Se o acesso ao arquivo de log do CRM for negado, consulte Considerações de segurança do CRM COM+ para obter uma descrição de como a segurança é definida no arquivo de log do CRM.
Transações em dúvida. Em casos raros, uma transação DTC pode entrar no estado de dúvida; ou seja, o DTC não pode determinar o resultado da transação. Para esses casos, durante a recuperação, o CRM mantém os registros de log dessa transação no arquivo de log do CRM. Quando a transação em dúvida tiver sido resolvida pelo DTC, a execução de outra recuperação do CRM concluirá a transação.
Criação e liberação do CRM Compensator. A primeira vez que um Compensador do CRM é registrado por um Trabalhador do CRM, ele é criado pela infraestrutura do CRM e consultado para determinar qual das interfaces do Compensador do CRM ele suporta. Em seguida, é imediatamente libertado. Os Compensadores de CRM precisam suportar a capacidade de serem criados e liberados sem ter tido nenhuma chamada de método interveniente. Se o Compensador do CRM não puder ser criado corretamente, talvez devido ao registro COM incorreto, ou se ele não suportar pelo menos uma das interfaces corretas do Compensador do CRM, um código de erro será retornado ao Trabalhador do CRM.
Tópicos relacionados