• Главная
  • Карта сайта
Не найдено

Занурення в EJB Web-додатки з Geronimo

  1. огляд технології
  2. план розгортання
  3. Установка Maven 1.0.2
  4. компілювання Geronimo
  5. Установка XDoclet 1.2.3
  6. успішна компоновка
  7. отладочная консоль
  8. Малюнок 1. Geronimo DebugConsole
  9. Малюнок 2. Приклад програми Geronimo Phonebook, скомпонований з використанням Struts 1.2.7
  10. Малюнок 3. Схема каталогу файлів прикладу додатки
  11. Лістинг 1. EditPhoneNumberPage.jsp
  12. Лістинг 2. Тег класу SaveEntry.java JavaDoc.
  13. Лістинг 3. Фрагмент методу execute () дії ListNumbers.
  14. Лістинг 4. Display Tag в ListPhoneNumbersPage.jsp
  15. Лістинг 5. Метод listEntries () класу PhoneBookSessionBean.java
  16. Лістинг 6. Мета start maven.xml.
  17. Лістинг 7. openejb-jar.xml
  18. Лістинг 8. geronimo-jetty.xml
  19. резюме
  20. Ресурси для скачування

Спільне застосування Maven, Struts і XDoclet

огляд технології

Перед вивченням прикладу програми ви, можливо, захочете освіжити ваші знання, більш пильно розглянувши три технології, які будуть використовуватися для створення і розгортання програми. (Більш детально про ці технології можна дізнатися з джерел, перерахованих в розділі " ресурси ".)

Maven - це програма, призначена для створення Java-додатків, від вихідного коду до пакетування для розгортання на Web-сайтів. За допомогою системи Maven був створений сервер додатків Geronimo. У своїй основі Гнучке середовище Maven дає можливість створювати модулі, що виконують кілька дій, необхідних при створенні програмних компонентів. По відношенню до Apache Ant (інструменту компонування Java-програм) дії Maven можна порівняти з результатами, що генеруються командою UNIX make. Механізм сценаріїв Maven також дає можливість автоматично розгортати ваше додаток на виробничих серверах Geronimo. У цій статті розглянуто, як можна використовувати Maven для пакетування вашого вихідного коду в готове корпоративне додаток Java 2 Platform, Enterprise Edition (J2EE).

Struts - це робоче середовище Web-додатків, заснована на архітектурі Model 2 (дивіться розділ " ресурси ", Де наведено посилання на хороший опис архітектури JSP Model 2). Ця гібридна архітектура відокремлює бізнес-логіку і логіку відображення настільки, наскільки це можливо. Struts виконує це шляхом виділення бізнес-логіки в чисті Java-класи, які маніпулюють вашими даними, а також шляхом надання багатою бібліотеки тегів, яка може бути використана для відображення ваших даних при створенні JavaServer Pages (JSP). (Серед численних доступних засобів розробки Web-додатків, багато з яких дуже вітаю, наприклад Tapestry і JavaServer Fa ces, Struts продовжує залишатися однією з моїх улюблених технологій.)

XDoclet бере свій початок від старого кошти документування Javadoc. Розробники XDoclet спочатку використовували Javadoc новим способом, застосовуючи спеціалізовані коментарі для генерування моделі, яку згодом можна було скомпілювати в вихідний код. Потім вони почали використовувати замість Javadoc свій власний варіант, названий Xjavadoc. Однак використання тегів в Javadoc-коментарі в вашому вихідному коді для створення автоматично генерується вихідного коду досі залишилась незмінною з часів XDoclet. Написання вихідного коду і файлів дескриптора розгортання для J2EE-додатків може бути трудомістким процесом. Приблизно для кожної сотні рядків вихідного Java-коду доведеться згенерувати принаймні в три рази більше підтримує коду J2EE-дескриптора, щоб завершити роботу. Для зменшення значної частини головного болю при розробці багаторівневого корпоративного програми на допомогу приходить XDoclet, який забезпечує створення тегів для коду та генерування коду таким чином, що дескриптори розгортання генеруються головним чином автоматично. При цьому істотно ховається складність J2EE, але ви повинні стежити за генеруються кодом, оскільки буде необхідно його читати в випадках, коли щось йде не так, як очікувалося.

план розгортання

Як згадувалося у вступній частині статті, група розробників Geronimo для створення готового сервера додатків використовувала Maven. Ви можете використовувати міць програми компонування Maven для компілювання вихідного коду вашої програми, генерування коду (за допомогою XDoclet), об'єднання модулів програми та розгортання програми на виробничих серверах Geronimo.

Процес починається з трьох файлів. Перший, project.xml, визначає так звану Project Object Model (POM) (об'єктна модель проекту). У ньому наведено відноситься до вашого додатком інформація (включаючи назву програми) про те, хто бере участь в його створенні, номер версії, необхідні для побудови програми залежно та загальні положення про те, як компонувати додаток. У даній статті ви в основному будете мати справу з розділом залежностей POM. (Дивіться в розділі " ресурси "Посилання на повний опис POM-файлу.)

Maven використовує розділ залежностей файлу project.xml для завантаження компонентів, необхідних для компонування додатки, з призначених репозиторіїв по мережі Інтернет. Один з таких сховищ, iBiblio (посилання наведена в розділі " ресурси "), Містить сотні Java-бібліотек з відритим вихідним кодом і допоміжних файлів, а також POM-інформацію для цих бібліотек. У ньому міститься велика кількість інформації для загального спрощення життя Java-розробників під час створення додатків. Розділ залежностей файлу project.xml для додатка телефонної книги складається з 23 залежностей, половина з яких є .jar-файлами, що підтримують Struts і бібліотеку тегів DisplayTag. Решта залежності в основному потрібні для XDoclet. Без Maven кожну з цих залежностей потрібно було б пов'язати з додатком.

Maven просто завантажує всі залежні компоненти при першому компіляції програми. Наступні процеси компілювання працюють з локальним репозиторієм Maven (локальний кеш завантажених компонентів зазвичай знаходиться в каталозі .maven вашого каталогу $ HOME).

Установка Maven 1.0.2

Наш приклад програми вимагає деякої початкової настройки Maven для того, щоб все працювало коректно. Перш за все вам необхідно встановити Maven 1.0.2 (Посилання на Web-сайт Maven приведена в розділі " ресурси "). Після завершення установки введіть maven у вашій командному рядку. Ви побачите приблизно наступну інформацію:

E: \ Documents and Settings \ Neal \ My Documents \ eclipse \ workspace \ Phonebook> maven __ __ | \ / | __ _Apache__ ___ | | \ / | / _` \ V / -_) '\ ~ intelligent projects ~ | _ | | _ \ __, _ | \ _ / \ ___ | _ || _ | v. 1.0.2

компілювання Geronimo

Потім скомпілюйте Geronimo з вихідного коду, слідуючи інструкціям, які перебувають в Wiki (посилання наведена в розділі " ресурси "). Після успішної компонування компоненти Geronimo будуть перебувати у вашому локальному сховищі. Вони необхідні для створення прикладу програми. Після компіляції Geronimo знайдіть і встановіть файл geronimo-deployment-plugin-1.0-SNAPSHOT.jar в ваш каталог $ MAVEN_HOME / plugins; в іншому Якщо ви бачите повідомлення, аналогічне наступного:

Tag library requested that is not present: 'geronimo: deploy' in plugin: 'null'

Установка XDoclet 1.2.3

Нарешті, встановіть XDoclet 1.2.3 в ваше сховище Maven. Якщо при компонуванні прикладу програма, відображається повідомлення Maven про те, що неможливо знайти деякі з компонентів XDoclet 1.2.3, ви повинні завантажити XDoclet 1.2.3 (пакет lib) і розпакувати .jar-файли в вашому локальному репозиторії Maven - .maven / repository / xdoclet / jars (Посилання на Web-сайт XDoclet приведена в розділі " ресурси "). Якщо ви є користувачем Windows, то повинні знайти цей каталог Maven в вашому каталозі C: \ Documents and Settings \ username. Якщо ви використовуєте UNIX, то повинні знайти цей каталог у вашому" домашньому "каталозі. Необхідно також встановити модуль XDoclet Maven, помістивши файл maven-xdoclet-plugin-1.2.3.jar в ваш каталог $ MAVEN_HOME / plugins.

успішна компоновка

Після завершення всіх цих попередніх дій процес компонування повинен проходити гладко. Звичайно ж, ви можете зробити пробну компоновку перед виконанням описаних вище дій і визначити, які файли Maven не може знайти, і встановити тільки ці файли. Ви можете спробувати запустити Maven в самому верхньому каталозі прикладу програми. У перший раз буде завантажено багато компонентів, а в кінці процесу ви побачите повідомлення BUILD SUCCESSFUL.

Для кращого розуміння роботи Maven погляньте на файли maven.xml і project.properties. Maven орієнтований на цілі. Він читає файл maven.xml і намагається задовольнити всі цілі, зазначені в атрибуті default елемента project самого верхнього рівня. В даному випадку він намагається задовольнити всі, що зазначено в цілі deploy в якості попередніх вимог; а саме, він спробує скомпонувати .ear-файл, а потім зупинити і запустити додаток. Розгортання додатки здійснює згадуваний вище модуль Geronimo Deployment Maven. Природно, повинен бути запущений ваш сервер Geronimо, тому що в іншому випадку ваша компоновка закінчиться невдало, і відобразиться приблизно таке повідомлення:

Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: 10.0.0.7; nested exception is: java.net.ConnectException: Connection refused: connect]

Якщо ви отримаєте це повідомлення, запустіть ваш сервер Geronimo, використовуючи наступну команду:

E: \ geronimo-snapshot> java -jar bin \ server.jar org / apache / geronimo / DebugConsole org / apache / geronimo / RuntimeDeployer

Ця команда вказує Geronimo запустити сервер, конфігурацію додатка DebugConsole і конфігурацію RuntimeDeployer.

отладочная консоль

DebugConsole (показана на малюнку 1 ) Являє собою необов'язковий компонент, що надає вам можливість спостерігати за тим, які завдання виконуються на сервері Geronimo, використовуючи невелику Web-додаток (дивіться інструментальну програму на http: // localhost: 8080 / debug-tool).

Малюнок 1. Geronimo DebugConsole

Приклад головної сторінки

Після компонування прикладу програми ви можете відвідати його головну сторінку, на якій ви побачите щось схоже на зображене на малюнку 2 .

Малюнок 2. Приклад програми Geronimo Phonebook, скомпонований з використанням Struts 1.2.7

Після компонування програми: заглянемо всередину

Після того, як ви успішно скомпонували додаток і побачили міць і простоту використання Maven, пора поглянути на схему файлів і деякий код, які були необхідні для всього цього процесу. Спочатку буде розглянуто рівень Web-додатки, потім EJB-рівень. Потім будуть розглянуті сполучні компоненти - плани розгортання і файли конфігурації, які з'єднуються всі разом і уможливлюють всю роботу. Зверніться до дерева каталогів файлів, показаному на малюнку 3 , Як посилання на місце, де можна знайти ці файли.

Малюнок 3. Схема каталогу файлів прикладу додатки

Рівень Web-додатки

Web-додаток створюється за допомогою JSP і середовища розробки Struts 1.2.7. В каталозі src / webapp ви знайдете файли, які містять Web-інтерфейс прикладу програми.

Цей додаток складається з двох основних видів: список телефонних номерів і екрану редагування телефонного номера. Присутні всі необхідні для редагування простих записів бази даних функції (додавання, видалення, редагування, оновлення та список). Каталог src / java / org / acme / phonebook / struts містить кілька Struts-дій, які виконують ці необхідні функції, наприклад, створення нових записів, видалення записів, перерахування записів і редагування існуючих записів.

Для полегшення створення даного зовнішнього вигляду Web-додатки була використана система шаблонів Struts Tiles. Зовнішній вигляд програми визначає файл site-template.jsp, розташований в каталозі webapp / pages.

Будуть розглянуті дві основні JSP-сторінки - EditPhoneNumberPage.jsp і ListPhoneNumbersPage.jsp. Кожна з цих сторінок і їх функція описані в лістингу 1 .

Лістинг 1. EditPhoneNumberPage.jsp
<% @ Page language = "java"%> <% @ taglib uri = "/ tags / struts-bean" prefix = "bean"%> <% @ taglib uri = "/ tags / struts-html" prefix = "html "%> <% @ taglib uri =" / tags / struts-tiles "prefix =" tiles "%> <tiles: insert page =" / pages / site-template.jsp "flush =" true "> <tiles: put name = "content" type = "string"> <hr> <h1> <bean: message key = "h1.EditPhoneNumberPage" /> </ h1> <hr> <h2> <bean: write name = "phoneBookEntryForm" property = "action" /> </ h2> <html: form action = "/ pages / SaveEntry.do"> <table> <tr> <td> <bean: message key = "prompt.EditPhoneNumberPage.name" /> < / td> <td> <html: text property = "name" size = "40" /> </ td> </ tr> <tr> <td> <bean: message key = "prompt.EditPhoneNumberPage.phoneNumber" / > </ td> <td> <html: text property = "phoneNumber" size = "40" /> </ td> </ tr> <html: hidden property = "action" /> <html: hidden property = " pk "/> <tr> <td> </ td> <td> <html: submit> <bean: message key =" button.submit "/> </ html: submit> <html: reset> <bean: message key = "button.reset" /> </ html: reset> </ td> </ tr> </ table> </ html: form> </ tiles: put> </ tile s: insert>

В лістингу 1 перші кілька рядків налаштовують бібліотеки тегів, які будуть активні для всієї сторінки. Вони також визначають область контенту шаблону сайту в якості місця, в якому буде відображатися вміст сторінки. Даний приклад відображає просту, засновану на Struts форму введення з деякими тегами <bean: message> для показу рядків з файлу ресурсів (розташованого в webapp / WEB-INF / classes / resources / application.properties). Форма передає ім'я і номер телефону в Struts-дію SaveEntry.do.

Якщо ви подивіться на тег класу Javadoc файлу з вихідним кодом SaveEntry.java, наведений в лістингу 2 , То побачите перший приклад тегів XDoclet в цьому додатку. Ці теги визначають все властивості, необхідні для генерування дескриптора розгортання Struts, який має назву struts-config.xml.

Лістинг 2. Тег класу SaveEntry.java JavaDoc.
/ ** * Save an Entry * * @ struts.action * name = "phoneBookEntryForm" * path = "/ pages / SaveEntry" * scope = "request" * input = "/pages/EditPhoneNumberPage.jsp" * unknown = "false "* validate =" false "* @ struts.action-forward * name =" success "* path =" /pages/ListNumbers.do "* redirect =" true "* /

У двох словах, цей приклад коду демонструє, що ця дія, зване / pages / SaveEntry, бере вихідні дані з EditPhoneNumberPage.jsp і використовує phoneBookEntryForm для маршаллізаціі введених користувачем даних в Java-код на сторінці. Після завершення дії відбувається перенаправлення на дію / pages / ListNumbers для відображення списку номерів.

Дія ListNumbers, яке ви можете знайти в файлі ListNumbers.java, виконує виклик сесійного EJB-компонента PhoneBookSession, використовуючи код, наведений в лістингу 3 .

Лістинг 3. Фрагмент методу execute () дії ListNumbers.
PhoneBookSessionLocal session = PhoneBookSessionUtil.getLocalHome (). Create (); // Виклик методу Collection c = session.listEntries (); // Помістити отриману інформацію в атрибути запиту // для того, щоб сторінка змогла її відобразити. request.setAttribute ( "numbers", c);

В лістингу 3 ви можете побачити використання класу PhoneBookSessionUtil. Це клас, згенерований XDoclet, який допомагає отриманню "домашніх" інтерфейсів об'єкта PhoneBookSession. Створюється сесія і викликається його метод listEntries (), який повертає набір записів телефонної книги. Потім в цьому наборі встановлюється атрибут numbers. Це викликає приміщення телефонних номерів в пойменованому розташування, які використовувана для відображення записів JSP-сторінка може отримати і заповнити список, як показано в лістингу 4 .

Лістинг 4. Display Tag в ListPhoneNumbersPage.jsp
<Display: table name = "numbers" requestURI = "ListNumbers.do" scope = "request" pagesize = "5" id = "row_obj"> <display: column property = "name" title = "Name" /> <display : column property = "phoneNumber" title = "Phone" /> <display: column title = "Actions"> <logic: present name = "row_obj"> <html: link action = "/ pages / EditEntry" paramId = "id "paramName =" row_obj "paramProperty =" name "> Edit </ html: link> <html: link action =" / pages / DeleteEntry "paramId =" id "paramName =" row_obj "paramProperty =" name "onclick =" return confirmDelete ( 'Number') "> Delete </ html: link> </ logic: present> </ display: column> ... </ display: table>

EJB-рівень

У цьому додатку є два EJB-класу. Перший клас, який використовує Container-Managed Persistence (CMP) для забезпечення об'єктного доступу до таблиці бази даних, називається PhoneBookEntryBean. Другим класом є не зберігає стану сесійну компонент, що забезпечує бізнес-логіку. Часто є бажаним управління CMP-компонентами через не зберігається стану сесійну компонент, оскільки сесійні компоненти можуть бути налаштовані на підтримку транзакцій для можливості скасування змін бази даних в разі помилки. Крім того, виконання всіх CMP-операцій в сесійній компоненті захищає Web-додаток від необхідності знати деталі реалізації рівня доступу до бази даних. Тому, якщо відбудеться заміна цього рівня іншою технологією (наприклад, використання персистентного рівня Hibernate), код Web-додатки змінювати не доведеться.

XDoclet інтенсивно використовується на EJB-рівні для генерування дескриптора розгортання. Важливо зменшити зусилля при створенні програми такого типу. Завантажте вихідний код і подивіться на коментарі Javadoc для обох класів PhoneBookEntryBean.java і PhoneBookSessionBean.java, щоб побачити безліч XDoclet-тегів, які використовуються для визначення EJB-класів.

Для генерування методу в не зберігається стану сесійній компоненті досить додати XDoclet-тег, званий @ ejb.interface-method, з властивістю view-type, що встановлюються в local, remote або both. Це вказує XDoclet генерувати відповідні методи в локальному інтерфейсі, віддаленому інтерфейсі або обох інтерфейсах для сесійного компонента. Ви можете також управляти типом транзакції. перегляньте лістинг 5 , Який є прикладом одного з інтерфейсних методів для виведення списку записів телефонної книги та повернення їх значень в об'єктному поданні.

Лістинг 5. Метод listEntries () класу PhoneBookSessionBean.java
/ ** * Виведення списку всіх записів телефонної книги. * @Return - набір об'єктів PhoneBookEntryValue. * * @ Ejb.interface-method view-type = "both" * @ ejb.transaction type = "Required" * / public java.util.Collection listEntries () {ArrayList values ​​= new ArrayList (); try {Collection entries = PhoneBookEntryUtil.getLocalHome (). findAll (); Iterator i = entries.iterator (); while (i.hasNext ()) {PhoneBookEntryLocal entry = (PhoneBookEntryLocal) i.next (); values.add (entry.getPhoneBookEntryValue ()); }} Catch (Throwable ex) {ex.printStackTrace (); } Return values; }

сполучний компонент

У моїй першій статті " Три способи підключення бази даних до сервера додатків Geronimo "(DeveloperWorks, червень 2005) детально пояснюється важливість різних типів планів розгортання в Geronimo. Приведення цього маленького додатка в функціональний стан було дуже непростим і вимагало присутності безлічі маленьких налаштувань в плані розгортання, а також взаємодії між тегами XDoclet, що генерується тегами коду і планами розгортання . Розгляд всіх деталей виходить за рамки даної статті. Приклад програми має багато файлів конфігурації і планів розгортання, майже всі з яких знаходяться в підкаталозі src / resources проек а. У наступних розділах коротко описуються важливі деталі цих файлів і показується, де ви повинні будете робити зміни для забезпечення роботи таких програмах.

Підкаталог ear містіть дескриптори розгортання корпоративного програми, файл application.xml и файл geronimo-application.xml. У даного додатка ЦІ файли налаштовані на роботу з коннектором Java Database Connectivity (JDBC). Прочитайте статтю " Три способи підключення бази даних до сервера додатків Geronimo "(DeveloperWorks, червень 2005) для отримання детальної інформації. Файли mysql-plan.xml і tranql-connector-1.0-SNAPSHOT.rar є частиною цієї конфігурації, також як і визначення модулів в обох файлах application.xml і geronimo-application.xml , що вказують коректне налаштування JDBC-коннектора при розгортанні під час виконання.

Файл geronimo-application.xml містить елемент <application>, який має атрибут під назвою configId. Цей елемент важливий для відповідної роботи функції автоматичного розгортання сценарію компонування Maven. Це значення може бути використано в атрибуті id будь-якого тега <deploy: *> в файлі maven.xml, як показано в лістингу 6 .

Лістинг 6. Мета start maven.xml.
<Goal name = "start"> <deploy: distribute uri = "deployer: geronimo: jmx: rmi: // localhost / jndi / rmi: / JMXConnector" username = "system" password = "manager" home = "$ {basedir } "module =" target / $ {pom.artifactId} .ear "/> <deploy: start uri =" deployer: geronimo: jmx: rmi: // localhost / jndi / rmi: / JMXConnector "username =" system "password = "manager" id = "org / acme / PhoneBook" /> </ goal>

В лістингу 6 , Оскільки атрибут configId в файлі geronimo-application.xml встановлений в org / acme / PhoneBook, він повинен бути також значенням атрибутів id в операторах автоматичного розгортання. Команда розробників Geronimo спроектувала для цього зручну функцію автоматичного розгортання. Однак, якщо ви часто виконуєте автоматичне розгортання, перевірте ваші каталоги temp, оскільки вони можуть бути заповнені старими файлами розгортання.

У нашому списку підкаталогів каталогу resources присутній каталог ejb. Усередині підкаталогу META-INF розміщується дескриптор розгортання openejb-jar.xml. Цей файл важливий для установки всіх взаємозв'язків між вашою базою даних і вашими компонентами управління даними. Важливо також зробити невеликі зміни в цьому файлі для гарантії коректності імен Java Naming і Directory Interface (JNDI) для ваших корпоративних компонентів. Цей файл наведено в лістингу 7 .

Лістинг 7. openejb-jar.xml
<? Xml version = "1.0&quot;?> <Openejb-jar xmlns = "http://www.openejb.org/xml/ns/openejb-jar" configId = "org / acme / PhonebookEJB" parentId = "MysqlDatabase"> <cmp-connection-factory> <resource-link> MysqlDataSource </ resource-link> </ cmp-connection-factory> <enterprise-beans> <entity> <ejb-name> PhoneBookEntry </ ejb-name> <local- jndi-name> java: comp / env / ejb / PhoneBookEntryLocal </ local-jndi-name> <table-name> phone </ table-name> <cmp-field-mapping> <cmp-field-name> name </ cmp-field-name> <table-column> name </ table-column> </ cmp-field-mapping> <cmp-field-mapping> <cmp-field-name> phoneNumber </ cmp-field-name> < table-column> phone </ table-column> </ cmp-field-mapping> </ entity> <session> <ejb-name> PhoneBookSession </ ejb-name> <local-jndi-name> java: comp / env / ejb / PhoneBookSessionLocal </ local-jndi-name> </ session> </ enterprise-beans> </ openejb-jar>

Найбільш важливим елементом в лістингу 7 є <cmp-connection-factory> і його субелементів <resource-link>. Ім'я всередині елемента <resource-link> повинна відповідати імені конфігурації JDBC-коннектора, як показано в наступному фрагменті:

... <connectiondefinition-instance> <name> MysqlDataSource </ name> ...

Елементи <local-jndi-name> файлу openejb-jar.xml теж важливі для забезпечення належного функціонування програми. Якщо висвічується помилка, що не знайдені JNDI-імена, ви, можливо, неправильно встановили один з цих елементів.

також в лістингу 7 варто згадати елементи <table-name> і <table-column> для ваших компонентів управління даними, в яких ви повинні вказати відображення стовпців таблиць бази даних на поля компонента управління даними. Погляньте на елементи <cmp-field-mapping> в якості двох прикладів в лістингу 7 .

Останнім підкаталогом каталогу src / resources є merge. Зміст цього каталогу безпосередньо пов'язано зі способом, яким виконується генерування коду в XDoclet. XDoclet отримує інформацію з тегів Javadoc, але він також приєднує інформацію із спеціально названих файлів, що знаходяться всередині каталогу merge. Ці файли містять деяку конфігураційну інформацію для рівня Web-додатки. В каталозі src / resources / merge проекту файл taglibs.xml дозволяє визначення всіх бібліотек тегів, які використовуються в додатку. Існує також багато файлів, що об'єднуються в web.xml і struts-config.xml під час їх генерування XDoclet.

Ще один план розгортання, що знаходиться в файлі src / webapp / WEB-INF / geronimo-jetty.xml, наведено в лістингу 8 .

Лістинг 8. geronimo-jetty.xml
<? Xml version = "1.0&quot;?> <Web-app xmlns = "http://geronimo.apache.org/xml/ns/web/jetty" xmlns: naming = "http://geronimo.apache.org/ xml / ns / naming "configId =" org / acme / PhoneBookWeb "> <context-priority-classloader> true </ context-priority-classloader> </ web-app>

У версії M4 Geronimo план розгортання geronimo-jetty.xml був перейменований в geronimo-web.xml. Тому вам потрібно видалити / jetty в лістингу 8 , Якщо ви використовуєте версію M4. Весь інший код буде працювати так, як описано в статті про Geronimo M4.

У плані розгортання, показаному в лістингу 8 , Присутня одна важлива рядок. Якщо елемент <context-priority-classloader> не встановлено в значення true, Struts-додаток не зможе функціонувати, оскільки існує конфлікт в доступних класах в бібліотеці Geronimo. Установка цього значення в true вказує Geronimo використовувати стандартну зону видимості Web-додатки при пошуку класів. Це означає, що додаток ізольовано від будь-яких інших додатків, що виконуються на сервері. Але це також означає, що всі необхідні додатком класи повинні бути підключені до додатка.

Все що підключаються компоненти, від яких залежить додаток, вказуються в розділі залежностей файлу project.xml і підключаються автоматично програмою Maven.

Останній конфігураційний файл під назвою project.properties, управляє процесом компоновки і розташований в кореневому каталозі проекту. У цьому фалі розміщується інформація, що відноситься до XDoclet, і інформація про те, що включається в war-файли, і навіть властивості, які керують вихідним форматом компілятора Java.

Об'єднання разом всіх цих елементів вимагає тривалого часу, але, сподіваюся, ви зможете використовувати цей приклад програми як покажчик на вашому шляху.

резюме

Ця стаття надає базовий початковий шаблон для більш значних додатків. Додаючи більшу кількість CMP-компонентів і сесійних компонентів для бізнес-логіки, ви можете створити більш цікаве Web-додаток. Я продемонстрував певні переваги системи компоновки Maven, що зменшує складність компіляції і створення вкладеної файлової структури остаточного .ear-файлу. Система генерування коду XDoclet теж використовується для спрощення процесу генерування EJB-компонентів, Struts-компонентів і компонентів Web-додатки, необхідних для компілювання остаточного додатки телефонної книги. Використовуючи цей приклад програми, ви повинні навчитися використовувати вигоди Maven і XDoclet для спрощення процесу розробки ваших корпоративних додатків.

Розробники Geronimo ретельно створювали сам сервер, слідуючи специфікаціям J2EE, і випустили продукт, який чітко розмежовує питання розгортання і конфігурації від деталей, необхідних для розміщення програми в контейнері.

Ресурси для скачування

Схожі тими

  • оригінал статті Dive into EJB Web applications with Geronimo .
  • Стаття Нілу на developerWorks, " Три способи підключення бази даних до сервера додатків Geronimo "(DeveloperWorks, червень 2005).
  • Дізнайтеся більше про архітектуру JSP Model 2 .
  • На Web-сайті Apache розміщена інформація, документація та завантаження для середовищ Maven и Struts .
  • Погляньте на Maven Repository Search .
  • відвідайте офіційний Web-сайт XDoclet .
  • Відвідайте сайт SourceForge для доступу до документації по тегам XDoclet EJB .
  • На сайті Apache знаходяться посилання на повний POM-файл .
  • Geronimo Wiki надає інформацію для компілювання Geronimo з вихідного коду.
  • відвідайте репозиторій iBiblio .
  • відвідайте офіційний Web-сайт Apache Geronimo , Де міститься документація, новини і інформація по завантаженню файлів.
  • Зверніть увагу на цикл з двох статей по Geronimo. Частина 1, " Механізм J2EE 1.4, який міг би бути "(DeveloperWorks, травень 2005) - це введення і огляд концепцій Geronimo, а частина 2," Приборкаєте цього мустанга J2EE 1.4 "(DeveloperWorks, травень 2005), охоплює настройку, розгортання і управління Geronimo і надає робочі приклади розгортання Web-додатків і EJB-компонентів.
  • На Офіційному сайті проекту Geronimo знаходяться останні бінарні і вихідні файли, активна спільнота передплатників поштової розсилки і wiki.
  • Перегляньте область проекту Apache Geronimo для отримання повного списку ресурсів з відкритим вихідним кодом на developerWorks .
  • Перегляньте список всіх статей Apache і вільно розповсюджуваних підручників Apache , Доступних в області developerWorks Open source.
  • Geronimo використовує Apache Maven для управління компонуванням проекту. Для більшості проектів використовується система контролю версій Subversion , А кілька проектів все ще знаходяться під CVS .
  • завантажте Gluecode Standard Edition - вільно поширюваний сервер додатків, заснований на Apache Geronimo.
  • Застосуйте в вашому наступному проекті з відкритим вихідним кодом пробне програмне забезпечення IBM , Доступне для завантаження або на DVD.

Підпішіть мене на ПОВІДОМЛЕННЯ до коментарів

Quot;?
Quot;?
Провайдеры:
  • 08.09.2015

    Batyevka.NET предоставляет услуги доступа к сети Интернет на территории Соломенского района г. Киева.Наша миссия —... 
    Читать полностью

  • 08.09.2015
    IPNET

    Компания IPNET — это крупнейший оператор и технологический лидер на рынке телекоммуникаций Киева. Мы предоставляем... 
    Читать полностью

  • 08.09.2015
    Boryspil.Net

    Интернет-провайдер «Boryspil.net» начал свою работу в 2008 году и на данный момент является одним из крупнейших поставщиков... 
    Читать полностью

  • 08.09.2015
    4OKNET

    Наша компания работает в сфере телекоммуникационных услуг, а именно — предоставлении доступа в сеть интернет.Уже... 
    Читать полностью

  • 08.09.2015
    Телегруп

    ДП «Телегруп-Украина» – IT-компания с 15-летним опытом работы на рынке телекоммуникационных услуг, а также официальный... 
    Читать полностью

  • 08.09.2015
    Софтлинк

    Высокая скоростьМы являемся участником Украинского центра обмена трафиком (UA — IX) с включением 10 Гбит / сек... 
    Читать полностью