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 voidcheckConnection(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 booleanLiefert true, wenn autocommit aktiv sein soll.protected ConnectionLiefert die Connection, die dieser Service gerade verwendet.protected booleanLiefert true, wenn der DB-Service bei INSERT-Queries vorher die zu verwendende ID ermitteln soll.protected StringLiefert den JDBC-Treiber.protected StringLiefert das JDBC-Passwort.protected StringLiefert die JDBC-URL.protected StringLiefert den JDBC-Usernamen.getName()Liefert den sprechenden Namen des Services.protected intLiefert den Transaction-Isolation-Level.booleanPrueft, ob der Service gestartet werden darf.booleanPrueft, ob dieser Service gestartet ist.protected voidsetClassFinder(de.willuhn.util.ClassFinder finder) Definiert einen optionalen Classfinder, der von dem Service zum Laden von Objekten genommen werden soll.protected voidsetClassloader(ClassLoader loader) Definiert einen optionalen benutzerdefinierten Classloader.voidstart()Startet den Service.voidstop(boolean restartAllowed) Stoppt den Service.Methods inherited from class java.rmi.server.UnicastRemoteObject
clone, exportObject, exportObject, exportObject, exportObject, exportObject, unexportObjectMethods 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 increatObjectundcreateListverwendet, 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:ServicePrueft, ob der Service gestartet werden darf.- Specified by:
isStartablein interfaceService- Returns:
- true, wenn er gestartet werden darf, sonst false.
- Throws:
RemoteException- See Also:
-
start
Description copied from interface:ServiceStartet den Service.- Specified by:
startin interfaceService- Throws:
RemoteException- See Also:
-
stop
Description copied from interface:ServiceStoppt den Service.- Specified by:
stopin 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:DBServiceErzeugt ein neues Objekt des angegebenen Typs.- Specified by:
createObjectin 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:DBServiceLiefert eine Liste aller in der Datenbank vorhandenen Objekte des angegebenen Typs,- Specified by:
createListin 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:DBServiceFuehrt ein SQL-Statement aus und uebergibt das Resultset an den Extractor.- Specified by:
executein 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:ServicePrueft, ob dieser Service gestartet ist.- Specified by:
isStartedin interfaceService- Returns:
- true wenn er gestartet ist, sonst false.
- Throws:
RemoteException- See Also:
-
getName
Description copied from interface:ServiceLiefert den sprechenden Namen des Services.- Specified by:
getNamein 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
-