Сохранение объекта DCOM живым с Java-сервера при вызове REST - PullRequest
0 голосов
/ 06 февраля 2009

Я реализую REST API для моего Java-сервера. Одним из ресурсов, полученных через API, является создание объекта DCOM C ++ и отображение его значений. Я использую мост Java-COM - J-Integra.

Проблема в том, что мне нужно поддерживать этот объект DCOM живым для последующих вызовов REST, но объект жив, пока его ссылка на Java есть - до тех пор, пока не истечет максимум сеанс REST.

Как я могу сохранить объект DCOM живым, пока он мне больше не нужен? Единственное, о чем я думал до сих пор, - это использование EJB, который затем будет инициализировать объект DCOM и хранить его ссылку. Я не эксперт по EJB, но я думаю, что а) это решение с избыточным количеством б) EJB может кэшироваться (пассивироваться?) Сервером, теряя при этом ссылку на DCOM.

Есть предложения?

Спасибо Инбар

Ответы [ 2 ]

2 голосов
/ 06 февраля 2009

Как мне сохранить объект DCOM живым? пока мне это больше не нужно?

Полагаю, это зависит от того, что значит больше не нуждаться в объекте. Откуда ты знаешь, когда с этим покончено?

Эти экземпляры DCOM применимы для всего сайта или только для конкретного пользователя? Если для всего сайта, возможно ли для ресурса, который получает эти запросы, сохранить ссылку на этот объект? Если нет, возможно, вам нужен еще один слой для управления этими объектами.

Какие рамки вы используете для REST?


Вот еще немного информации: объект DCOM выполняет набор задач асинхронно. Так, основной вызов к нему с Java сервер возвращает imidietialy, в то время как Объект DCOM продолжает выполнение. Unfortuantley, это довольно старый объект, и я не могу контролировать его реализация или интерфейс - я не могу изменить это. Объект DCOM не даже есть события COM. Единственный способ знать, если это сделано или нет, это опрос это с помощью определенного метода (GetStatus). Я не хочу опрашивать из моей реализации REST API, а это сломает концепцию ОТДЫХА. я не знаю заранее как долго это займет для объекта DCOM бежать, поэтому я не могу держать сеанс жив так долго.

Таким образом, вы хотите использовать вызов REST для запуска операции, но вам все равно, когда она закончится или каков ее статус? Если да, можете ли вы запустить поток, который запустит операцию DCOM, опрашивать состояние до тех пор, пока операция не будет считаться завершенной, а затем уничтожить операцию DCOM?

0 голосов
/ 16 февраля 2009

Поместите компонент, зарегистрированный в COM +, и он останется в живых. Проверьте больше информации по этой ссылке .

...