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
-
- Direct Known Subclasses:
EmbeddedDBServiceImpl
public class DBServiceImpl extends java.rmi.server.UnicastRemoteObject implements DBService
Diese Klasse implementiert eine ueber RMI erreichbaren Datenbank.- Author:
- willuhn
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description DBServiceImpl()Erzeugt eine neue Instanz.DBServiceImpl(java.lang.String jdbcDriver, java.lang.String jdbcURL)Erzeugt eine neue Instanz.DBServiceImpl(java.lang.String jdbcDriver, java.lang.String jdbcURL, java.lang.String jdbcUsername, java.lang.String jdbcPassword)Erzeugt eine neue Instanz.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidcheckConnection(java.sql.Connection conn)Kann von abgeleiteten Klassen ueberschrieben werden, um die Connection zu testen.<T extends DBObject>
DBIterator<T>createList(java.lang.Class<? extends DBObject> c)Liefert eine Liste aller in der Datenbank vorhandenen Objekte des angegebenen Typs,<T extends DBObject>
TcreateObject(java.lang.Class<? extends DBObject> c, java.lang.String identifier)Erzeugt ein neues Objekt des angegebenen Typs.java.lang.Objectexecute(java.lang.String sql, java.lang.Object[] params, ResultSetExtractor extractor)Fuehrt ein SQL-Statement aus und uebergibt das Resultset an den Extractor.protected booleangetAutoCommit()Liefert true, wenn autocommit aktiv sein soll.protected java.sql.ConnectiongetConnection()Liefert die Connection, die dieser Service gerade verwendet.protected booleangetInsertWithID()Liefert true, wenn der DB-Service bei INSERT-Queries vorher die zu verwendende ID ermitteln soll.protected java.lang.StringgetJdbcDriver()Liefert den JDBC-Treiber.protected java.lang.StringgetJdbcPassword()Liefert das JDBC-Passwort.protected java.lang.StringgetJdbcUrl()Liefert die JDBC-URL.protected java.lang.StringgetJdbcUsername()Liefert den JDBC-Usernamen.java.lang.StringgetName()Liefert den sprechenden Namen des Services.protected intgetTransactionIsolationLevel()Liefert den Transaction-Isolation-Level.booleanisStartable()Prueft, ob der Service gestartet werden darf.booleanisStarted()Prueft, 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(java.lang.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, unexportObject
-
-
-
-
Constructor Detail
-
DBServiceImpl
public DBServiceImpl() throws java.rmi.RemoteExceptionErzeugt eine neue Instanz.- Throws:
java.rmi.RemoteException
-
DBServiceImpl
public DBServiceImpl(java.lang.String jdbcDriver, java.lang.String jdbcURL) throws java.rmi.RemoteExceptionErzeugt eine neue Instanz.- Parameters:
jdbcDriver- JDBC-Treiber-Klasse.jdbcURL- JDBC-URL.- Throws:
java.rmi.RemoteException
-
DBServiceImpl
public DBServiceImpl(java.lang.String jdbcDriver, java.lang.String jdbcURL, java.lang.String jdbcUsername, java.lang.String jdbcPassword) throws java.rmi.RemoteExceptionErzeugt eine neue Instanz.- Parameters:
jdbcDriver- JDBC-Treiber-Klasse.jdbcURL- JDBC-URL.jdbcUsername- Username.jdbcPassword- Passwort.- Throws:
java.rmi.RemoteException
-
-
Method Detail
-
getConnection
protected java.sql.Connection getConnection() throws java.rmi.RemoteExceptionLiefert die Connection, die dieser Service gerade verwendet.- Returns:
- Connection.
- Throws:
java.rmi.RemoteException
-
checkConnection
protected void checkConnection(java.sql.Connection conn) throws java.sql.SQLExceptionKann von abgeleiteten Klassen ueberschrieben werden, um die Connection zu testen.- Parameters:
conn- die zu testende Connection. Ist nienull.- Throws:
java.sql.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
protected void setClassloader(java.lang.ClassLoader loader)
Definiert einen optionalen benutzerdefinierten Classloader. Wird er nicht gesetzt, wirdClass.forName()benutzt.- Parameters:
loader- Benutzerdefinierter Classloader.
-
isStartable
public boolean isStartable() throws java.rmi.RemoteExceptionDescription copied from interface:ServicePrueft, ob der Service gestartet werden darf.- Specified by:
isStartablein interfaceService- Returns:
- true, wenn er gestartet werden darf, sonst false.
- Throws:
java.rmi.RemoteException- See Also:
Service.isStartable()
-
start
public void start() throws java.rmi.RemoteExceptionDescription copied from interface:ServiceStartet den Service.- Specified by:
startin interfaceService- Throws:
java.rmi.RemoteException- See Also:
Service.start()
-
stop
public void stop(boolean restartAllowed) throws java.rmi.RemoteExceptionDescription 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:
java.rmi.RemoteException- See Also:
Service.stop(boolean)
-
createObject
public <T extends DBObject> T createObject(java.lang.Class<? extends DBObject> c, java.lang.String identifier) throws java.rmi.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:
java.rmi.RemoteException- See Also:
DBService.createObject(java.lang.Class, java.lang.String)
-
createList
public <T extends DBObject> DBIterator<T> createList(java.lang.Class<? extends DBObject> c) throws java.rmi.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:
java.rmi.RemoteException- See Also:
DBService.createList(java.lang.Class)
-
execute
public java.lang.Object execute(java.lang.String sql, java.lang.Object[] params, ResultSetExtractor extractor) throws java.rmi.RemoteExceptionDescription 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:
java.rmi.RemoteException- See Also:
DBService.execute(java.lang.String, java.lang.Object[], de.willuhn.datasource.rmi.ResultSetExtractor)
-
isStarted
public boolean isStarted() throws java.rmi.RemoteExceptionDescription copied from interface:ServicePrueft, ob dieser Service gestartet ist.- Specified by:
isStartedin interfaceService- Returns:
- true wenn er gestartet ist, sonst false.
- Throws:
java.rmi.RemoteException- See Also:
Service.isStarted()
-
getName
public java.lang.String getName() throws java.rmi.RemoteExceptionDescription copied from interface:ServiceLiefert den sprechenden Namen des Services.- Specified by:
getNamein interfaceService- Returns:
- Name des Services.
- Throws:
java.rmi.RemoteException- See Also:
Service.getName()
-
getJdbcDriver
protected java.lang.String getJdbcDriver() throws java.rmi.RemoteExceptionLiefert den JDBC-Treiber.- Returns:
- der JDBC-Treiber.
- Throws:
java.rmi.RemoteException
-
getJdbcUrl
protected java.lang.String getJdbcUrl() throws java.rmi.RemoteExceptionLiefert die JDBC-URL.- Returns:
- die JDBC-URL.
- Throws:
java.rmi.RemoteException
-
getJdbcUsername
protected java.lang.String getJdbcUsername() throws java.rmi.RemoteExceptionLiefert den JDBC-Usernamen.- Returns:
- der Username.
- Throws:
java.rmi.RemoteException
-
getJdbcPassword
protected java.lang.String getJdbcPassword() throws java.rmi.RemoteExceptionLiefert das JDBC-Passwort.- Returns:
- das JDBC-Passwort.
- Throws:
java.rmi.RemoteException
-
getTransactionIsolationLevel
protected int getTransactionIsolationLevel() throws java.rmi.RemoteExceptionLiefert den Transaction-Isolation-Level.- Returns:
- transactionIsolationLevel Transaction-Isolation-Level (Default:-1).
- Throws:
java.rmi.RemoteException- See Also:
Connection.TRANSACTION_NONE,Connection.TRANSACTION_READ_COMMITTED,Connection.TRANSACTION_READ_UNCOMMITTED,Connection.TRANSACTION_REPEATABLE_READ,Connection.TRANSACTION_SERIALIZABLE
-
getAutoCommit
protected boolean getAutoCommit() throws java.rmi.RemoteExceptionLiefert true, wenn autocommit aktiv sein soll. Default: false.- Returns:
- Autocommit.
- Throws:
java.rmi.RemoteException
-
getInsertWithID
protected boolean getInsertWithID() throws java.rmi.RemoteExceptionLiefert 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:
java.rmi.RemoteException
-
-