public class LocalDSService extends Object implements 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 File |
directory |
protected Properties |
properties |
protected PropertyChangeSupport |
psupp |
protected DataSourcesStorage |
storage |
| Constructor and Description |
|---|
LocalDSService() |
LocalDSService(File dir,
Properties props) |
LocalDSService(String dir) |
LocalDSService(String dir,
Properties props) |
protected final transient PropertyChangeSupport psupp
protected Properties properties
protected File directory
protected DataSourcesStorage storage
public LocalDSService()
public LocalDSService(String dir)
public LocalDSService(String dir, Properties props)
public LocalDSService(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(ConnectPool cp)
init in interface ConnectionPoolServicecp - connectionPoolpublic boolean isRegisterConnections()
public void setRegisterConnections(boolean v)
public File resolveDirectory()
public File getDirectory()
public void setDirectory(File directory)
directory - каталог с источниками данныхpublic boolean isForceCreateLocalDS()
public void setForceCreateLocalDS(boolean v)
public DataSourcesStorage getStorage()
public void setStorage(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(DataSourcesStorage dss, String key, DataSource ds)
protected void removeFromStorageRequest(DataSourcesStorage dss, String key, DataSource ds)
protected void insertRequest(String key, DataSource ds, DataSourcesStorage dss)
protected void updateRequest(String key, DataSource dsOld, DataSource dsNew, DataSourcesStorage dss)
protected void deleteRequest(String key, DataSource ds, DataSourcesStorage dss)
protected LocalDSService.EMapBinder bind(EventMap<String,DataSource> emap, DataSourcesStorage dss)
Copyright © 2018. All rights reserved.