powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / [JDBC,ORACLE] получение OCISvcCtxHandle из oci connection
1 сообщений из 1, страница 1 из 1
[JDBC,ORACLE] получение OCISvcCtxHandle из oci connection
    #33267440
Denis_TST
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может кому нибудь пригодиться:

Hашел способ как получить OCISvcCtxHandle из jdbc (если коннектимся через oci драйвер).

OCISvcCtxHandle это фактически hanlde открытой сессии, его
можно передать в native dll(с помощью JNI) и обеспечить работу legacy
кода в одной транзакци с java кодом .

Например к SvcCtx умеет подсоединяться TOracleSession из
библиотеки DOA для Delphi . Для C++ можно использовать OCI функции.

package pool.test;

import oracle.jdbc.oci.OracleOCIConnection;
import oracle.jdbc.pool.OracleOCIConnectionPool;

import java.sql.Connection;
import java.sql.SQLException;

public class TestPool {
public static void main(String[] args) throws SQLException {
// вариант получения коннетов через пул
// можно и без пула, как обычно через connectionFactory
OracleOCIConnectionPool ociConnectionPool = new OracleOCIConnectionPool();
ociConnectionPool.setUser("scott");
ociConnectionPool.setPassword("tiger");

ociConnectionPool.setURL("jdbc:oracle:oci:@class.asulr.tst.mps"); // tns базы

java.util.Properties poolProps = new java.util.Properties();
poolProps.put(OracleOCIConnectionPool.CONNPOOL_MIN_LIMIT, "2");
poolProps.put(OracleOCIConnectionPool.CONNPOOL_MAX_LIMIT, "5");
poolProps.put(OracleOCIConnectionPool.CONNPOOL_INCREMENT, "2");
poolProps.put(OracleOCIConnectionPool.CONNPOOL_TIMEOUT, "10");
poolProps.put(OracleOCIConnectionPool.CONNPOOL_NOWAIT, "true");
ociConnectionPool.setPoolConfig(poolProps);
//OCIDBAccess ocidbAccess = (OCIDBAccess) conn1.db_access;
//
Connection connection = ociConnectionPool.getConnection();
if (connection instanceof OracleOCIConnection) {
OracleOCIConnection conn1 = (OracleOCIConnection) connection;
java.util.Properties dbAccessProperties = new java.util.Properties();
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Вот ОНО!!!!!!!!!!!!!!!!!!!!!!
dbAccessProperties = conn1.getDBAccessProperties();

//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// передаем OCISvcCtxHandle в Native код
// dbAccessProperties.get("OCISvcCtxHandle");
System.out.println("dbAccessProperties= " + dbAccessProperties.toString());

} else {
//

}
// закрываем коннект
connection.close();
}
}
output:
dbAccessProperties= {ClientCharSet=871, OCISvcCtxHandle=51399952, OCIErrHandle=51400124, OCIEnvHandle=51232528}
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / [JDBC,ORACLE] получение OCISvcCtxHandle из oci connection
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]