public class LocalDSService extends Object implements xyz.cofe.sql.ConnectionPoolService
Осуществляет поиск в локальной файловой системе и регистрацию найденых соединений с СУБД в пуле соединений.
Используется первый подходящий каталог, если такого каталога нет, то он создается либо используется реализация в оперативной памяти.
Последовательность поиска (см сис свойство ___):
.connections
относительно текущего каталога. .connections
относительно домашнего каталога пользователя. сис свойством (__)
Пример:
.connections/ Найденый каталог с файлами .connections/connections.properties Этот файл определяет поведение LocalDSService .connections/a1.xml Этот файл будет зарегистриован как соединение a1 .connections/b/a2.xml Этот файл будет зарегистриован как соединение b/a2Соединение с СУБД описывается XML файлом.
Файлы описания соединения:
<!-- type - указывает класс (возможно производный от) xyz.cofe.sql.BasicDataSource --> <dataSource type="xyz.cofe.sql.BasicDataSource"> <!-- url - указывает с каким сервером соединяться, для разных драйверов СУБД/JDBC MSSQL драйвер com.microsoft.sqlserver.jdbc.SQLServerDriver см https://docs.microsoft.com/ru-ru/sql/connect/jdbc/building-the-connection-url jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]] jdbc:sqlserver://localhost;user=MyUserName;password=*****; jdbc:sqlserver://localhost;databaseName=AdventureWorks;integratedSecurity=true;applicationName=MyApp; ORACLE драйвер oracle.jdbc.OracleDriver jdbc:oracle:thin:[<user>/<password>]@<host>[:<port>]:<SID> jdbc:oracle:thin:[<user>/<password>]@//<host>[:<port>]/<service> jdbc:oracle:thin:[<user>/<password>]@<TNSName> POSTGRESQL драйвер org.postgresql.Driver jdbc:postgresql://host:port/database --> <url>jdbc:sqlserver://192.168.1.10:1433;databaseName=test</url> <!-- Таймаут коннекта в секундах --> <loginTimeout>60</loginTimeout> <!-- __ --> <autoCommit>true</autoCommit> <!-- __ --> <schema>schema_name</schema> <!-- Тип изоляции транзакций: Uncommitted Committed Repeatable Serializable --> <transactIsolation>Repeatable</transactIsolation> <networkTimeoutDaemon>true</networkTimeoutDaemon> <networkTimeoutStatic>true</networkTimeoutStatic> <networkTimeoutThreadName>DataSource network timeout</networkTimeoutThreadName> <networkTimeoutThreads>1</networkTimeoutThreads> <!-- Cвойства соединения передаваемые к DriverManager --> <properties> <!-- свойство user - указывает имя пользователя СУБД --> <property> <key>user</key> <value>test</value> </property> <!-- свойство password - указывает пароль пользователя СУБД --> <property> <key>password</key> <value>test</value> </property> </properties> </dataSource>
Файл connections.properties
Этот файл заданный в корне каталога соединений (.connections) содержит в себе пары ключ/значение определяющие как работать с соединениями. Файл является текстовым в формате UTF-8.
| Свойство | Значение по умолчанию | Описание |
| registerConnections | true | true - регистрировать соединения в пуле |
| forceCreateLocalDS | true | true - при не возможности создать DirectoryDSS, будет использоваться реализация MemDataSource |
| bindMap | true | true - Осуществлять привязку соединений из пула к каталогу соединений |
| bindForInsert | true | true - При добавлении новых соединений в пул, соединения будут сохранены в каталоге |
| bindForUpdate | true | true - При обновлении соединений в пул, соединения будут сохранены в каталоге |
| bindForDelete | true | true - При удалении соединений из пула, соединения будут удалены из каталога |
Системные свойства:
| Свойство | Значение по умолчанию | Описание |
| xyz.cofe.sql.localds.directories | Указывает каталоги через точку с запятой в которых будет производится поиск искомого каталога | |
| xyz.cofe.sql.localds.baseDirName | .connections | Искомый каталог с подключениями |
| os.name | linux | если содержит строку windows (без учета регистра) - то windows. Определяет, если os = windows - то имя мскомого каталога не зависит от регистра |
| xyz.cofe.sql.localds.currentDir | Указывает на тек. каталог если значение не указано, то используется: File(".") |
|
| xyz.cofe.sql.localds.userHomeDir | Переопределяет домашний каталог пользователя, по умолчанию значение береться из системной переменной user.home | |
| xyz.cofe.sql.localds.resolveMethods | searchForDirectories;searchFromCurrent;searchInHome;createInHome;createInCurrent | Указывает в какой последовательности и как производить поиск.
|
| xyz.cofe.sql.localds.mkdir.posix.perms | rwx------ | Указывает POSIX доступ к создаваемому каталогу |
| Modifier and Type | Class and Description |
|---|---|
class |
LocalDSService.EMapBinder |
| Modifier and Type | Field and Description |
|---|---|
protected xyz.cofe.io.File |
directory |
protected Properties |
properties |
protected PropertyChangeSupport |
psupp |
protected xyz.cofe.sql.DataSourcesStorage |
storage |
| Constructor and Description |
|---|
LocalDSService() |
LocalDSService(xyz.cofe.io.File dir,
Properties props) |
LocalDSService(String dir) |
LocalDSService(String dir,
Properties props) |
| Modifier and Type | Method and Description |
|---|---|
void |
addPropertyChangeListener(PropertyChangeListener listener) |
void |
addPropertyChangeListener(String propertyName,
PropertyChangeListener listener) |
protected LocalDSService.EMapBinder |
bind(xyz.cofe.collection.map.EventMap<String,DataSource> emap,
xyz.cofe.sql.DataSourcesStorage dss) |
protected void |
deleteRequest(String key,
DataSource ds,
xyz.cofe.sql.DataSourcesStorage dss) |
void |
firePropertyChange(String propertyName,
Object oldValue,
Object newValue) |
xyz.cofe.io.File |
getDirectory()
Каталог содержащий источники данных
|
protected Properties |
getProperties() |
boolean |
getProperty(String name,
boolean defaultValue) |
int |
getProperty(String name,
int defaultValue) |
String |
getProperty(String name,
String defaultValue) |
PropertyChangeListener[] |
getPropertyChangeListeners() |
PropertyChangeListener[] |
getPropertyChangeListeners(String propertyName) |
xyz.cofe.sql.DataSourcesStorage |
getStorage() |
boolean |
hasListeners(String propertyName) |
void |
init(xyz.cofe.sql.ConnectPool cp)
Инициализация connectionPool
|
protected void |
insertRequest(String key,
DataSource ds,
xyz.cofe.sql.DataSourcesStorage dss) |
boolean |
isBindForDelete() |
boolean |
isBindForInsert() |
boolean |
isBindForUpdate() |
boolean |
isBindMap() |
boolean |
isForceCreateLocalDS() |
boolean |
isRegisterConnections() |
void |
reloadProperties() |
protected void |
removeFromStorageRequest(xyz.cofe.sql.DataSourcesStorage dss,
String key,
DataSource ds) |
void |
removePropertyChangeListener(PropertyChangeListener listener) |
void |
removePropertyChangeListener(String propertyName,
PropertyChangeListener listener) |
xyz.cofe.io.File |
resolveDirectory() |
protected void |
saveOnStorageRequest(xyz.cofe.sql.DataSourcesStorage dss,
String key,
DataSource ds) |
boolean |
saveProperties() |
void |
setBindForDelete(boolean v) |
void |
setBindForInsert(boolean v) |
void |
setBindForUpdate(boolean v) |
void |
setBindMap(boolean v) |
void |
setDirectory(xyz.cofe.io.File directory)
Каталог содержащий источники данных
|
void |
setForceCreateLocalDS(boolean v) |
void |
setProperty(String name,
boolean value) |
void |
setProperty(String name,
int value) |
void |
setProperty(String name,
String value) |
void |
setRegisterConnections(boolean v) |
void |
setStorage(xyz.cofe.sql.DataSourcesStorage storage) |
protected void |
updateRequest(String key,
DataSource dsOld,
DataSource dsNew,
xyz.cofe.sql.DataSourcesStorage dss) |
protected final transient PropertyChangeSupport psupp
protected Properties properties
protected xyz.cofe.io.File directory
protected xyz.cofe.sql.DataSourcesStorage storage
public LocalDSService()
public LocalDSService(String dir)
public LocalDSService(String dir, Properties props)
public LocalDSService(xyz.cofe.io.File dir,
Properties props)
public void addPropertyChangeListener(PropertyChangeListener listener)
public void removePropertyChangeListener(PropertyChangeListener listener)
public PropertyChangeListener[] getPropertyChangeListeners()
public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener)
public PropertyChangeListener[] getPropertyChangeListeners(String propertyName)
public void firePropertyChange(String propertyName, Object oldValue, Object newValue)
public boolean hasListeners(String propertyName)
protected Properties getProperties()
public void reloadProperties()
public boolean saveProperties()
public boolean getProperty(String name, boolean defaultValue)
public void setProperty(String name, boolean value)
public int getProperty(String name, int defaultValue)
public void setProperty(String name, int value)
public void init(xyz.cofe.sql.ConnectPool cp)
init in interface xyz.cofe.sql.ConnectionPoolServicecp - connectionPoolpublic boolean isRegisterConnections()
public void setRegisterConnections(boolean v)
public xyz.cofe.io.File resolveDirectory()
public xyz.cofe.io.File getDirectory()
public void setDirectory(xyz.cofe.io.File directory)
directory - каталог с источниками данныхpublic boolean isForceCreateLocalDS()
public void setForceCreateLocalDS(boolean v)
public xyz.cofe.sql.DataSourcesStorage getStorage()
public void setStorage(xyz.cofe.sql.DataSourcesStorage storage)
public boolean isBindMap()
public void setBindMap(boolean v)
public boolean isBindForInsert()
public void setBindForInsert(boolean v)
public boolean isBindForUpdate()
public void setBindForUpdate(boolean v)
public boolean isBindForDelete()
public void setBindForDelete(boolean v)
protected void saveOnStorageRequest(xyz.cofe.sql.DataSourcesStorage dss,
String key,
DataSource ds)
protected void removeFromStorageRequest(xyz.cofe.sql.DataSourcesStorage dss,
String key,
DataSource ds)
protected void insertRequest(String key, DataSource ds, xyz.cofe.sql.DataSourcesStorage dss)
protected void updateRequest(String key, DataSource dsOld, DataSource dsNew, xyz.cofe.sql.DataSourcesStorage dss)
protected void deleteRequest(String key, DataSource ds, xyz.cofe.sql.DataSourcesStorage dss)
protected LocalDSService.EMapBinder bind(xyz.cofe.collection.map.EventMap<String,DataSource> emap, xyz.cofe.sql.DataSourcesStorage dss)
Copyright © 2019. All rights reserved.