de.bea.domingo.service
Class NotesServiceFactory

java.lang.Object
  extended by de.bea.domingo.DNotesFactory
      extended by de.bea.domingo.service.NotesServiceFactory

public final class NotesServiceFactory
extends DNotesFactory

Factory for sessions to Notes/Domino.

Local calls are processed in a thread pool with notes thread registered with a local client installation. Each call to the getSession() method returns the same instance.

Corba calls are always processed in the calling thread. Each call to a getSession(...) with arguments returns a new instance, so it is up to the caller to ensure proper disposal of the sessions.

Author:
Kurt Riede

Field Summary
static int DEFAULT_THREADPOOL_SIZE
          Default number of threads in thread pool.
static long DEFAULT_TIMEOUT
          Default timeout.
 
Constructor Summary
NotesServiceFactory()
          Default constructor.
 
Method Summary
 void disposeInstance()
          Disposes all internal resources of the Notes connection.
 void disposeInstance(boolean force)
          Disposes all internal resources of the Notes connection.
 void disposeInternal(boolean force)
          Deprecated. use disposeInstance(boolean) instead
 void gc()
          Deprecated. only use this method for testing
 DNotesMonitor getMonitor()
          Get the current monitor.
 DSession getSession()
          Creates a local session.
 DSession getSession(java.applet.Applet applet, java.lang.String user, java.lang.String password)
          Creates a remote (IIOP) session for an applet.
 DSession getSession(java.lang.Object notesSession)
          Creates a Domingo session for an existing Notes session.
 DSession getSession(java.lang.String serverUrl)
          Creates a DIIOP session.
 DSession getSession(java.lang.String host, java.lang.String[] args, java.lang.String user, java.lang.String passwd)
          Creates a remote (IIOP or Http) session with arguments using host name.
 DSession getSession(java.lang.String host, java.lang.String user, java.lang.String passwd)
          Creates a remote (IIOP or Http) session using host name.
 DSession getSessionSSL(java.lang.String host, java.lang.String user, java.lang.String passwd)
          Creates a remote (IIOP or Http) session with SSL using host name.
 DSession getSessionWithFullAccess()
          Creates a local session.
 DSession getSessionWithFullAccess(java.lang.String password)
          Creates a local session.
(package private)  java.lang.Object invoke(java.lang.Object object, java.lang.reflect.Method method, java.lang.Object[] args)
          Invokes a method within a Thread from the thread pool.
 void setMonitor(DNotesMonitor theMonitor)
          Set the monitor.
 void sinitThread()
          Enables Notes access for the current thread.
 void stermThread()
          Disables Notes access for the current thread.
 
Methods inherited from class de.bea.domingo.DNotesFactory
dispose, dispose, getBooleanProperty, getInstance, getInstance, getInstance, getInstance, getIntProperty, getProperty, newInstance, newInstance, newInstance, newInstance, setProperty
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_TIMEOUT

public static final long DEFAULT_TIMEOUT
Default timeout.

See Also:
Constant Field Values

DEFAULT_THREADPOOL_SIZE

public static final int DEFAULT_THREADPOOL_SIZE
Default number of threads in thread pool.

See Also:
Constant Field Values
Constructor Detail

NotesServiceFactory

public NotesServiceFactory()
                    throws DNotesRuntimeException
Default constructor.

Must be public to allow abstract factory (the base class) to create an instance of this class.

Throws:
DNotesRuntimeException - if the factory cannot be created
Method Detail

getSession

public DSession getSession(java.lang.Object notesSession)
                    throws DNotesRuntimeException
Creates a Domingo session for an existing Notes session.

This method is used only internally in Notes agents and Notes applets.

Specified by:
getSession in class DNotesFactory
Parameters:
notesSession - existing Notes session
Returns:
a Domingo session for the given Notes session
Throws:
DNotesRuntimeException - if the session cannot be created
See Also:
DNotesFactory.getSession(java.lang.Object)

getSession

public DSession getSession()
                    throws DNotesRuntimeException
Creates a local session.

(Notes client must be installed)

Specified by:
getSession in class DNotesFactory
Returns:
a local session
Throws:
DNotesRuntimeException - if the session cannot be created
See Also:
DNotesFactory.getSession()

getSession

public DSession getSession(java.lang.String serverUrl)
                    throws DNotesRuntimeException
Creates a DIIOP session.

Specified by:
getSession in class DNotesFactory
Parameters:
serverUrl - URL of server (e.g. "https://plato.acme:8080")
Returns:
a local session
Throws:
DNotesRuntimeException - if the session cannot be created
See Also:
DNotesFactory.getSession(java.lang.String)

getSession

public DSession getSession(java.lang.String host,
                           java.lang.String user,
                           java.lang.String passwd)
                    throws DNotesRuntimeException
Creates a remote (IIOP or Http) session using host name.

Specified by:
getSession in class DNotesFactory
Parameters:
host - URL of server (e.g. "https://plato.acme:8080")
user - user name for authentication
passwd - password for for authentication
Returns:
a remote session
Throws:
DNotesRuntimeException - if the session cannot be created
See Also:
DNotesFactory.getSession(java.lang.String, java.lang.String, java.lang.String)

getSession

public DSession getSession(java.lang.String host,
                           java.lang.String[] args,
                           java.lang.String user,
                           java.lang.String passwd)
                    throws DNotesRuntimeException
Creates a remote (IIOP or Http) session with arguments using host name.

Specified by:
getSession in class DNotesFactory
Parameters:
host - URL of server (e.g. "https://plato.acme:8080")
args - array of additional arguments
user - user name for authentication
passwd - password for for authentication
Returns:
a remote session
Throws:
DNotesRuntimeException - if the session cannot be created
See Also:
DNotesFactory.getSession(java.lang.String, java.lang.String[], java.lang.String, java.lang.String)

getSessionSSL

public DSession getSessionSSL(java.lang.String host,
                              java.lang.String user,
                              java.lang.String passwd)
                       throws DNotesRuntimeException
Creates a remote (IIOP or Http) session with SSL using host name.

Specified by:
getSessionSSL in class DNotesFactory
Parameters:
host - URL of server (e.g. "https://plato.acme:8080")
user - user name for authentication
passwd - password for for authentication
Returns:
a remote session
Throws:
DNotesRuntimeException - if the session cannot be created
See Also:
DNotesFactory.getSessionSSL(java.lang.String, java.lang.String, java.lang.String)

getSession

public DSession getSession(java.applet.Applet applet,
                           java.lang.String user,
                           java.lang.String password)
                    throws DNotesRuntimeException
Creates a remote (IIOP) session for an applet.

Specified by:
getSession in class DNotesFactory
Parameters:
applet - applet instance
user - user name for authentication
password - password for for authentication
Returns:
a remote session for an applet
Throws:
DNotesRuntimeException - if the session cannot be created
See Also:
DNotesFactory.getSession(java.applet.Applet, java.lang.String, java.lang.String)

getSessionWithFullAccess

public DSession getSessionWithFullAccess()
                                  throws DNotesRuntimeException
Creates a local session.

(Notes client must be installed)

Access restrictions according to readers items are bypassed.

Specified by:
getSessionWithFullAccess in class DNotesFactory
Returns:
a local session
Throws:
DNotesRuntimeException - if the session cannot be created
See Also:
DNotesFactory.getSessionWithFullAccess()

getSessionWithFullAccess

public DSession getSessionWithFullAccess(java.lang.String password)
                                  throws DNotesRuntimeException
Creates a local session.

(Notes client must be installed)

Access restrictions according to readers items are bypassed.

Specified by:
getSessionWithFullAccess in class DNotesFactory
Parameters:
password - password for for authentication
Returns:
a local session
Throws:
DNotesRuntimeException - if the session cannot be created
See Also:
DNotesFactory.getSessionWithFullAccess(java.lang.String)

gc

public void gc()
Deprecated. only use this method for testing

Description copied from class: DNotesFactory
Runs the garbage collector and tries to recycle all internal notes objects.

ATTENTION:

This method should not be used in productive code. It only exists for tests, e.g. to ensure clean memory before analyzing with JProbe.

Specified by:
gc in class DNotesFactory
See Also:
DNotesFactory.gc()

disposeInternal

public void disposeInternal(boolean force)
                     throws DNotesRuntimeException
Deprecated. use disposeInstance(boolean) instead

In this multi-threaded implementation the single-threaded dispose method is invoked via a dynamic proxy into the thread pool.

Specified by:
disposeInternal in class DNotesFactory
Parameters:
force - indicates if disposal should happen even if still any string or soft reference exists. if false, only weak references must remain.
Throws:
DNotesRuntimeException - if an error occurs during disposal or if not all objects can be disposed
See Also:
DNotesFactory.dispose(), DNotesFactory.disposeInternal(boolean)

disposeInstance

public void disposeInstance(boolean force)
                     throws DNotesRuntimeException
Disposes all internal resources of the Notes connection.

Specified by:
disposeInstance in class DNotesFactory
Parameters:
force - indicates if disposal should happen even if still any string or soft reference exists. if false, only weak references must remain.
Throws:
DNotesRuntimeException - if an error occurs during disposal or if not all objects can be disposed
See Also:
DNotesFactory.disposeInstance(boolean)

disposeInstance

public void disposeInstance()
                     throws DNotesRuntimeException
Disposes all internal resources of the Notes connection.

Equivalent to {link disposeInstance(false)

.

Specified by:
disposeInstance in class DNotesFactory
Throws:
DNotesRuntimeException - if an error occurs during disposal or if not all objects can be disposed
See Also:
DNotesFactory.disposeInstance()

invoke

java.lang.Object invoke(java.lang.Object object,
                        java.lang.reflect.Method method,
                        java.lang.Object[] args)
                  throws java.lang.Throwable
Invokes a method within a Thread from the thread pool.

Parameters:
object - the object to invoke the method on
method - the method to invoke
args - the arguments for the method
Returns:
result object
Throws:
java.lang.Throwable - if the method cannot be invoked

sinitThread

public void sinitThread()
Description copied from class: DNotesFactory
Enables Notes access for the current thread.

Specified by:
sinitThread in class DNotesFactory
See Also:
DNotesFactory.sinitThread()

stermThread

public void stermThread()
Description copied from class: DNotesFactory
Disables Notes access for the current thread.

Specified by:
stermThread in class DNotesFactory
See Also:
DNotesFactory.stermThread()

getMonitor

public DNotesMonitor getMonitor()
Get the current monitor.

Specified by:
getMonitor in class DNotesFactory
Returns:
current monitor
See Also:
DNotesFactory.getMonitor()

setMonitor

public void setMonitor(DNotesMonitor theMonitor)
Set the monitor.

Specified by:
setMonitor in class DNotesFactory
Parameters:
theMonitor - the monitor
See Also:
DNotesFactory.setMonitor(de.bea.domingo.DNotesMonitor)


Domingo Java-API