JAVÍTÁS: Megjelent egy frissítés, amely hozzáadja a ClearRfcContext kötési tulajdonságot a WCF-alapú SAP-adapterhez a BizTalk Adapter Pack 2.0-ból vagy a BizTalk Adapter Pack 2010-ből

Hatókör
BizTalk Adapters

Érvényesség

A cikk a következőkre vonatkozik:

  • Microsoft BizTalk Adapter Pack 2.0
  • Microsoft BizTalk Adapter Pack 2010

Bevezetés

Ez a cikk egy olyan frissítést ismertet, amely egy kumulatív frissítésben szerepel, amely a ClearRfcContext kötési tulajdonságot hozzáadja a Microsoft Windows kommunikációs alaprendszer (WCF)-alapú SAP-adapterhez a Microsoft BizTalk Adapter Pack csomagból.

Tünetek

Vegyük például a következő esetet:

  • A számítógépen Microsoft BizTalk Server 2006 R2, Microsoft BizTalk Server 2009 vagy Microsoft BizTalk Server 2010 fut.

  • WCF-alapú SAP-adapterrel csatlakozik az SAP R/3-kiszolgálóhoz.

    Megjegyzés: A WCF-alapú SAP-adaptert a Microsoft BizTalk Adapter Pack 2.0 vagy a Microsoft BizTalk Adapter Pack 2010 tartalmazza.

  • Létrehoz egy BizTalk alkalmazást, amely az SAP-adapterrel hívja meg az SAP R/3-kiszolgálón lévő globális SAP-változókat használó távoli függvényhívásokat (RFC-ket).

  • Az EnableConnectionPooling kötési tulajdonságot True értékre állítja.

Ebben az esetben a szabványjavaslatok által visszaadott adatok nem a várt adatokat kapják. Emellett úgy tűnik, hogy a visszaadott adatokat befolyásolja egy korábbi hívás, amely ugyanezekhez a szabványjavaslatokhoz lett.

A ClearRfcContext kötési tulajdonság megakadályozhatja az ebben a forgatókönyvben előfordulókhoz hasonló problémákat.

Ok

Ez a probléma azért fordul elő, mert ha a kapcsolatkészletezés engedélyezve van, a megfelelő SAP-kapcsolatot a rendszer visszaadja a kapcsolatkészletnek, miután végrehajtottak egy RFC-hívást az SAP R/3-kiszolgálón. Amikor a következő RFC-hívás érkezik, a rendszer ugyanazt az SAP-kapcsolatot kéri le a kapcsolatkészletből, és ezzel hajtja végre a hívást.

Ha az RFC használ néhány globális változót, és azokat nem tisztítja meg megfelelően, az RFC következő hívása az előző hívás globális változóiban tárolt értékeket használja. Ez a helyzet váratlan következményekhez vezethet.

Megjegyzés: Ez a probléma csak akkor jelentkezik, ha a szabványjavaslat globális változókat használ, és ha a globális változókat nem tisztítja meg megfelelően az RFC.

Megoldás

A probléma megoldásához telepítse ezt a frissítést. Ezután állítsa a ClearRfcContext kötési tulajdonságot True értékre.

Összegző frissítéssel kapcsolatos információk

BizTalk Adapter Pack 2010

A problémát elhárító gyorsjavítást az 1. összegző frissítés tartalmazza a BizTalk Adapter Pack 2010 csomaghoz. 

Az összegző frissítési csomag beszerzéséről a Microsoft Tudásbázis alábbi cikkében tájékozódhat:
      2539794 1. összegző frissítőcsomag a BizTalk Adapter Pack 2010-hez

BizTalk Adapter Pack 2.0

Ez a javítás először a BizTalk Adapter Pack 2.0 2.0-s összegző frissítőcsomagjában jelent meg. Az összegző frissítési csomag beszerzéséről a Microsoft Tudásbázis alábbi cikkében tájékozódhat:

2531605 2. összegző frissítőcsomag a BizTalk Adapter Pack 2.0-hoz

További információ

A frissítéssel kapcsolatos megjegyzések

  • A ClearRfcContext kötési tulajdonság csak akkor alkalmazható, ha az EnableConnectionPooling kötési tulajdonság értéke Igaz.

  • A frissítés nélkül a WCF-alapú SAP-adapter nem törli az SAP R/3-környezetet. Ezért a viselkedés megegyezik azzal, ami akkor történik, amikor a ClearRfcContext kötési tulajdonság értéke Hamis. Az alapértelmezett érték a Hamis.

  • Ha a kapcsolatkészletezés engedélyezve van, és a ClearRfcContext kötési tulajdonság értéke Igaz, az adapter kiüríti az SAP R/3-munkamenetet, és törli az összes globális változót az SAP-kiszolgálóoldalon. Ezért az ugyanazon az SAP-kapcsolaton lévő következő hívást nem befolyásolja az aktuális hívás által beszerzett egyik állapot sem.

  • Ha a kapcsolatkészletezés engedélyezve van, és a ClearRfcContext kötési tulajdonság értéke Hamis, az adapter nem törli az SAP R/3 munkamenetet. Ebben az esetben, ha az RFC néhány globális változót használ, és a változók nem lesznek megfelelően tisztítva, az RFC következő hívása az aktuális hívás globális változóiban tárolt értékeket használhatja. Az ilyen helyzet váratlan következményekkel járhat.

  • Mivel a ClearRfcContext kötési tulajdonság további körbejárást igényel az SAP R/3-kiszolgálóra, előfordulhat, hogy kismértékű teljesítménycsökkenést tapasztal, ha a ClearRfcContext kötési tulajdonságot True értékre állítja. Azt javasoljuk, hogy a ClearRfcContext kötési tulajdonságot csak akkor állítsa True értékre, ha az RFC globális változókat használ, és az RFC nem tisztítja meg megfelelően a globális változókat.

  • Ha proxyforgatókönyvben, például .NET-kódból használja az adaptert, érdemes lehet törölni az SAP R/3 munkamenetet az RFC-hívások között ugyanazon proxy/csatornapéldányon. Ebben a frissítésben egy új, RfcClearContext nevű művelet érhető el az Adapterszolgáltatás-referencia varázsló RFC csomópontján, ha az SapBinding beállítás van kiválasztva. Az RfcClearContext művelet megpróbálja tisztítani az SAP R/3-környezetet, és az alábbiak egyikét adja vissza:

    • Igaz – Az SAP R/3-környezet tisztítása sikeres volt. További hívásokat is kezdeményezhet a proxyn/csatornán.
    • Hamis – A kapcsolat bezárult vagy hiba történt, amikor a művelet megpróbálta tisztítani az SAP R/3-környezetet. Vesse el az aktuális proxyt/csatornát, mert minden további hívás kommunikációs hibához vezethet.

Hivatkozások

Az SAP-rendszerrel létesíthető kapcsolatról további információt a Microsoft Developer Network (MSDN) alábbi webhelyein talál:

Kapcsolat létesítése az SAP-rendszerrel A BizTalk Server gyorsjavításairól a Microsoft Tudásbázis alábbi cikkében tájékozódhat:

2003907 Információ a BizTalk Server gyorsjavításokról