| |
B-8 Hartnäckiger ZustandcService, v2.0 September 2002 B B.1.5 Ein Transactional NamengebencBediener Unser erster Namengebenbediener ist nicht-non-transactional: wir verursachten einen grundlegenden Lernabschnitt und verwendeten die gleiche Speicherhauptinkarnation für alle Anträge. Wir können sie zu einem transactional Namengebenbediener leicht verbessern, indem wir aktualisieren my_home() Methode und der Erbauer von NamingContextImpl Bedienstetkategorie: My_home() NamingContextStateHome { bringen Sie m_connector (NamingContextStateHome) zurück. current_session().find_storage_home(m_home_name); } NamingContextImpl( Zeichenkettehome_name, POA-poa ) { m_home_name = home_name; m_poa = poa; } Dieses nimmt auch an, daß wir eine Einheit haben, die die Verbindung zwischen beschäftigt OTS-Verhandlungen und -lernabschnitte. Z.B.: // die Implementierung von MySessionPool creates/manages // transactional Lernabschnitte; es registriert a // mitzuteilendes EndOfAssociationCallback wenn ein Lernabschnitt // wird durch die PSS-Implementierung freigegeben. allgemeine Schnittstelle MySessionPool { Get_idle_session() TransactionalSession; } allgemeine Kategorie AssociationManager { privates CosTransactions.Current m_txcurrent; privates m_pool MySessionPool; // benannten irgendwie vor der Geschäftslogik von jedem // Betrieb leeres start_of_request() der Öffentlichkeit { CosTransactions.Control-Steuerung = m_txcurrent.get_control(); wenn (Steuerung! = Null) { CosPersistentState.TransactionalSession Lernabschnitt = m_connector.current_session(); wenn (Lernabschnitt==null){ Lernabschnitt = m_pool.get_idle_session(); } } |  |
|
| |
|
|