Oracle server-side Java -- сохранение контекста между вызовами методов.

MasterZiv
Дата: 12.12.2012 14:25:11
Hi all!
Нужно из ORACLE стучаться наружу во внешний мир.
Предполагается для этого использовать Java (остальные возможности пока не интересуют).
Для этих нужд естественно хочется установить соединение с внешним сервером один раз,
потом что-то ему посылать, посылать и посылать. Соединение нужно где-то сохранять.
Вот в этом и вопрос -- где.

Как я понял, нестатические методы Java из PL/SQL вызывать нельзя. И в PL/SQL сохранить
ссылку на Java-объект тоже нельзя. Видимо, можно сохранять данные в статических полях
Java-классов. Но тут возникает вопрос -- какова архитектура Java-машины (или машин)
в Oracle ? Как они предоставляются сессиям Oracle-а ? Одна на всех? Каждой сессии
своя VM ? Как-то ещё ?
Где можно было бы об этом почитать ?
-2-
Дата: 12.12.2012 14:40:55
MasterZiv,

в каждой сессии свои объекты. статика в версиях, кажется, до 10.2 сохраняется только на уровне вызова с клиента и внешние соединения терялись. динамику можно предохранить от gc положив ссылки в статику.
от версии также зависят баги и свистопляс shared-подключений.
японцкие щи
Дата: 12.12.2012 14:41:05
MasterZiv
Hi all!
Нужно из ORACLE стучаться наружу во внешний мир.
Предполагается для этого использовать Java (остальные возможности пока не интересуют).
Для этих нужд естественно хочется установить соединение с внешним сервером один раз,
потом что-то ему посылать, посылать и посылать. Соединение нужно где-то сохранять.
Вот в этом и вопрос -- где.

Как я понял, нестатические методы Java из PL/SQL вызывать нельзя. И в PL/SQL сохранить
ссылку на Java-объект тоже нельзя. Видимо, можно сохранять данные в статических полях
Java-классов. Но тут возникает вопрос -- какова архитектура Java-машины (или машин)
в Oracle ? Как они предоставляются сессиям Oracle-а ? Одна на всех? Каждой сессии
своя VM ? Как-то ещё ?
Где можно было бы об этом почитать ?


Всегда нравится наблюдать процесс натягивания презерватива на глобус. Зачем совать это в оракл?
MasterZiv
Дата: 12.12.2012 14:56:08
японцкие щи

Всегда нравится наблюдать процесс натягивания презерватива на глобус. Зачем совать это в оракл?


Как бы ход мыслей правильный и ясный. Я бы тоже так мыслил.
Но обстоятельства таковы, что это -- DB-centric система, тут уж ничего не
поделать. Нет другого места, куда это можно было бы вставить. Логика в БД
на PL/SQL. Выковыривать её оттуда сложно. Я бы и выковырял, да не я один
всё решаю. Да и дорого.
Так что если презерватив не порвётся, то глобус будет вполне себе нормально функционировать.
японцкие щи
Дата: 12.12.2012 15:52:24
MasterZiv
Как бы ход мыслей правильный и ясный. Я бы тоже так мыслил.
Но обстоятельства таковы, что это -- DB-centric система, тут уж ничего не
поделать. Нет другого места, куда это можно было бы вставить. Логика в БД
на PL/SQL. Выковыривать её оттуда сложно. Я бы и выковырял, да не я один
всё решаю. Да и дорого.


Я очень даже за, когда по делу тяжеловесная логика качающаяса обработки данных частично запихивается в PL/SQL там ей и место. Но смутило как раз, что

MasterZiv
Нужно из ORACLE стучаться наружу во внешний мир.
Предполагается для этого использовать Java (остальные возможности пока не интересуют).


Почему бы не использовать Java вне Oracle? Стучаться куда надо, получать данные, обрабатывать и записывать в Oracle.