Содержание
Перевод: 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".
Наши друзья |