Anwendungsentwicklung: Programmieren von Clientanwendungen

CLI/ODBC-Konfigurationsschlüsselwort OleDbReportIsLongForLongTypes

Beschreibung des Schlüsselworts
Bewirkt, dass OLE DB LONG-Datentypen mit DBCOLUMNFLAGS_ISLONG markiert.
Syntax für das Schlüsselwort der db2cli.ini:
OleDbReportIsLongForLongTypes = 0 | 1
Funktional entsprechendes Anweisungsattribut:
SQL_ATTR_REPORT_ISLONG_FOR_LONGTYPES_OLEDB
Standardeinstellung:
Für LONG-Typen (LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC und LONG VARGRAPHIC FOR BIT DATA) ist das Flag DBCOLUMNFLAGS_ISLONG nicht gesetzt. Dadurch können die Spalten ggf. in der WHERE-Klausel verwendet werden.
Verwendungshinweise:
 

CCE (Client Cursor Engine) von OLE DB und CommandBuilder von OLE DB .NET Data Provider generieren Aktualisierungs- und Löschanweisungen auf der Basis von Spalteninformationen, die von IBM DB2 OLE DB Provider bereitgestellt werden. Wenn die generierte Anweisung in der WHERE-Klausel einen LONG-Typ enthält, schlägt die Anweisung fehl, da LONG-Typen bei einer Suche mit Gleichheitsoperator nicht verwendet werden können. Wenn Sie das Schlüsselwort OleDbReportIsLongForLongTypes auf 1 setzen, meldet IBM DB2 OLE DB Provider LONG-Typen (LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC und LONG VARGRAPHIC FOR BIT DATA) über das gesetzte Flag DBCOLUMNFLAGS_ISLONG zurück. Dadurch wird verhindert, dass die Spalten mit LONG-Typen in der WHERE-Klausel verwendet werden.

CLI/ODBC-Konfigurationsschlüsselwort OleDbSQLColumnsSortByOrdinal

Beschreibung des Schlüsselworts
Bewirkt, dass IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) von OLE DB eine Zeilengruppe zurückgibt, die nach der Spalte ORDINAL_POSITION sortiert ist.
Syntax für das Schlüsselwort der db2cli.ini:
OleDbSQLColumnsSortByOrdinal = 0 | 1
Funktional entsprechendes Anweisungsattribut:
SQL_ATTR_SQLCOLUMNS_SORT_BY_ORDINAL_OLEDB
Standardeinstellung:
IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) gibt die Zeilengruppe nach den Spalten TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME und COLUMN_NAME sortiert zurück.
Verwendungshinweise:
 

Die Microsoft OLE DB-Spezifikation erfordert, dass IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) die Zeilengruppe nach den Spalten TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME und COLUMN_NAME sortiert zurückgibt. IBM DB2 OLE DB Provider entspricht der Spezifikation. Allerdings wurden Anwendungen, die den Microsoft ODBC Bridge-Provider (MSDASQL) verwenden, normalerweise so codiert, dass die Zeilengruppe nach ORDINAL_POSITION sortiert wird. Wenn Sie das Schlüsselwort OleDbSQLColumnsSortByOrdinal auf 1 setzen, gibt der Provider eine Zeilengruppe zurück, die nach ORDINAL_POSITION sortiert ist.

Eigenschaftsgruppe DB2 Data Source für IBM DB2 OLE DB Provider

IBM DB2 OLE DB Provider hat eine neue Eigenschaftsgruppe hinzugefügt: DB2 Data Source. Diese Eigenschaftsgruppe für DB2 Data Source ist DBPROPSET_DB2DATASOURCE.

Die GUID für die Eigenschaftsgruppe lautet wie folgt: {0x8a80412a,0x7d94,0x4fec,{0x87,0x3e,0x6c,0xd1,0xcd,0x42,0x0d,0xcd}}

DBPROPSET_DB2DATASOURCE weist drei Merkmale auf:

DB2PROP_REPORTISLONGFORLONGTYPES

#define DB2PROP_REPORTISLONGFORLONGTYPES 4
Eigenschaftsgruppe: DB2 Data Source 
Eigenschaftsset: DB2PROPSET_DATASOURCE
Typ: VT_BOOL
Typischer Schreib-/Lesezugriff: R/W
Beschreibung: IsLong für LONG-Typen zurückmelden

CCE (Client Cursor Engine) von OLE DB und CommandBuilder von OLE DB .NET Data Provider generieren Aktualisierungs- und Löschanweisungen auf der Basis von Spalteninformationen, die von IBM DB2 OLE DB Provider bereitgestellt werden. Wenn die generierte Anweisung in der WHERE-Klausel einen LONG-Typ enthält, schlägt die Anweisung fehl, da LONG-Typen bei einer Suche mit Gleichheitsoperator nicht verwendet werden können.

Tabelle 17. Werte für DB2PROP_REPORTISLONGFORLONGTYPES
Werte Bedeutung
VARIANT_TRUE IBM DB2 OLE DB Provider meldet LONG-Typen (LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC und LONG VARGRAPHIC FOR BIT DATA) über das gesetzte Flag DBCOLUMNFLAGS_ISLONG zurück. Dadurch wird verhindert, dass die Spalten mit LONG-Typen in der WHERE-Klausel verwendet werden.
VARIANT_FALSE DBCOLUMNFLAGS_ISLONG ist für LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC und LONG VARGRAPHIC FOR BIT DATA nicht gesetzt. Dies ist der Standardwert.
DB2PROP_RETURNCHARASWCHAR

#define DB2PROP_RETURNCHARASWCHAR 2
Eigenschaftsgruppe: DB2 Data Source 
Eigenschaftsset: DB2PROPSET_DATASOURCE
Typ: VT_BOOL
Typischer Schreib-/Lesezugriff: R/W
Beschreibung: Char als WChar zurückgeben

Tabelle 18. Werte für DB2PROP_RETURNCHARASWCHAR
Werte Bedeutung
VARIANT_TRUE OLE DB beschreibt Spalten des Typs CHAR, VARCHAR, LONG VARCHAR oder CLOB als DBTYPE_WSTR. Die Codepage der in ISequentialStream implizierten Daten ist UCS-2. Dies ist der Standardwert.
VARIANT_FALSE OLE DB beschreibt Spalten des Typs CHAR, VARCHAR, LONG VARCHAR oder CLOB als DBTYPE_STR. Die Codepage der in ISequentialStream implizierten Daten ist die lokale Codepage des Clients.
DB2PROP_SORTBYORDINAL

#define DB2PROP_SORTBYORDINAL 3
Eigenschaftsgruppe: DB2 Data Source 
Eigenschaftsset: DB2PROPSET_DATASOURCE
Typ: VT_BOOL
Typischer Schreib-/Lesezugriff: R/W
Beschreibung: Nach Ordinalzahl sortieren

Die Microsoft OLE DB-Spezifikation erfordert, dass IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) die Zeilengruppe nach den Spalten TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME und COLUMN_NAME sortiert zurückgibt. IBM DB2 OLE DB Provider entspricht der Spezifikation. Allerdings wurden Anwendungen, die den Microsoft ODBC Bridge-Provider (MSDASQL) verwenden, normalerweise so codiert, dass die Zeilengruppe nach ORDINAL_POSITION sortiert wird.

Tabelle 19. Werte für DB2PROP_SORTBYORDINAL
Werte Bedeutung
VARIANT_TRUE Der Provider gibt eine Zeilengruppe zurück, die nach ORDINAL_POSITION sortiert ist.
VARIANT_FALSE Der Provider gibt eine Zeilengruppe zurück, die nach TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME und COLUMN_NAME sortiert ist. Dies ist der Standardwert.

Falsche URL-Syntax im Syntaxdiagramm für DB2Binder

Im Thema "Installieren des allgemeinen DB2-Treibers", ist im Syntaxdiagramm für DB2Binder die URL-Syntax für den allgemeinen DB2-JDBC-Treiber falsch definiert. Die richtige Darstellung der URL-Syntax für DB2Binder sehen Sie im folgenden Diagramm:

Syntax für DB2Binder
Syntaxdiagramm lesenSyntaxdiagramm berspringen>>-java--com.ibm.db2.jcc.DB2Binder------------------------------>

>---url jdbc:db2://server-+---------+-/datenbank---------------->
                          '-:--port-'

>---user benutzer-id---password kennwort------------------------>

>--+------------------+--+-------------------------------+------>
   '--size ganze-zahl-'  '--collection objektgruppenname-'

>--+-------------------------------+--+-------+----------------><
   |              .-,------------. |  '--help-'
   |              V              | |
   '--tracelevel ---trace-option-+-'

Datenweiterleitung bei Clients mit DB2 Universal JDBC-Treiber

Die Funktion für automatische Clientweiterleitung in DB2 Universal Database (UDB) für Linux, UNIX und Windows ermöglicht die Wiederherstellung von Clientanwendungen, nachdem die Verbindung zum Server unterbrochen wurde, so dass die Anwendungen nach minimaler Ausfallzeit weiterarbeiten können.

Immer wenn ein Server gesperrt wird, empfängt jeder Client, der mit diesem Server verbunden ist, einen Kommunikationsfehler, der die Verbindung beendet und zu einem Anwendungsfehler führt. Wenn die Verfügbarkeit wichtig ist, sollte eine redundante Installation oder eine Funktionsübernahme eingerichtet sein. (Die Funktionsübernahme ist die Fähigkeit des Servers, bei einem Ausfall eines anderen Servers dessen Aufgaben zu übernehmen.) In jedem Fall versucht der Client mit dem DB2 Universal JDBC-Treiber, die Verbindung zu einem neuen Server oder zum ursprünglichen Server wiederherzustellen, der möglicherweise auf einem Knoten mit Funktionsübernahme aktiv ist. Wenn die Verbindung wiederhergestellt wird, empfängt die Anwendung eine SQL-Ausnahmebedingung, die ihr das Fehlschlagen der Transaktion mitteilt, die Anwendung kann jedoch mit der nächsten Transaktion fortfahren.

Einschränkungen

Vorgehensweise

Nachdem der Datenbankadministrator den alternativen Serverstandort für eine bestimmte Datenbank im Serverexemplar angegeben hat, werden die Positionen des primären und des alternativen Servers beim Verbindungsaufbau an den Client zurückgegeben. Der DB2 Universal JDBC-Treiber erstellt ein Exemplar des referenzierbaren Objekts DB2ClientRerouteServerList und speichert dieses in seinem Übergangsspeicher. Bei einem Kommunikationsausfall versucht der DB2 Universal JDBC-Treiber, die Verbindung unter Verwendung der vom Server zurückgegebenen Serverinformationen wieder herzustellen.

Das DataSource-Merkmal clientRerouteServerListJNDIName stellt auf dem Client zusätzliche Unterstützung für die Clientweiterleitung zur Verfügung; clientRerouteServerListJNDIName hat die folgenden zwei Funktionen:

clientRerouteServerListJNDIName gibt eine JNDI-Referenz zu einem DB2ClientRerouteServerList-Exemplar in einem JNDI-Repository für Daten zu alternativen Server an. Nach erfolgreicher Herstellung der Verbindung zum primären Server werden die Daten zum alternativen Server, die von clientRerouteServerListJNDIName zur Verfügung gestellt werden, mit den Daten vom Server überschrieben. Der DB2 Universal JDBC-Treiber versucht, die aktualisierten Daten nach der Funktionsübernahme an den JNDI-Speicher weiterzugeben, falls das Merkmal clientRerouteServerListJNDIName definiert ist. Wenn clientRerouteServerListJNDIName angegeben ist, werden für die Verbindung zum primären Server Informationen verwendet, die in DB2ClientRerouteServerList angegeben sind. Wenn der primäre Server nicht angegeben ist, werden die serverName-Informationen verwendet, die auf der Datenquelle angegeben sind.

DB2ClientRerouteServerList ist eine serialisierbare JavaBean mit den folgenden vier Merkmalen:

Getter- und Setter-Methoden zum Zugriff auf diese Merkmale werden zur Verfügung gestellt. Die Definition der Klasse DB2ClientRerouteServerList lautet wie folgt:

package com.ibm.db2.jcc;
public class DB2ClientRerouteServerList 
  implements java.io.Serializable,
  javax.naming.Referenceable
{
  public String[] alternateServerName;
  public synchronized void 
    setAlternateServerName(String[] alternateServer);
  public String[] getAlternateServerName();
  public int[] alternatePortNumber;
  public synchronized void 
    setAlternatePortNumber(int[] alternatePortNumberList);
  public int[] getAlternatePortNumber();
  
  public synchronized void 
    setPrimaryServerName (String primaryServerName);
  public String getPrimaryServerName ();
  public synchronized void setPrimaryPortNumber (int primaryPortNumber)
  public int getPrimaryPortNumber (); 
}

Eine neue hergestellte Verbindung für Funktionsübernahme wird mit den ursprünglichen Datenquellenmerkmalen konfiguriert, mit Ausnahme des Servernamens und der Portnummer. Außerdem werden alle DB2 UDB-Sonderregister, die bei der ursprünglichen Verbindung modifiziert worden sind, in der Funktionsübernahmeverbindung vom DB2 Universal JDBC-Treiber wiederhergestellt.

Bei einem Kommunikationsausfall versucht der DB2 Universal JDBC-Treiber zuerst eine Wiederherstellung für den primären Server auszuführen. Sollte dies fehlschlagen, versucht der Treiber, eine Verbindung zur alternativen Position (Funktionsübernahme) herzustellen. Nachdem erneut eine Verbindung hergestellt worden ist, sendet der Treiber eine java.sql.SQLException mit dem SQLCODE-Wert -4498 an die Anwendung, wodurch der Anwendung angezeigt wird, dass automatisch eine Verbindung zum alternativen Server wiederhergestellt worden ist. Die Anwendung kann anschließend die Transaktion wiederholen.

Vorgehensweise zum persistenten Festlegen von DB2ClientRerouteServerList

Gehen Sie wie folgt vor, um Speicher so zu konfigurieren, dass DB2ClientRerouteServerList persistent festgelegt wird:

  1. Erstellen Sie ein Exemplar von DB2ClientRerouteServerList, und binden Sie dieses Exemplar an die JNDI-Registrierdatenbank. Beispiel:
    // Startkontext für Namensoperationen erstellen
    InitialContext registry = new InitialContext();
    // DB2ClientRerouteServerList-Objekt erstellen
    DB2ClientRerouteServerList address=new DB2ClientRerouteServerList();
    
    // Portnummer und Servernamen für primären Server setzen
    address.setPrimaryPortNumber(50000);
    address.setPrimaryServerName("mvs1.sj.ibm.com");
    
    // Portnummer und Servernamen für alternativen Server setzen
    int[] port = {50002};
    String[] server = {"mvs3.sj.ibm.com"};
    address.setAlternatePortNumber(port);
    address.setAlternateServerName(server);
        
    registry.rebind("serverList", address);
    
  2. Ordnen Sie den JNDI-Namen des DB2ClientRerouteServerList-Objekts dem DataSource-Merkmal clientRerouteServerListJNDIName zu. Beispiel:
    datasource.setClientRerouteServerListJNDIName("serverList");

Anpassen der Merkmale der DB2 Universal JDBC-Treiberkonfiguration

Über die Merkmale der DB2 Universal JDBC-Treiberkonfiguration können Sie Merkmalwerte setzen, die für den gesamten Treiber gelten. Diese Einstellungen werden anwendungsübergreifend und DataSource-Exemplar-übergreifend angewendet. Sie können die Einstellungen ändern, ohne den Anwendungsquellcode oder die DataSource-Merkmale zu ändern.

Die einzelnen Merkmaleinstellungen der DB2 Universal JDBC-Treiberkonfiguration weisen das folgende Format auf:

merkmal=wert

Wenn das Konfigurationsmerkmal mit db2.jcc.override beginnt, ist es auf alle Verbindungen anwendbar und überschreibt alle Connection- oder DataSource-Merkmale mit demselben Merkmalnamen. Wenn das Konfigurationsmerkmal mit db2.jcc oder db2.jcc.default beginnt, ist der Konfigurationsmerkmalwert ein Standardwert. Einstellungen für die Connection- oder DataSource-Merkmale überschreiben diesen Wert.

Vorgehensweise

Gehen Sie wie folgt vor, um Konfigurationsmerkmale festzulegen:

Sie können die folgenden Konfigurationsmerkmale für DB2 Universal JDBC-Treiber festlegen. Alle Merkmale sind optional.

db2.jcc.override.traceFile
Aktiviert den DB2 Universal JDBC-Treibertrace für Java-Treibercode, und gibt den Namen an, auf dem die Tracedateinamen basieren.

Geben Sie einen vollständig qualifizierten Dateinamen als Wert des Merkmals db2.jcc.override.traceFile an.

Das Merkmal db2.jcc.override.traceFile überschreibt das Merkmal traceFile für ein Connection- oder DataSource-Objekt.

Wenn Sie z. B. die folgende Einstellung für db2.jcc.override.traceFile angeben, wird die Traceverarbeitung des Java-Codes für den DB2 Universal JDBC-Treiber in einer Datei mit dem Namen /SYSTEM/tmp/jdbctrace aufgezeichnet:

db2.jcc.override.traceFile=/SYSTEM/tmp/jdbctrace

Sie sollten die Tracemerkmale unter Anleitung der IBM Unterstützungsfunktion festlegen.

db2.jcc.sqljUncustomizedWarningOrException
Gibt die Aktion an, die der DB2 Universal JDBC-Treiber ausführt, wenn eine nicht angepasste SQLJ-Anwendung aktiv ist. db2.jcc.sqljUncustomizedWarningOrException kann die folgenden Werte aufweisen:
0
Der DB2 Universal JDBC-Treiber generiert keine Warnung oder Ausnahmebedingung, wenn eine nicht angepasste SQLJ-Anwendung aktiv ist. Dies ist der Standardwert.
1
Der DB2 Universal JDBC-Treiber generiert eine Warnung, wenn eine nicht angepasste SQLJ-Anwendung aktiv ist.
2
Der DB2 Universal JDBC-Treiber generiert eine Ausnahmebedingung, wenn eine nicht angepasste SQLJ-Anwendung aktiv ist.

Funktion db2secFreeToken entfernt

Die Funktion db2secFreeToken (durch Token belegten Speicher freigeben) ist nicht mehr Bestandteil der Benutzerauthentifizierungs-Plug-in-API db2secGssapiServerAuthFunctions_1.

Sorgfältiges Implementieren benutzerdefinierter Sicherheits-Plug-ins

Die Integrität der Installation von DB2 Universal Database (UDB) kann beeinträchtigt sein, wenn die Implementierung von Sicherheits-Plug-ins nicht auf geeignete Weise codiert, geprüft und getestet wird. DB2 UDB ergreift Vorsichtsmaßnahmen gegen viele allgemein auftretende Arten von Fehlern, kann jedoch keine vollständige Integrität garantieren, wenn benutzerdefinierte Sicherheits-Plug-ins implementiert werden.

Sicherheits-Plug-ins

Wenn Sie Ihr eigenes Sicherheits-Plug-in verwenden, können Sie in einer CONNECT-Anweisung, die über den Befehlszeilenprozessor (CLP) oder über eine Anweisung für dynamisches SQL abgesetzt wird, eine Benutzer-ID mit bis zu 255 Zeichen verwenden.

Sicherheits-Plug-in-APIs

Für die APIs db2secGetGroupsForUser, db2secValidatePassword und db2secGetAuthIDs kann der Eingabeparameter dbname einen Nullwert haben, und der entsprechende Eingabeparameter dbnamelen für die Länge wird auf 0 gesetzt.

Namenskonventionen für Sicherheits-Plug-ins (Linux und UNIX)

.so wird nun als Dateinamenerweiterung für benutzerdefinierte Sicherheits-Plug-in-Bibliotheken auf allen Linux- und UNIX-Plattformen akzeptiert.

Unter AIX können Sicherheits-Plug-in-Bibliotheken die Erweiterung .a oder .so aufweisen. Sollten beide Versionen der Plug-in-Bibliothek vorhanden sein, wird die Version mit der Erweiterung .a verwendet.

Unter HP-UX auf PA-RISC können Sicherheits-Plug-in-Bibliotheken die Erweiterung .sl oder .so aufweisen. Sollten beide Versionen der Plug-in-Bibliothek vorhanden sein, wird die Version mit der Erweiterung .sl verwendet.

Auf allen übrigen Linux- und UNIX-Plattformen ist .so die einzige unterstützte Dateinamenerweiterung für Sicherheits-Plug-in-Bibliotheken.

Einschränkungen für Sicherheits-Plug-in-Bibliotheken

Unter AIX können Sicherheits-Plug-in-Bibliotheken die Dateinamenerweiterung .a oder .so aufweisen. Der Mechanismus zum Laden der Plug-in-Bibliothek hängt von der verwendeten Erweiterung ab:

Plug-in/Bibliotheken mit der Dateinamenerweiterung .a
Plug-in/Bibliotheken mit der Dateinamenerweiterung .a gelten als Archive, die gemeinsam genutzte Objektelemente enthalten. Diese Elemente müssen den Namen shr.o (32 Bit) oder shr64.o (64 Bit) aufweisen. Ein einzelnes Archiv kann sowohl 32-Bit- als auch 64-Bit-Elemente enthalten, so dass es auf beiden Plattformtypen implementiert werden kann.

Beispiel für die Erzeugung einer Plug-in-Bibliothek als 32-Bit-Archiv:

  xlc_r -qmkshrobj -o shr.o MeinPlugin.c -bE:MeinPlugin.exp
  ar rv MeinPlugin.a shr.o
Plug-in/Bibliotheken mit der Dateinamenerweiterung .so
Plug-in-Bibliotheken mit der Dateinamenerweiterung .so gelten als dynamisch ladbare gemeinsam genutzte Objekte. Ein solches Objekt ist entweder ein 32-Bit- oder ein 64-Bit-Objekt, je nachdem, welche Optionen bei seiner Erzeugung zur Kompilierung und zum Binden verwendet wurden. Beispiel für die Erzeugung einer 32-Bit-Plug-in-Bibliothek:
  xlc_r -qmkshrobj -o MeinPlugin.so MeinPlugin.c -bE:MeinPlugin.exp

Auf allen Plattformen außer AIX wird angenommen, dass Sicherheits-Plug-in-Bibliotheken immer dynamisch ladbare gemeinsam genutzte Objekte sind.

GSS-API-Sicherheits-Plug-ins unterstützen keine Authentifizierung mit mehreren Tokens

Bei der GSS-API-Authentifizierung wird nur ein einziges Token vom Client an den Server und ein einziges Token vom Server an den Client gesendet. Diese Tokens werden auf dem Client von gss_init_sec_context() und auf dem Server von gss_accept_sec_context() abgerufen. Wenn GSS-API-Plug-ins versuchen, weitere Tokens zu senden, wird ein unerwarteter Fehler für Sicherheits-Plug-ins generiert, und die Verbindung schlägt fehl.

GSS-API-Sicherheits-Plug-ins unterstützen keine Nachrichtenverschlüsselung und keine Signaturen

Nachrichtenverschlüsselung und Signaturen sind in GSS-API-Sicherheits-Plug-ins nicht verfügbar.

Implizite Beendung von Transaktionen in Standalone-Anwendungen

Alle (normalen und abnormalen) Beendigungen machen, unabhängig vom Betriebssystem, ausstehende Arbeitseinheiten implizit rückgängig.

Unterstützung verteilter Transaktionen

Die Dokumentation zu neuen Funktionen für DB2 Universal Database (UDB) Version 8.2 enthält im Abschnitt zu den DB2 Universal JDBC-Treiberverbesserungen falsche Informationen zur Unterstützung von verteilten Transaktionen. Der letzte Satz dieses Abschnitts ist falsch. Richtig muss er wie folgt lauten:

Ab Version 8.2 stellt DB2 UDB Unterstützung für verteilte Transaktionsverarbeitung bereit, die der XA-Spezifikation entspricht. Diese Unterstützung implementiert die Spezifikationen für Java Transaction Service (JTS) und Java Transaction API (JTA) von Java 2 Platform Enterprise Edition (J2EE).

[ Seitenanfang |Vorherige Seite | Nächste Seite | Inhaltsverzeichnis ]