Class BasicDataSource
- All Implemented Interfaces:
java.sql.Wrapper,javax.sql.CommonDataSource,javax.sql.DataSource,xyz.cofe.scn.LongScn<SimpleDataSource,SimpleDataSource>,xyz.cofe.scn.Scn<SimpleDataSource,java.lang.Long,SimpleDataSource>,ConnectOptions
public class BasicDataSource extends SimpleDataSource implements ConnectOptions
Формат XML:
<dataSource type="xyz.cofe.sql.cpool.BasicDataSource">
<!-- Ссылка на соединение с БД (JDBC connect string) -->
<url>jdbc:mysql://127.0.0.1/database_name</url>
<!-- время таймаута (сек) на соединения с базой данных -->
<loginTimeout>60</loginTimeout>
<networkTimeoutDaemon>true</networkTimeoutDaemon>
<networkTimeoutStatic>true</networkTimeoutStatic>
<networkTimeoutThreadName>DataSource network timeout</networkTimeoutThreadName>
<networkTimeoutThreads>1</networkTimeoutThreads>
<properties>
<!-- логин -->
<property>
<key>user</key>
<value>login</value>
</property>
<!-- пароль -->
<property>
<key>password</key>
<value>password</value>
</property>
</properties>
<options>
<property>
<key>proxyConnection</key>
<value>true</value>
</property>
<property>
<key>collectActivityStat</key>
<value>true</value>
</property>
<property>
<key>shared</key>
<value>true</value>
</property>
<property>
<key>idleTimeout</key>
<value>5000</value>
</property>
</options>
</dataSource>
- Author:
- Kamnev Georgiy
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classBasicDataSource.XmlVisitor -
Field Summary
Fields Modifier and Type Field Description protected java.lang.BooleanautoCommitstatic java.nio.charset.CharsetdefaultFileCharsetprotected java.lang.IntegernetworkTimeoutprotected java.lang.BooleannetworkTimeoutDaemonprotected static java.util.concurrent.ExecutorServicenetworkTimeoutServiceprotected java.lang.BooleannetworkTimeoutStaticprotected java.lang.StringnetworkTimeoutThreadNameprotected java.lang.IntegernetworkTimeoutThreadsprotected java.lang.Stringschemaprotected TransactIsolationtransactIsolationРежим изоляции транзакцийstatic java.lang.StringXMLROOTИмя корневого тега (dataSource)Fields inherited from class xyz.cofe.sql.cpool.SimpleDataSource
loginTimeout, logWriter, properties, psupport, readWriteLock, url -
Constructor Summary
Constructors Constructor Description BasicDataSource()BasicDataSource(java.lang.String url)BasicDataSource(java.lang.String url, java.lang.String username, java.lang.String password)BasicDataSource(java.lang.String url, java.util.Properties props)BasicDataSource(BasicDataSource sample) -
Method Summary
Modifier and Type Method Description voidassign(SimpleDataSource ds)java.lang.StringasXml()BasicDataSourceclone()protected voidconfigureConnection(java.sql.Connection conn)java.lang.BooleangetAutoCommit()Указывает автоматическое подтверждение транзакцийjava.sql.ConnectiongetConnection()java.sql.ConnectiongetConnection(java.lang.String username, java.lang.String password)ConnectOptionsPropertiesgetConnectOptions()Указывает опции соединенияlonggetIdleTimeout()Указывает время (мс) простоя соединения, после которого соединение будет закрыто.java.lang.IntegergetNetworkTimeout()Устанавливает максимальный период, когда соединение или объекты, созданные из Connection, будут ждать, пока база данных ответит на любой запрос.java.lang.BooleangetNetworkTimeoutDaemon()Указывает как запускать сервис network timeout.static java.util.concurrent.ExecutorServicegetNetworkTimeoutService()java.lang.BooleangetNetworkTimeoutStatic()Использовать сервис проверки network timeout как статичный (синглетон) демонjava.lang.StringgetNetworkTimeoutThreadName()java.lang.IntegergetNetworkTimeoutThreads()Указывает кол-во потоков/тредов для сервиса network-timeoutjava.lang.StringgetSchema()Указывают текущую схему при установке соединенияlonggetStatementIdleTimeout()Указывает время (мс) простоя запроса, после которого запрос будет закрыт.TransactIsolationgetTransactIsolation()Указывает режим изоляции транзакцийbooleanisCollectActivityStat()Собирать статистику активностиbooleanisProxyConnection()Создавать прокси соединениеbooleanisShared()Указывает что при установке соединения (connect()) должно использоваться уже открытоеvoidloadXml(org.w3c.dom.Node xml)static BasicDataSourceread(javax.xml.stream.XMLStreamReader reader)static BasicDataSourcereadXml(java.io.File reader)static BasicDataSourcereadXml(java.io.File reader, java.nio.charset.Charset cs)static BasicDataSourcereadXml(java.io.InputStream reader)static BasicDataSourcereadXml(java.io.InputStream reader, java.nio.charset.Charset cs)static BasicDataSourcereadXml(java.io.Reader reader)static BasicDataSourcereadXml(java.net.URL reader)static BasicDataSourcereadXml(java.net.URL reader, java.nio.charset.Charset cs)static BasicDataSourcereadXml(java.nio.file.Path reader)static BasicDataSourcereadXml(java.nio.file.Path reader, java.nio.charset.Charset cs)static BasicDataSourcereadXml(xyz.cofe.io.fs.File reader)static BasicDataSourcereadXml(xyz.cofe.io.fs.File reader, java.nio.charset.Charset cs)voidsetAutoCommit(java.lang.Boolean autoCommit)Указывает автоматическое подтверждение транзакцийvoidsetCollectActivityStat(boolean v)Собирать статистику активностиvoidsetIdleTimeout(long ms)Указывает время (мс) простоя соединения, после которого соединение будет закрыто.voidsetNetworkTimeout(java.lang.Integer networkTimeout)Указывает таймут сети.voidsetNetworkTimeoutDaemon(java.lang.Boolean networkTimeoutDaemon)Указывает как запускать сервис network timeout.voidsetNetworkTimeoutStatic(java.lang.Boolean networkTimeoutStatic)Использовать сервис проверки network timeout как статичный (синглетон) демонvoidsetNetworkTimeoutThreadName(java.lang.String networkTimeoutThreadName)voidsetNetworkTimeoutThreads(java.lang.Integer networkTimeoutThreads)Указывает кол-во потоков/тредов для сервиса network-timeoutvoidsetProxyConnection(boolean v)Создавать прокси соединениеvoidsetSchema(java.lang.String schema)Указывают текущую схему при установке соединенияvoidsetShared(boolean v)voidsetStatementIdleTimeout(long ms)Указывает время (мс) простоя запроса, после которого запрос будет закрыт.voidsetTransactIsolation(TransactIsolation transactIsolation)Указывает режим изоляции транзакцийvoidwrite(javax.xml.stream.XMLStreamWriter xwr)voidwrite(org.w3c.dom.Element el)voidwrite(xyz.cofe.xml.FormatXMLWriter xwr)voidwriteXml(java.io.File writer)voidwriteXml(java.io.File writer, java.nio.charset.Charset cs)voidwriteXml(java.io.OutputStream writer)voidwriteXml(java.io.OutputStream writer, java.nio.charset.Charset cs)voidwriteXml(java.io.Writer writer)voidwriteXml(java.nio.file.Path writer)voidwriteXml(java.nio.file.Path writer, java.nio.charset.Charset cs)voidwriteXml(xyz.cofe.io.fs.File writer)voidwriteXml(xyz.cofe.io.fs.File writer, java.nio.charset.Charset cs)Methods inherited from class xyz.cofe.sql.cpool.SimpleDataSource
addPropertyChangeListener, addPropertyChangeListener, firePropertyChange, getLoginTimeout, getLogWriter, getParentLogger, getPassword, getPropertyChangeListeners, getPropertyChangeListeners, getReadWriteLock, getUrl, getUsername, hasListeners, isWrapperFor, properties, removePropertyChangeListener, removePropertyChangeListener, setLoginTimeout, setLogWriter, setPassword, setUrl, setUsername, unwrap
-
Field Details
-
autoCommit
protected java.lang.Boolean autoCommit -
transactIsolation
Режим изоляции транзакций -
schema
protected java.lang.String schema -
networkTimeout
protected java.lang.Integer networkTimeout -
networkTimeoutThreads
protected java.lang.Integer networkTimeoutThreads -
networkTimeoutDaemon
protected java.lang.Boolean networkTimeoutDaemon -
networkTimeoutThreadName
protected java.lang.String networkTimeoutThreadName -
networkTimeoutService
protected static transient volatile java.util.concurrent.ExecutorService networkTimeoutService -
networkTimeoutStatic
protected java.lang.Boolean networkTimeoutStatic -
XMLROOT
public static final java.lang.String XMLROOTИмя корневого тега (dataSource)- See Also:
- Constant Field Values
-
defaultFileCharset
public static final java.nio.charset.Charset defaultFileCharset
-
-
Constructor Details
-
BasicDataSource
public BasicDataSource() -
BasicDataSource
public BasicDataSource(java.lang.String url) -
BasicDataSource
public BasicDataSource(java.lang.String url, java.lang.String username, java.lang.String password) -
BasicDataSource
public BasicDataSource(java.lang.String url, java.util.Properties props) -
BasicDataSource
-
-
Method Details
-
clone
- Overrides:
clonein classSimpleDataSource
-
assign
- Overrides:
assignin classSimpleDataSource
-
getConnectOptions
Указывает опции соединения- Returns:
- опции соединения
-
isProxyConnection
public boolean isProxyConnection()Создавать прокси соединение- Specified by:
isProxyConnectionin interfaceConnectOptions- Returns:
- true - создавать прокси
-
setProxyConnection
public void setProxyConnection(boolean v)Создавать прокси соединение- Parameters:
v- true - создавать прокси
-
isCollectActivityStat
public boolean isCollectActivityStat()Собирать статистику активности- Specified by:
isCollectActivityStatin interfaceConnectOptions- Returns:
- собирать статистику активности
-
setCollectActivityStat
public void setCollectActivityStat(boolean v)Собирать статистику активности- Parameters:
v- true - собирать статистику активности
-
getIdleTimeout
public long getIdleTimeout()Указывает время (мс) простоя соединения, после которого соединение будет закрыто.значение -1 и меньше - не закрывать по истечению таймаута
- Specified by:
getIdleTimeoutin interfaceConnectOptions- Returns:
- Время простоя
-
setIdleTimeout
public void setIdleTimeout(long ms)Указывает время (мс) простоя соединения, после которого соединение будет закрыто.значение -1 и меньше - не закрывать по истечению таймаута
- Parameters:
ms- время (мс) простоя соединения
-
getStatementIdleTimeout
public long getStatementIdleTimeout()Указывает время (мс) простоя запроса, после которого запрос будет закрыт.значение -1 и меньше - не закрывать по истечению таймаута
- Specified by:
getStatementIdleTimeoutin interfaceConnectOptions- Returns:
- Время (мс) простоя
-
setStatementIdleTimeout
public void setStatementIdleTimeout(long ms)Указывает время (мс) простоя запроса, после которого запрос будет закрыт.значение -1 и меньше - не закрывать по истечению таймаута
- Parameters:
ms- Время (мс) простоя
-
isShared
public boolean isShared()Description copied from interface:ConnectOptionsУказывает что при установке соединения (connect()) должно использоваться уже открытое- Specified by:
isSharedin interfaceConnectOptions- Returns:
- Содинение доступно для всех
-
setShared
public void setShared(boolean v) -
getConnection
public java.sql.Connection getConnection(java.lang.String username, java.lang.String password) throws java.sql.SQLException- Specified by:
getConnectionin interfacejavax.sql.DataSource- Overrides:
getConnectionin classSimpleDataSource- Throws:
java.sql.SQLException
-
getConnection
public java.sql.Connection getConnection() throws java.sql.SQLException- Specified by:
getConnectionin interfacejavax.sql.DataSource- Overrides:
getConnectionin classSimpleDataSource- Throws:
java.sql.SQLException
-
getAutoCommit
public java.lang.Boolean getAutoCommit()Указывает автоматическое подтверждение транзакций- Returns:
- true - автоматическое подтверждение транзакций
-
setAutoCommit
public void setAutoCommit(java.lang.Boolean autoCommit)Указывает автоматическое подтверждение транзакций- Parameters:
autoCommit- true - автоматическое подтверждение транзакций
-
getTransactIsolation
Указывает режим изоляции транзакций- Returns:
- режим изоляции транзакций
-
setTransactIsolation
Указывает режим изоляции транзакций- Parameters:
transactIsolation- режим изоляции транзакций
-
getSchema
public java.lang.String getSchema()Указывают текущую схему при установке соединения- Returns:
- имя схемы
-
setSchema
public void setSchema(java.lang.String schema)Указывают текущую схему при установке соединения- Parameters:
schema- имя схемы
-
getNetworkTimeout
public java.lang.Integer getNetworkTimeout()Устанавливает максимальный период, когда соединение или объекты, созданные из Connection, будут ждать, пока база данных ответит на любой запрос.Если какой-либо запрос остается без ответа, метод ожидания вернется с помощью SQLException, а Connection или объекты, созданные из Connection, будут отмечены как закрытые. Любое последующее использование объектов, за исключением методов close, isClosed или Connection.isValid, приведет к SQLException.
Примечание. Этот метод предназначен для решения редкого, но серьезного состояния, при котором сетевые разделы могут вызывать потоки, выдающие вызовы JDBC, для непрерывного зависания в сокетах, до OS TCP-TIMEOUT (обычно 10 минут). Этот метод связан с методом abort (), который предоставляет потоку администратора средство для освобождения таких потоков в случаях, когда соединение JDBC доступно для потока администратора. Метод setNetworkTimeout будет охватывать случаи, когда нет потока администратора или он не имеет доступа к соединению. Этот метод является серьезным в его эффектах и должен иметь достаточно высокое значение, поэтому он никогда не запускается до каких-либо более обычных тайм-аутов, таких как таймауты транзакций.
Реализации драйвера JDBC также могут поддерживать метод setNetworkTimeout, чтобы наложить ограничение на время отклика базы данных в средах, где нет сети.
Драйверы могут внутренне реализовывать некоторые или все свои вызовы API с несколькими внутренними передачами драйверов-баз данных, и для реализации этого варианта остается только, будет ли предел применяться всегда к ответу на вызов API или любому отдельному запросу во время вызова API.
Этот метод можно вызвать несколько раз, например, установить ограничение для области кода JDBC и сбросить значение по умолчанию при выходе из этой области. Вызов этого метода не влияет на уже выдающиеся запросы.
Значение тайм-аута Statement.setQueryTimeout () не зависит от значения таймаута, указанного в setNetworkTimeout. Если тайм-аут запроса истекает до истечения сетевого тайм-аута, выполнение заявки будет отменено.
Если сеть все еще активна, результатом будет то, что и оператор, и соединение все еще могут использоваться.
Однако, если истечение таймаута сети истекает до таймаута запроса или если тайм-аут инструкции выходит из строя из-за сетевых проблем, соединение будет отмечено как закрытое, любые ресурсы, удерживаемые соединением, будут освобождены, и соединение и инструкция будут непригодными.
Когда драйвер определяет, что значение тайм-аута setNetworkTimeout истекло, драйвер JDBC отмечает соединение закрытым и освобождает любые ресурсы, удерживаемые соединением.
Этот метод проверяет, есть ли объект SQLPermission, прежде чем позволить этому методу продолжить работу. Если существует SecurityManager и его метод checkPermission отклоняет вызов setNetworkTimeout, этот метод генерирует исключение java.lang.SecurityException.
- Returns:
- таймут сети
-
setNetworkTimeout
public void setNetworkTimeout(java.lang.Integer networkTimeout)Указывает таймут сети.- Parameters:
networkTimeout- таймаут- See Also:
getNetworkTimeout()
-
getNetworkTimeoutThreads
public java.lang.Integer getNetworkTimeoutThreads()Указывает кол-во потоков/тредов для сервиса network-timeout- Returns:
- кол-во тредов, по умолч 1
-
setNetworkTimeoutThreads
public void setNetworkTimeoutThreads(java.lang.Integer networkTimeoutThreads)Указывает кол-во потоков/тредов для сервиса network-timeout- Parameters:
networkTimeoutThreads- кол-во тредов, по умолч 1
-
getNetworkTimeoutDaemon
public java.lang.Boolean getNetworkTimeoutDaemon()Указывает как запускать сервис network timeout.true (по умолчанию) - Сервис network timeout будет запущен как фоновый поток(потоки)
false - Сервис network timeout будет запущен как обычный поток (тред)
- Returns:
- true - сервис network timeout в фоновом режиме
-
setNetworkTimeoutDaemon
public void setNetworkTimeoutDaemon(java.lang.Boolean networkTimeoutDaemon)Указывает как запускать сервис network timeout.- Parameters:
networkTimeoutDaemon- true (по умолчанию) - Сервис network timeout будет запущен как фоновый поток(потоки)
false - Сервис network timeout будет запущен как обычный поток (тред)
-
getNetworkTimeoutThreadName
public java.lang.String getNetworkTimeoutThreadName() -
setNetworkTimeoutThreadName
public void setNetworkTimeoutThreadName(java.lang.String networkTimeoutThreadName) -
getNetworkTimeoutService
public static java.util.concurrent.ExecutorService getNetworkTimeoutService() -
getNetworkTimeoutStatic
public java.lang.Boolean getNetworkTimeoutStatic()Использовать сервис проверки network timeout как статичный (синглетон) демонЭто поведение по умолчанию
- Returns:
- true - использовать статичный (синглетон) демон network timeout
-
setNetworkTimeoutStatic
public void setNetworkTimeoutStatic(java.lang.Boolean networkTimeoutStatic)Использовать сервис проверки network timeout как статичный (синглетон) демон- Parameters:
networkTimeoutStatic- true - использовать статичный (синглетон) демон network timeout
-
configureConnection
protected void configureConnection(java.sql.Connection conn) -
asXml
public java.lang.String asXml() -
write
public void write(javax.xml.stream.XMLStreamWriter xwr) -
write
public void write(xyz.cofe.xml.FormatXMLWriter xwr) -
write
public void write(org.w3c.dom.Element el) -
writeXml
public void writeXml(java.io.Writer writer) -
writeXml
public void writeXml(java.io.OutputStream writer) -
writeXml
public void writeXml(java.io.OutputStream writer, java.nio.charset.Charset cs) -
writeXml
public void writeXml(java.io.File writer, java.nio.charset.Charset cs) -
writeXml
public void writeXml(java.io.File writer) -
writeXml
public void writeXml(java.nio.file.Path writer, java.nio.charset.Charset cs) -
writeXml
public void writeXml(java.nio.file.Path writer) -
writeXml
public void writeXml(xyz.cofe.io.fs.File writer, java.nio.charset.Charset cs) -
writeXml
public void writeXml(xyz.cofe.io.fs.File writer) -
read
-
readXml
-
readXml
-
readXml
-
readXml
-
readXml
-
readXml
-
readXml
-
readXml
-
readXml
-
readXml
-
readXml
-
loadXml
public void loadXml(org.w3c.dom.Node xml)
-