Package de.willuhn.datasource.db
Class DBServiceImpl
java.lang.Object
java.rmi.server.RemoteObject
java.rmi.server.RemoteServer
java.rmi.server.UnicastRemoteObject
de.willuhn.datasource.db.DBServiceImpl
- All Implemented Interfaces:
DBService
,Service
,Serializable
,Remote
- Direct Known Subclasses:
EmbeddedDBServiceImpl
Diese Klasse implementiert eine ueber RMI erreichbaren Datenbank.
- Author:
- willuhn
- See Also:
-
Field Summary
Fields inherited from class java.rmi.server.RemoteObject
ref
-
Constructor Summary
ConstructorsConstructorDescriptionErzeugt eine neue Instanz.DBServiceImpl
(String jdbcDriver, String jdbcURL) Erzeugt eine neue Instanz.DBServiceImpl
(String jdbcDriver, String jdbcURL, String jdbcUsername, String jdbcPassword) Erzeugt eine neue Instanz. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
checkConnection
(Connection conn) Kann von abgeleiteten Klassen ueberschrieben werden, um die Connection zu testen.<T extends DBObject>
DBIterator<T>createList
(Class<? extends DBObject> c) Liefert eine Liste aller in der Datenbank vorhandenen Objekte des angegebenen Typs,<T extends DBObject>
TcreateObject
(Class<? extends DBObject> c, String identifier) Erzeugt ein neues Objekt des angegebenen Typs.execute
(String sql, Object[] params, ResultSetExtractor extractor) Fuehrt ein SQL-Statement aus und uebergibt das Resultset an den Extractor.protected boolean
Liefert true, wenn autocommit aktiv sein soll.protected Connection
Liefert die Connection, die dieser Service gerade verwendet.protected boolean
Liefert true, wenn der DB-Service bei INSERT-Queries vorher die zu verwendende ID ermitteln soll.protected String
Liefert den JDBC-Treiber.protected String
Liefert das JDBC-Passwort.protected String
Liefert die JDBC-URL.protected String
Liefert den JDBC-Usernamen.getName()
Liefert den sprechenden Namen des Services.protected int
Liefert den Transaction-Isolation-Level.boolean
Prueft, ob der Service gestartet werden darf.boolean
Prueft, ob dieser Service gestartet ist.protected void
setClassFinder
(de.willuhn.util.ClassFinder finder) Definiert einen optionalen Classfinder, der von dem Service zum Laden von Objekten genommen werden soll.protected void
setClassloader
(ClassLoader loader) Definiert einen optionalen benutzerdefinierten Classloader.void
start()
Startet den Service.void
stop
(boolean restartAllowed) Stoppt den Service.Methods inherited from class java.rmi.server.UnicastRemoteObject
clone, exportObject, exportObject, exportObject, exportObject, exportObject, unexportObject
Methods inherited from class java.rmi.server.RemoteServer
getClientHost, getLog, setLog
-
Constructor Details
-
DBServiceImpl
Erzeugt eine neue Instanz.- Throws:
RemoteException
-
DBServiceImpl
Erzeugt eine neue Instanz.- Parameters:
jdbcDriver
- JDBC-Treiber-Klasse.jdbcURL
- JDBC-URL.- Throws:
RemoteException
-
DBServiceImpl
public DBServiceImpl(String jdbcDriver, String jdbcURL, String jdbcUsername, String jdbcPassword) throws RemoteException Erzeugt eine neue Instanz.- Parameters:
jdbcDriver
- JDBC-Treiber-Klasse.jdbcURL
- JDBC-URL.jdbcUsername
- Username.jdbcPassword
- Passwort.- Throws:
RemoteException
-
-
Method Details
-
getConnection
Liefert die Connection, die dieser Service gerade verwendet.- Returns:
- Connection.
- Throws:
RemoteException
-
checkConnection
Kann von abgeleiteten Klassen ueberschrieben werden, um die Connection zu testen.- Parameters:
conn
- die zu testende Connection. Ist nienull
.- Throws:
SQLException
-
setClassFinder
protected void setClassFinder(de.willuhn.util.ClassFinder finder) Definiert einen optionalen Classfinder, der von dem Service zum Laden von Objekten genommen werden soll. Konkret wird er increatObject
undcreateList
verwendet, um zum uebergebenen Interface eine passende Implementierung zu finden. Dabei wird die FunktionfindImplementor()
im ClassFinder befragt.
Wurde kein ClassFinder angegeben, versucht der Service direkt die uebergebene Klasse zu instanziieren. Ist dies der Fall, koennen den beiden create-Methoden natuerliche keine Interfaces-Klassen uebergeben werden.- Parameters:
finder
- zu verwendender ClassFinder.
-
setClassloader
Definiert einen optionalen benutzerdefinierten Classloader. Wird er nicht gesetzt, wirdClass.forName()
benutzt.- Parameters:
loader
- Benutzerdefinierter Classloader.
-
isStartable
Description copied from interface:Service
Prueft, ob der Service gestartet werden darf.- Specified by:
isStartable
in interfaceService
- Returns:
- true, wenn er gestartet werden darf, sonst false.
- Throws:
RemoteException
- See Also:
-
start
Description copied from interface:Service
Startet den Service.- Specified by:
start
in interfaceService
- Throws:
RemoteException
- See Also:
-
stop
Description copied from interface:Service
Stoppt den Service.- Specified by:
stop
in interfaceService
- Parameters:
restartAllowed
- legt fest, ob der Service im laufenden Betrieb neu gestartet werden kann.- Throws:
RemoteException
- See Also:
-
createObject
public <T extends DBObject> T createObject(Class<? extends DBObject> c, String identifier) throws RemoteException Description copied from interface:DBService
Erzeugt ein neues Objekt des angegebenen Typs.- Specified by:
createObject
in interfaceDBService
- Parameters:
c
- Name der Klasse des zu erzeugenden Objektes.identifier
- der eindeutige Identifier des Objektes. Kann null sein, wenn ein neues Objekt erzeugt werden soll. Andernfalls wird das mit dem genannten Identifier geladen.- Returns:
- Das erzeugte Objekt
- Throws:
RemoteException
- See Also:
-
createList
public <T extends DBObject> DBIterator<T> createList(Class<? extends DBObject> c) throws RemoteException Description copied from interface:DBService
Liefert eine Liste aller in der Datenbank vorhandenen Objekte des angegebenen Typs,- Specified by:
createList
in interfaceDBService
- Parameters:
c
- Name der Klasse von der eine Liste geholt werden soll.- Returns:
- Eine Liste mit den gefundenen Objekten.
- Throws:
RemoteException
- See Also:
-
execute
public Object execute(String sql, Object[] params, ResultSetExtractor extractor) throws RemoteException Description copied from interface:DBService
Fuehrt ein SQL-Statement aus und uebergibt das Resultset an den Extractor.- Specified by:
execute
in interfaceDBService
- Parameters:
sql
- das Statement.params
- die Parameter zur Erzeugung des PreparedStatements.extractor
- der Extractor.- Returns:
- die vom ResultSetExtractor zurueckgelieferten Daten.
- Throws:
RemoteException
- See Also:
-
isStarted
Description copied from interface:Service
Prueft, ob dieser Service gestartet ist.- Specified by:
isStarted
in interfaceService
- Returns:
- true wenn er gestartet ist, sonst false.
- Throws:
RemoteException
- See Also:
-
getName
Description copied from interface:Service
Liefert den sprechenden Namen des Services.- Specified by:
getName
in interfaceService
- Returns:
- Name des Services.
- Throws:
RemoteException
- See Also:
-
getJdbcDriver
Liefert den JDBC-Treiber.- Returns:
- der JDBC-Treiber.
- Throws:
RemoteException
-
getJdbcUrl
Liefert die JDBC-URL.- Returns:
- die JDBC-URL.
- Throws:
RemoteException
-
getJdbcUsername
Liefert den JDBC-Usernamen.- Returns:
- der Username.
- Throws:
RemoteException
-
getJdbcPassword
Liefert das JDBC-Passwort.- Returns:
- das JDBC-Passwort.
- Throws:
RemoteException
-
getTransactionIsolationLevel
Liefert den Transaction-Isolation-Level.- Returns:
- transactionIsolationLevel Transaction-Isolation-Level (Default:-1).
- Throws:
RemoteException
- See Also:
-
getAutoCommit
Liefert true, wenn autocommit aktiv sein soll. Default: false.- Returns:
- Autocommit.
- Throws:
RemoteException
-
getInsertWithID
Liefert true, wenn der DB-Service bei INSERT-Queries vorher die zu verwendende ID ermitteln soll. MySQL zum besitzt eine auto_increment-Funktion, mit der es nicht notwendig ist, die ID beim Insert mit anzugeben. Falls die Datenbank das jedoch nicht korrekt kann (z.Bsp. McKoi), dann kann die Funktion true liefern. In dem Fall wird vor dem Insert ein "select max(id)+1 from table" ausgefuehrt und diese ID fuer das Insert verwendet. Standard-Wert: TRUE- Returns:
- true, wenn bei Inserts vorher die ID ermittelt werden soll.
- Throws:
RemoteException
-