Reference | Help | Introduction | Slide Show | Class Hierarchy | InterClient | ||
PREV | NEXT | FRAMES | NO FRAMES |
Specification to be released for public review Summer 98
Still in javasoft partner review, but should be released soon for public review.
More advanced than core api, and generally depends on modules provided by the other java extension apis, especially enterprise java beans. The java extension interfaces exist in the suite of javax packages, so for example, the jdbc 2 standard extension interfaces exists in package javax.sql, the enterprise transaction interfaces exist in package javax.transaction. The javax packages will be employeed extensively by enterprise java beans. Enterprise java beans is a server-side component model, whereas java beans are a client-side component model.
Each one of these is a major topic in itself but i've prepared a brief overview for each topic.
Rowsets also allow multiple cursors on its data. But the main difference from a result set is that for a rowset, all of it's rows are completely cached, so it exists independently from the database.
Not all rowsets are updatable, many dbms vendors are unable to dynamically determine the table from which a result column originated, so the jdbc 2 specification doesn't require joins to be updatable, some of which could be. InterClient will support updates on rowsets created thru joins provided a unique row identifier is selected for each joined table.
Sun provides the interfaces for the connection pooling module which resides on top of jdbc, but does not provide an implementation. Pooling modules will be provided by 3rd party vendors, and they'll probably be integrated with transaction servers.
Pooling modules are meant to be used by enterprise java beans.
This is similarly architecturally to connection pooling, in that any one particular driver can only be aware of its own connections in a distributed transaction, so to allow for heterogeneous data sources, there are hooks that must be implemented by each driver, and a transaction module, aka java transaction service (JTS), sits on top of jdbc.
The hooks that need to be implemented are essentially two-phase commit. So the driver implements the two phase commit protocol with methods such as prepare, commit, abort which operate across multiple connections. Please note that this is driver functionality. Two-phase commit is implemented in the client library. InterClient implements its own client library and cannot rely on the two-phase commit protocol implemented in the InterBase C client library.
Like connection pooling, a driver's implementatoin of two phase commit only allows it to manage distributed connections within the driver itself. The transaction module, which is known as a java transaction service, allows distributed transactions which span multiple drivers or even non-jdbc data sources! So the JTS can coordinate activities across heterogeneous data sources. The JTS is a standard java mapping of the OMG Object Transaction Service (OTS) which is meant to be used by a CORBA orb for managing transactions. So interclient-xa can be used either by CORBA distributed transactions or by Enterprise Java Beans. Visibroker has its own integrated transaction service.
The enterprise java beans component architecture allows a server bean to perform distributed transactions seamlessly across heterogenous data sources using a JTS. The enterprise java beans themselves will be able to communicate either using RMI or RMI over IIOP so that enterprise java beans can fully interoperate with CORBA applications. This technology is expected to be released for early access this summer as a java standard extension.
Notice that a name service provides a server-side registry of databases, rather than the client-side aliases we're used to from ODBC and BDE.
A jndi url would be something like "jdbc:interbase:jndi:LDAP_hostname:port_number/...". The jndi service provider implementation could use an LDAP server (lightweight directory access protocol).
Reference | Help | Introduction | Slide Show | Class Hierarchy | InterClient | ||
PREV | NEXT | FRAMES | NO FRAMES |