Клиент EJB

 
0
 
Java
ava
kaa | 13.12.2008, 22:20
Всем привет!

Начал тут почитывать спецификацию EJB 3.0 и появилось у меня несколько вопросов по следующему кусочку документации, в котором описывается как из клиента добраться до бина (может сказывается мой плохой английский?):


A client can obtain a session bean’s business interface through dependency injection or lookup in the
JNDI namespace.
For example, the business interface Cart for the CartBean session bean may be obtained using
dependency injection as follows:
@EJB Cart cart;
The Cart business interface could also be looked up using JNDI as shown in the following code segment
using the lookup method provided by the EJBContext interface. In this example, a reference to
the client bean’s SessionContext object is obtained through dependency injection:
@Resource SessionContext ctx;
...
Cart cart = (Cart)ctx.lookup(“cart”);


Как я понял, здесь говорится что вот этот код:


@EJB Cart cart;
@Resource SessionContext ctx;
...
Cart cart = (Cart)ctx.lookup(“cart”);


Должен находится в клинете.


Собственно вопрос в таком случае:
Зачем вообще нужна ссылка зависимости (как я понял) @EJB Cart cart на клиенте и как с такой конструкцией будет работать например апплет, если для работы с EJB нужн пакет javax.ejb.

И зачем SessionContext нужно определять как ресурс на клиенте?

Всем заранее спасибо smile
Ответы (4)
ava
powerOn | 13.12.2008, 23:00 #
В данном случае "клиент" это тоже контейнеро-управляемая сущность, которая работает на одном сервере в одном контексте приложения. Это не stand-alone клиент (допустим свинговый). Например EJB1 выступает клиентом для EJB2 и может получить ссылку на EJB2 через dependency injection. Если задача использовать EJB как сервис для stand-alone, то:
1) Можно оформить бин как веб-сервис.
2) Можно дернуть его через RMI. Некоторый материал об этом можно почитать тут: Glassfish EJB FAQ
ava
kaa | 13.12.2008, 23:24 #
powerOn,

Спасибо ОГРОМНОЕ, сегодня весь день гуглил как раз на эту тему (стандалон) - один порожняк.

Добавлено позднее:
powerOn,

А всё же некоторый вопрос остался: подскажите, зачем контекст определять как ресурс? Ведь ресурс нужен что бы его дёргать из откуда-нибудь, а мы то с ним в данном коде работаем "на месте".
ava
powerOn | 14.12.2008, 00:35 #
Цитата (kaa @ 13.12.2008, 23:24 findReferencedText)
А всё же некоторый вопрос остался: подскажите, зачем контекст определять как ресурс? Ведь ресурс нужен что бы его дёргать из откуда-нибудь, а мы то с ним в данном коде работаем "на месте".


Не совсем понял вопрос.
Аннотация ресурс говорит EJB-контейнеру что бы он инжектировал в это поле значение. До SessionContext можно достучаться и через JNDI, но в данном случае за нас это сделает контейнер. Если в бине вы не используете SessionContext, то можете его и не определять, ошибки от этого не произойдет.
ava
kaa | 14.12.2008, 20:57 #
powerOn,

Спасибо!
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
  powerOn   kaa
advanced
Отправить