É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