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 void
checkConnection(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.Object
execute(java.lang.String sql, java.lang.Object[] params, ResultSetExtractor extractor)
Fuehrt ein SQL-Statement aus und uebergibt das Resultset an den Extractor.protected boolean
getAutoCommit()
Liefert true, wenn autocommit aktiv sein soll.protected java.sql.Connection
getConnection()
Liefert die Connection, die dieser Service gerade verwendet.protected boolean
getInsertWithID()
Liefert true, wenn der DB-Service bei INSERT-Queries vorher die zu verwendende ID ermitteln soll.protected java.lang.String
getJdbcDriver()
Liefert den JDBC-Treiber.protected java.lang.String
getJdbcPassword()
Liefert das JDBC-Passwort.protected java.lang.String
getJdbcUrl()
Liefert die JDBC-URL.protected java.lang.String
getJdbcUsername()
Liefert den JDBC-Usernamen.java.lang.String
getName()
Liefert den sprechenden Namen des Services.protected int
getTransactionIsolationLevel()
Liefert den Transaction-Isolation-Level.boolean
isStartable()
Prueft, ob der Service gestartet werden darf.boolean
isStarted()
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(java.lang.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
-
-
-
-
Constructor Detail
-
DBServiceImpl
public DBServiceImpl() throws java.rmi.RemoteException
Erzeugt eine neue Instanz.- Throws:
java.rmi.RemoteException
-
DBServiceImpl
public DBServiceImpl(java.lang.String jdbcDriver, java.lang.String jdbcURL) throws java.rmi.RemoteException
Erzeugt 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.RemoteException
Erzeugt 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.RemoteException
Liefert die Connection, die dieser Service gerade verwendet.- Returns:
- Connection.
- Throws:
java.rmi.RemoteException
-
checkConnection
protected void checkConnection(java.sql.Connection conn) throws java.sql.SQLException
Kann 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 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
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.RemoteException
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:
java.rmi.RemoteException
- See Also:
Service.isStartable()
-
start
public void start() throws java.rmi.RemoteException
Description copied from interface:Service
Startet den Service.- Specified by:
start
in interfaceService
- Throws:
java.rmi.RemoteException
- See Also:
Service.start()
-
stop
public void stop(boolean restartAllowed) throws java.rmi.RemoteException
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:
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: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:
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: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:
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.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:
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.RemoteException
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:
java.rmi.RemoteException
- See Also:
Service.isStarted()
-
getName
public java.lang.String getName() throws java.rmi.RemoteException
Description copied from interface:Service
Liefert den sprechenden Namen des Services.- Specified by:
getName
in interfaceService
- Returns:
- Name des Services.
- Throws:
java.rmi.RemoteException
- See Also:
Service.getName()
-
getJdbcDriver
protected java.lang.String getJdbcDriver() throws java.rmi.RemoteException
Liefert den JDBC-Treiber.- Returns:
- der JDBC-Treiber.
- Throws:
java.rmi.RemoteException
-
getJdbcUrl
protected java.lang.String getJdbcUrl() throws java.rmi.RemoteException
Liefert die JDBC-URL.- Returns:
- die JDBC-URL.
- Throws:
java.rmi.RemoteException
-
getJdbcUsername
protected java.lang.String getJdbcUsername() throws java.rmi.RemoteException
Liefert den JDBC-Usernamen.- Returns:
- der Username.
- Throws:
java.rmi.RemoteException
-
getJdbcPassword
protected java.lang.String getJdbcPassword() throws java.rmi.RemoteException
Liefert das JDBC-Passwort.- Returns:
- das JDBC-Passwort.
- Throws:
java.rmi.RemoteException
-
getTransactionIsolationLevel
protected int getTransactionIsolationLevel() throws java.rmi.RemoteException
Liefert 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.RemoteException
Liefert true, wenn autocommit aktiv sein soll. Default: false.- Returns:
- Autocommit.
- Throws:
java.rmi.RemoteException
-
getInsertWithID
protected boolean getInsertWithID() throws java.rmi.RemoteException
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:
java.rmi.RemoteException
-
-