Aplicável a
Este artigo é aplicável ao seguinte:
-
Microsoft BizTalk adaptador Pack 2.0
-
Pacote de adaptador do Microsoft BizTalk 2010
Introdução
Este artigo descreve uma atualização que está incluída em uma atualização cumulativa para adicionar a propriedade de ligação ClearRfcContext para o adaptador SAP com base em Microsoft Windows Communication Foundation WCF do pacote do adaptador do Microsoft BizTalk.
Sintomas
Considere o seguinte cenário:
-
Você tem um computador que esteja executando o Microsoft BizTalk Server 2006 R2, Microsoft BizTalk Server 2009 ou Microsoft BizTalk Server 2010.
-
Usar o adaptador do SAP com base em WCF para conectar-se ao servidor SAP R/3.Observação O adaptador do SAP com base em WCF está incluído no Microsoft BizTalk adaptador Pack 2.0 ou Microsoft BizTalk adaptador Pack 2010.
-
Você cria um aplicativo do BizTalk que usa o adaptador SAP para chamar chamadas de função remota (RFCs) que usam variáveis globais SAP no servidor SAP R/3.
-
Defina a propriedade de ligação EnableConnectionPooling para True.
Nesse cenário, você notar que os dados que são retornados pelas RFCs são não o que você esperava. Além disso, os dados que são retornados parece ser afetados por uma chamada anterior foi feita para a mesma propriedade de ligação RFCs.The ClearRfcContext pode evitar problemas semelhantes às que ocorrem neste cenário.
Causa
Esse problema ocorre porque, quando o pool de conexão é ativado, a conexão SAP correspondente será retornado para o pool de conexão depois que uma chamada RFC no servidor SAP R/3 é executada. Quando chega a próxima chamada RFC, a mesma conexão SAP é recuperado do pool de conexão e é usado para executar a chamada. Se a RFC usa algumas variáveis globais e eles não são limpos adequadamente, a próxima chamada a RFC usa os valores armazenados em variáveis globais da chamada anterior. Essa situação pode levar a resultados inesperados.Observação Esse problema ocorre apenas se a RFC usa variáveis globais e variáveis globais não são limpos apropriadamente pela RFC.
Resolução
Para resolver esse problema, aplica essa atualização. Em seguida, defina a propriedade de ligação ClearRfcContext para True.
Informações da atualização cumulativa
Pacote de adaptador do BizTalk 2010
O hotfix resolve esse problema está incluído na atualização cumulativa 1 para o pacote de adaptador do BizTalk 2010. Para obter mais informações sobre como obter o pacote de atualizações cumulativas, clique no número abaixo para ler o artigo na Base de Conhecimento da Microsoft: 2539794pacote de atualizações cumulativas 1 para o pacote de adaptador do BizTalk 2010
Adaptador de BizTalk Pack 2.0
Essa correção foi lançada em pacote de atualizações cumulativas 2 para BizTalk adaptador Pack 2.0. Para obter mais informações sobre como obter esse pacote de atualizações cumulativas, clique no número abaixo para ler o artigo na Base de Conhecimento da Microsoft:
2531605 Pacote de atualizações cumulativas 2 para BizTalk adaptador Pack 2.0
Informações adicionais
Observações sobre esta atualização
-
A propriedade de ligação ClearRfcContext é aplicável somente quando a propriedade de ligação EnableConnectionPooling está definida como True.
-
Sem essa atualização, o adaptador SAP com base em WCF não limpa do contexto R/3 do SAP. Portanto, o comportamento é idêntico ao que ocorre quando a propriedade de ligação ClearRfcContext é definida como False. O valor padrão é False.
-
Quando o pooling de conexão é ativado e a propriedade de ligação ClearRfcContext está definida como True, o adaptador libera a sessão de R/3 do SAP e limpa todas as variáveis globais no lado do servidor do SAP. Portanto, a próxima chamada sobre a mesma conexão SAP não é afetada por qualquer estado que foi obtido pela chamada atual.
-
Quando o pooling de conexão é ativado e a propriedade de ligação do ClearRfcContext estiver definida como False, o adaptador não limpa a sessão de R/3 do SAP. Nesse caso, se a RFC usa algumas variáveis globais e as variáveis não são limpos apropriadamente, a próxima chamada a RFC pode usar os valores armazenados em variáveis globais da chamada atual. Essa situação pode dar resultados inesperados.
-
Como a propriedade de ligação ClearRfcContext requer uma adicional ida e volta ao servidor SAP R/3, você pode ver uma pequena queda no desempenho quando você definir a propriedade de ligação ClearRfcContext para True. Recomendamos que você defina a propriedade de ligação ClearRfcContext para True somente quando a RFC usa variáveis globais e a RFC não está limpando as variáveis globais apropriadamente.
-
Quando você usar o adaptador em um cenário de proxy como do código .NET, convém limpar a sessão SAP R/3 entre chamadas RFC na mesma instância do proxy/canal. Nesta atualização, uma nova operação é chamada RfcClearContext está disponível sob o nó RFC do assistente Adicionar referência de serviço do adaptador quando a opção SapBinding estiver selecionada. A operação de RfcClearContext tenta limpar o contexto do R/3 do SAP e retorna um dos seguintes procedimentos:
-
True – a limpeza do contexto R/3 do SAP foi bem-sucedida. Você pode fazer chamadas adicionais no canal/proxy.
-
False - a conexão fechado ou desenvolvido um erro quando a operação tentou limpar o contexto do R/3 do SAP. Descarte o canal/proxy atual, como qualquer outra chamada pode causar um erro de comunicação.
-
Referências
Para obter mais informações sobre como estabelecer uma conexão com o sistema SAP, visite o seguinte site da Microsoft Developer Network (MSDN):
Estabelecer uma Conexão com o sistema SAPPara obter mais informações sobre os hotfixes do BizTalk Server, clique no número abaixo para ler o artigo na Base de Conhecimento da Microsoft:
2003907 Informações sobre os hotfixes do BizTalk Server