![]() | ![]() ![]() ![]() ![]() |
Содержание
Перевод: Woodoo
Автор:Себастьян Алборини () <sebastien.alborini@m4x.org>
На этой странице описывается как запускать примеры из книги Ричарда Монсона-Хефеля "Применение JavaBean" (Enterprise JavaBeans), 2ое издание (Глава 4) в JBoss.
Вы можете загрузить примеры (zip файл) с сайта O'Reilly. Предположительно, Вы распаковали этот файл и работаете в директории chapter4/EJB11.
Эти примеры следует немного исправить для запуска с JBoss. Вы можете загрузить измененные версии здесь, но я рекомендую проследовать этим инструкциям, которые рассказывают точно, что должно быть исправлено.
Библиотеки JBoss нужно будет скомпилировать и запустить примеры, так у Вас установится переменная окружения JBOSS_HOME в Вашей установке JBoss. Например:
Скомпилируйте и разверните бины (beans).
Бины почти подходят для JBoss, разница присутствует только в CabinBean от TravelAgentBean: бин должен рассматриваться в пространстве имен java:comp/env. Отредактируйте com/titan/travelagent/TravelAgentBean.java, и замените
Object obj = jndiContext.lookup("ejb/CabinHome");
на
Object obj = jndiContext.lookup("java:comp/env/ejb/CabinHome");
Это ejb-ссылка от TravelAgentBean (в travelagent.jar) в CabinBean (в
cabin.jar), находящемся в другом приложении (другой ejb-jar файл). В
случае внешней ссылки Вы должны предоставить полное jndi-имя CabinBean
в jboss.xml для TravelAgentBean: создайте и отредактируйте файл com/titan/travelagent/jboss.xml
<?xml version="1.0"?>
<jboss>
<enterprise-beans>
<session>
<ejb-name>TravelAgentBean</ejb-name>
<ejb-ref>
<ejb-ref-name>ejb/CabinHome</ejb-ref-name>
<jndi-name>CabinBean</jndi-name>
</ejb-ref>
</session>
</enterprise-beans>
</jboss>
В ejb-jar.xml ничего изменять не надо. Теперь Вы можете использовать скрипт jbossMakeIt.sh чтобы скомпилировать и развернуть:
Клиенты из примеров используют такие же ссылки на имена java:comp/env, которые не поддерживаются JBoss для клиентов. Вы должны изменить следующее: (CabinBean это имя jndi под которым развернется Cabin Bean, смотрите jndi) в com/titan/cabin/Client_1.java заменить:
Object obj = jndiContext.lookup("java:comp/env/ejb/CabinHome");
этим:
Object obj = jndiContext.lookup("CabinBean");
в com/titan/cabin/Client_2.java replace
Object obj = jndiContext.lookup("ejb/CabinHome");
этим:
Object obj = jndiContext.lookup("CabinBean");
в com/titan/travelagent/Client_1.java заменить:
Object obj = jndiContext.lookup("ejb/TravelAgentHome");
этим
Object obj = jndiContext.lookup("TravelAgentBean");
Теперь Вы можете использовать jBossMakeClients.sh для компиляции:
Мы не используем инструмент запуска RI от Sun, так RunIt.sh не хочет работать. Вместо этого, мы создаем следующий скрипт: jBossRunClient.sh. Этот файл включает все библиотеки jBoss, которые нужны в классах.
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=localhost
java.naming.factory.url.pkgs=org.jboss.naming;
Теперь Вы можете запускать клиентов. Скрипт принимает имена клиентов
в качестве аргумента, попробуйте:
ЗАМЕЧАНИЕ: когда клиенты будут запущены, после запуска метода EJBHome.create(), появится DuplicateKeyException. я рекомендую Вам отключить лог отладки для этих примеров. Отредактируйте $JBOSS_HOME/conf/jboss.conf, в разделе ConsoleLogging, установите первый аргумент (ARG) в "Error".
![]() | ![]() ![]() ![]() ![]() |
| Наши друзья |