SCJP, SCJD, SCWCD, SCBCD<br />IBM Certified Specialist (158)<br />Oracle9i PL/SQL Developer Certified Associate
a) For local case, we do not need to have server process running. If the client can access the local database without going through socket, there is no interprocess communication. Thus, we just run client is enough. Am I right ?
b) For remote case, this is a real client/server case. We need to have client and server processes running. How do we start the client and sever process ? I think we should give HOST DNS, PORT and DbName to both processes.
Server uses the given parameter to contruct the ConnectionFactory's URL and register with rmiregistry.
Client uses the parameters to construct url so that it can do the lookup from URL. Am I right in this case too ?
c) Once the client got the ConnectionFactory from server,
... it can call its Factory method to get an instance of RemoteDataAccess object. This RemoteDataAccess object is different instance for each client.
In order to enable client performing its database query action, we need to cache the instance.
However, we do not need to do any manipulation in server because the client can use the RemoteDataAccess client stub to perform the needed operation as log as the real instance exists in server.
Upon completion of operation, the client just call close() method. Server will remove the instance from cache. Am I right in all the scenarios ?
d) How about error recovery ?
d.1) The server returns RemoteException.
d.2) The server returns IOException. (failure caused by the construction of RemotedataAccess object)
d.3) The server returns DataException.
d.4) The server downs when the client is performing operation.
d.5) The client downs before calling close().
d.6) The communication down between client/server. What happens after the communication is back ?
d.7) Client downs and comes back ?
SCJP, SCJD, SCWCD, SCBCD<br />IBM Certified Specialist (158)<br />Oracle9i PL/SQL Developer Certified Associate
Don't get me started about those stupid light bulbs. |