Сім простих причин використовувати AppFuse

  1. Типове додаток AppFuse
  2. Лістинг 1. Створення нового проекту з використанням AppFuse
  3. Малюнок 2. Структура директорій проекту
  4. Причина # 1: Тестування
  5. Причина # 2: Інтеграція
  6. Малюнок 3. Залежності проекту
  7. Причина # 3: Автоматизація
  8. Причина # 4: Безпека и розшірюваність
  9. Причина № 5: Створення коду з використанням AppGen
  10. Лістинг 2. Створення таблиці бази даних з ім'ям cat
  11. Лістинг 3. Запуск команди AppGen
  12. Лістинг 4. Додавання Cat.hbm.xml в компонент sessionFactory
  13. Малюнок 4. Список cat
  14. Причина # 6: Документація
  15. Причина # 7: Спільнота
  16. Висновок
  17. Ресурси для скачування

Дізнайтеся, як працювати більш продуктивно, використовуючи інструменти Java з відкритим вихідним кодом

AppFuse є проектом з відкритим вихідним кодом, який використовує різні інструменти, які є частиною платформи Java, для того щоб допомогти вам розробляти веб-орієнтовані додатки швидко і ефективно. Спочатку воно було створено для скорочення часу розробки продукту при створенні нових веб-додатків для замовників. За своєю суттю, AppFuse надає скелет продукту, схожий на створюваний Вашої середовищем розробки майстром створення нового проекту. Коли Ви створюєте проект використовуючи AppFuse, він пропонує Вам вибір різних фреймворків, які Вам хотілося б використовувати, і потім створює проект. AppFuse іпользуются Ant для управління тестуванням, створенням коду, його компіляцією і рядків. Він забезпечує користувачів необхідною структурою директорій і пакетів, а так само необхідними для створення веб-додатки на мові Java бібліотеками.

На відміну від створених більшістю майстрів каркасів проектів, проект, створений AppFuse містить певну кількість класів і файлів з самого початку. Ці файли використовуються для виконання різних функцій, але так само вони служать прикладами для розробки вашої програми. Використання AppFuse для початку роботи над новим продуктом дає можливість значно скоротити час розробки. Вам не треба піклуватися про конфігуруванні різних фреймворків для їх успішної взаємодії бо це вже зроблено за Вас. Ваш проект налаштований для роботи з базами даних, установки на сервер і авторизації користувачів. Так само немає необхідності в створенні різних функцій забезпечення безпеки - вони вже інтегровані в проект.

Перша версія AppFuse підтримувала тільки технології Struts і Hibernate. З плином часу, я знайшов більш зручні веб-фреймворки ніж Struts, таким чином, я додав їх підтримку теж. На сьогоднішній день AppFuse підтримує Hibernate або iBATIS як постійні фреймворки. Для роботи з веб-додатками Ви можете використовувати JavaServer Faces (JSF), Spring MVC, Struts, Tapestry, або WebWork.

AppFuse забезпечує реалізацію багатьох функцій, які можуть Вам знадобитися:

  • Аутентифікація і авторизація
  • Керування користувачами
  • Функція Remember Me (дозволяє зберігати інформацію про користувача при його авторизації, таким чином, йому не треба кожен раз заново вводити свої дані)
  • відновлення паролів
  • Підписка і реєстрація
  • Робота з SSL
  • Електронна пошта
  • Функції для роботи з URL
  • підтримка скінів
  • Інструменти для оформлення веб-сторінок
  • шаблонні схеми
  • закачування файлів

Ця базова функціональність є однією з найголовніших речей, що відрізняють AppFuse від інших аналогічних продуктів, таких як Ruby on Rails і деякі інші. Вищевказані фреймворки, так само як і AppFuse, дозволяють вам генерувати сторінки використовуючи таблиці баз даних або існуючі моделі об'єктів.

Малюнок 1 ілюструє концепцію дизайну типового AppFuse-додатки:

Типове додаток AppFuse
Дізнайтеся, як працювати більш продуктивно, використовуючи інструменти Java з відкритим вихідним кодом   AppFuse є проектом з відкритим вихідним кодом, який використовує різні інструменти, які є частиною платформи Java, для того щоб допомогти вам розробляти веб-орієнтовані додатки швидко і ефективно

Лістинг 1 ілюструє використання командного рядка для створення проекту з ім'ям devworks, і містить відповідні вихідні дані. Цей проект використовує WebWork (дивіться розділ ресурси для додаткової інформації).

Лістинг 1. Створення нового проекту з використанням AppFuse

alotta: ~ / dev / appfuse mraible $ ant new Buildfile: build.xml clean: [echo] Cleaning build and distribution directories init: new: [echo] [echo] + ------------- ------------------------------------------------ + [ echo] | - Welcome to the AppFuse New Application Wizard! - | [Echo] | | [Echo] | To create a new application, please answer the following | [Echo] | questions. | [Echo] + ---------------------------------------------- --------------- + [input] What would you like to name your application [myapp]? devworks [input] What would you like to name your database [mydb]? devworks [input] What package name would you like to use [org.appfuse]? com.ibm [input] What web framework would you like to use [webwork, tapestry, spring, js f, struts]? webwork [echo] Creating new application named 'devworks' ... [copy] Copying 359 files to / Users / mraible / Work / devworks [copy] Copying 181 files to / Users / mraible / Work / devworks / extras [copy] Copying 1 file to / Users / mraible / Work / devworks [copy] Copying 1 file to / Users / mraible / Work / devworks install: [echo] Copying WebWork JARs to ../../lib [copy] Copying 6 files to / Users / mraible / Work / devworks / lib [echo] Adding WebWork entries to ../../lib.properties [echo] Adding WebWork classpath entries [echo] Removing Struts-specific JARs [delete] Deleting directory / Users / mraible / Work / devworks / lib / struts-1.2.9 [delete] Deleting directory /Users/mraible/Work/devworks/lib/strutstest-2.1.3 [echo] Deleting struts_form.xdt for XDoclet [delete] Deleting directory / Users / mraible / Work / devworks / metadata / templates [echo] Deleting Struts merge-files in metadata / web [delete] Deleting 7 files from / Users / mraible / Work / devworks / metadata / web [echo] Deleting unused Tag Libraries and Utilities [delete ] Deleting 2 file s from / Users / mraible / Work / devworks / src / web / org / appfu se / webapp [echo] Modifying appgen for WebWork [copy] Copying 12 files to / Users / mraible / Work / devworks / extras / appgen [echo] Replacing source and test files [delete] Deleting directory / Users / mraible / Work / devworks / src / web / org / appfuse / webapp / form [delete] Deleting directory / Users / mraible / Work / devworks / src / web / org / appfuse / webapp / action [copy] Copying 13 files to / Users / mraible / Work / devworks / src [delete] Deleting directory / Users / mraible / Work / devworks / test / web / org / appfuse / webapp / form [delete] Deleting directory / Users / mraible / Work / devworks / test / web / org / appfuse / webapp / action [copy] Copying 5 files to / Users / mraible / Work / devworks / test [echo] Replacing web files (images, scripts, JSPs, etc.) [delete] Deleting 1 files from / Users / mraible / Work / devworks / web / scripts [copy] Copying 34 files to / Users / mraible / Work / devworks / web [delete] Deleting: / Users / mraible / Work / devworks / web / WEB-INF / validator-rules-c ustom.xml [echo] Modifying Eclipse .cl asspath file [echo] Refactoring build.xml [echo] -------------------------------------- -------- [echo] NOTE: It's recommended you delete extras / webwork as you should not ne ed it anymore. [Echo] ---------------------------------------------- [ echo] Repackaging info written to rename.log [echo] [echo] + ---------------------------------- --------------------------- + [echo] | - Application created successfully! - | [Echo] | | [Echo] | Now you should be able to cd to your application and run: | [Echo] | > Ant setup test-all | [Echo] + ---------------------------------------------- --------------- + BUILD SUCCESSFUL Total time: 15 seconds

Завдяки спільноті Struts, комбінація Struts і WebWork вилилася в новий ефективний веб-фреймворк для платформи Java: Struts 2. Звичайно, Spring MVC є чудовим заснованим на запитах фреймворком, однак він не підтримує JSF, на відміну від Struts 2. Засновані на роботі з компонентами фреймворкі, такі як JSF і Tapestry, поступаються WebWork в інтуїтивності і простоті роботи. (Дивіться розділ ресурси для додаткової інформації про Struts 2 і JSF.)

Після створення проекту ви побачите структуру директорій схожу на наведену на малюнку 2. Створення файлів проектів Eclipse і Intellij IDEA є частиною цього процесу.

Малюнок 2. Структура директорій проекту

Дана структура директорій дуже близька до рекомендованої Sun для веб-додатків створених на платформі Java 2, Enterprise Edition (J2EE). У AppFuse версії 2.0 ця структура зміниться для відповідності стандартним шаблоном директорій проектів Apache Maven (дивіться розділ ресурси на предмет посилань на керівництва по обом структурам). AppFuse також переміститься з Ant на Maven 2 для придбання додаткових можливостей і підтримки проектних файлів, що генеруються середовищем розробки. Поточна система, базована на Ant, вимагає коштів, що підтримують проектні файли, в той момент як Maven 2 дозволяє генерувати файли проектів IDEA, Eclipse і NetBeans, використовуючи файл pom.xml. (Даний файл, розташований в кореневій директорії вашого проекту, є основним компонентом, необхідним для створення додатка Maven. Він схожий з файлом build.xml, використовуваним при роботі з Ant.)

Тепер, коли Ви маєте базове уявлення про AppFuse, я розповім про семи простих причинах, чому його варто використовувати. Навіть якщо Ви не хочете користуватися ним при створенні Ваших проектів, Ви зможете побачити, що AppFuse є джерелом великої кількості шаблонного коду, який може бути використаний в веб-пріложніях, створених на мові Java. В силу того що AppFuse визнаний Apache, ви можете використовувати цей код в своїх розробках.

Причина # 1: Тестування

Тестування рідко надають достатньо уваги при розробці додатків. Зауважте, я не говорив що на нього не звертають уваги при публікації програмного забезпечення! Досить джерел посилаються на випадки, коли розробка, орієнтована в першу чергу на тести і високе покриття коду, дозволяє збільшити якість продукту. На жаль, тестування найчастіше представляється як щось, що просто віддаляє час завершення проекту. Насправді, при використанні методологій, орієнтованих на тестування (розробка тестів перед створенням коду), це значно скорочує час розробки. Більш того, первинне тестування значно полегшує підтримку і переробку коду. Якщо Ви не створюєте тести, Вам необхідно тестувати додаток вручну - а це не найпродуктивніший метод. Автоматизація в даній ситуації є ключовим моментом.

Коли Ви почнете використовувати AppFuse, Ви, можливо, прочитаєте відповідну документацію на сайті проекту (зверніться до розділу ресурси ). Керівництво написано таким чином, що Ви пишете тести в першу чергу; вони не будуть скомпільовані до тих пір поки не будуть створені відповідні інтерфейс і / або реалізація. Якщо Вам дійсно необхідно створювати тести перед написанням коду, це відмінна мотивація. Якщо Ви створюєте код в першу чергу і лише потім якимось чином переконуєтесь, що він працює, Ви, можливо, скажете собі, "Здається, тут все в порядку - навіщо потрібні тести? Я краще витрачу цей час на створення коду!" На жаль, тут є один неприємний момент - при перевірці правильності коду якимось чином Ви можете пропустити деякі важливі моменти, які були б автоматично перевірені за допомогою тестів.

У документації до AppFuse знаходяться рекомендації з тестування Ваших додатків на різних логічних рівнях, починаючи з використання DbUnit (див. ресурси ) На рівні баз даних для заповнення бази тестовими даними перед запуском тестів. На рівні доступу до даних (DAO), AppFuse використовує клас AbstractTransactionalDataSourceSpringContextTests бібліотеки Spring для забезпечення простого завантаження контекстних файлів Spring. Далі, даний клас створює транзакцію для кожного testXXX () методу і відкочується її при завершенні тестового методу. Ця функція спрощує тестування на рівні доступу до даних і не змінює дані в базі.

На сервісному рівні, jMock (див. ресурси ) Використовується для створення модульних тестів, що імітують свої DAO-залежності. Це відкриває доступ до швидких і зручним тестів, які б коректність Вашої бізнес-логіки; Вам немає необхідності турбуватися про логіку нижчого рівня.

Команда HtmlUnit пройшла великий обсяг робіт у версії 1.8 для забезпечення сумісності з популярними Ajax-платформами типу Prototype або Scriptaculous.

На рівні веб, тести дозволяють переконатися що різні дії (Struts / WebWork), контролери (Spring MVC), сторінки (Tapestry), і елементи JSF працюють саме так, як очікувалося. Файл spring-mock.jar корисний для тестування всіх цих фреймворків, тому що містить імітовану реалізацію API сервлета. Тестування веб-фреймворків AppFuse було б складніше без даної корисної бібліотеки.

Інтерфейс, як правило, найбільш складна частина розробки веб-додатки. На цей компонент замовник звертає найбільше уваги - як з боку зовнішнього вигляду, так і тому що робота компонента не завжди відповідає його очікуванням. До того ж, немає нічого гіршого ніж повідомлення про помилку в демо-версії програми при демонстрації його замовнику! Ваш продукт може бути чудовим у всіх відносинах, але у замовника обов'язково виникнуть питання з приводу його якості. Не дозволяйте такій ситуації статися. Canoo WebTest допоможе Вам протестувати призначений для користувача інтерфейс. Даний продукт використовує HtmlUnit для роботи з Вашим інтерфейсом, дозволяє переконатися що необхідні елементи присутні на своєму місці, заповнює поля форм і навіть дозволяє протестувати інтерфейси з підтримкою Ajax. (Зверніться до розділу ресурси для додаткової інформації щодо WebTest і HtmlUnit.)

Для спрощення процесу тестування, інструменти Cargo (див. ресурси ) Автоматизують запуск і зупинку Tomcat для проведення тестів.

Причина # 2: Інтеграція

Як уже було згадано на початку статті, безліч бібліотек з відкритим вихідним кодом вже преінтегріровани в AppFuse. Вони діляться на наступні категорії:

  • Компіляція, звіти і генерація коду: Ant, Ant Contrib Tasks, Checkstyle, EMMA, Java2Html, PMD, і Rename Packages
  • Тестові фреймворки: DbUnit, Dumbster, jMock, JUnit, Canoo WebTest
  • Драйвери баз даних: MySQL і PostgreSQL
  • Основні фреймворки: Hibernate і iBATIS
  • IoC фреймворки: Spring
  • Веб-фреймворки: JSF, Spring MVC, Struts, Tapestry, WebWork
  • Веб-сервіси: XFire
  • Веб-утиліти: Clickstream, Display Tag, DWR, JSTL, SiteMesh, Struts Menu, і URL Rewrite Filter
  • Безпека: Acegi Security
  • JavaScript і CSS: Scriptaculous, Prototype, а також Mike Stenhouse's CSS Framework

До того ж до даних бібліотек, AppFuse використовує Log4j для логування і Velocity для роботи з електронною поштою і шаблонами меню. Так само реалізована підтримка Tomcat (не входить в пакет AppFuse), і Ви можете використовувати версії 1.4 або 5 платформи Java для створення додатків. У Вас є можливість установки AppFuse на будь-який J2EE 1.3-сумісний сервер додатків; продукт був протестований на роботу з усіма основними J2EE серверами і з усіма основними контейнерами сервлетів.

Малюнок 3 показує директорію бібліотек створеного раніше проекту devworks. Файл lib.properties контролює номера версій для кожної залежності, що означає що Ви можете тестувати нову версію будь-якого з цих пакетів шляхом копіювання файлів в дану директорію і виконання команди типу ant test-all -Dspring.version = 2.0.

Малюнок 3. Залежності проекту

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

Крім спрощення розробки веб-орієнтованих додатків, AppFuse дозволяє простим способом інтегрувати різні Веб-сервіси в Ваші проекти. У пакет AppFuse інтегрований XFire, проте Ви так само можете працювати з Apache Axis (див. ресурси для керівництва по інтеграції з Axis). Фреймворк Spring разом з XFire значно полегшують роботу з сервісним рівнем Вашого проекту, даючи Вам можливість створювати сервіс-орієнтовані додатки.

Додатково до всього цього, AppFuse не заганяти розробника в рамки якогось певного API. Він дозволяє зручним способом збирати заново і інтегрувати найбільш підходящі рішення з відкритим кодом. Код, що міститься в AppFuse, відповідає за інтеграцію і реалізує основні фунции безпеки і зручності використання. У разі можливості, код віддаляється на користь додавання функціональності до одного з AppFuse-залежних фреймворків. Наприклад, реалізовані в AppFuse функції Remember Me і робота з SSL були видалені на користь схожого фунціонала з Acegi Security.

Причина # 3: Автоматизація

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

Незважаючи на те, що його можливості величезні для деяких користувачів, він підходить не всім. Безліч користувачів AppFuse використовує Eclipse або Intellij IDEA для створення і тестування своїх продуктів. Запуск Ant з даних середовищ розробки можливий, але далеко не настільки продуктивний, як робота з тестами, які використовують вбудовану в дані середовища підтримку JUnit.

На щастя, AppFuse підтримує запуск самих тестів з середовищ розробки, але підтримка даної функціональності досить складна для розробників. Основною проблемою є те, що XDoclet використовується для генерації Hibernate mapping-файлів і деяких компонентів для веб-фреймворків (таких, як ActionForms і struts-config.xml для Struts). Середовища розробки не повідомляються про те, що даний код повинен бути згенерований, до тих пір доки Ви не сконфігуріруете їх для роботи з Ant або не встановите відповідний XDoclet плагін.

Даний недолік повідомлень є однією з основних причин переходу AppFuse 2.0 на JDK 5 і Maven 2. JDK 5 і Struts 2 дозволять нам коректно працювати з XDoclet. Maven 2 дозволить генерувати проектні файли відповідної середовища розробки, і з даними файлами і динамічними шляхами до класів, управління Вашим проектом спроститься. Поточна система, побудована на Ant, також виробляє компоненти для різних рівнів (включаючи dao.jar, service.jar, і webapp.war), таким чином перехід на модель Maven буде резонним кроком.

До того ж до Ant (і багатому набору інструментів для створення, тестування, інсталяції та генерації звітів), в AppFuse реалізована підтримка технології CruiseControl. CruiseControl є Continuous Integration додатком, яке дозволяє автоматично запустити всі Ваші тести в разі зміни коду в репозиторії. Директорія extras / cruisecontrol містить файли, необхідні для швидкої і простої установки Continuous Integration для вашого заснованого на AppFuse проекту.

Установка Continuous Integration є однією з перших речей, які необхідно виконати в циклі розробки програмного забезпечення. Вона не тільки мотивує програмістів до створення тестів, але і сприяє роботі в команді.

Причина # 4: Безпека и розшірюваність

AppFuse спочатку розроблявся як частина демонстраційного Додатки для книги Pro JSP видавництва APress. Ця програма демонструвало роботу з багатьма функціямі безпеки, а так же Спрощення розробки з Використання Struts. Безліч Даних функцій безпеки НЕ існує в Концепції безпеки J2EE. Аутентифікація з використанням контейнерів була досить простою, проте не існувало таких функцій, як Remember Me, підказки до паролів, робота з SSL, підписка та управління користувачами. Більш того, можливість захисту методів, заснована на ролі користувача, була неможлива в оточенні, що не використовує EJB.

З самого початку, всі дані функції були реалізовані в AppFuse на основі технології CMA. Я чув про Acegi Security, коли вперше приступив до вивчення Spring на початку 2004 року. Я порівняв кількість рядків в XML-файлі, необхідному Acegi (175), з необхідною кількістю рядків у файлі web.xml для CMA (20). Я прийшов до висновку що реалізація Acegi занадто складна і припинив роботу з нею.

Півтора роки по тому, після написання глави, що розповідає про використання Acegi Security, для іншої книги, Spring Live, я змінив свою думку. Acegi вимагає величезну кількість XML, але вона дійсно проста, коли Ви її зрозумієте. Коли в результаті ми замінили багато реалізовані в AppFuse функції, використовуючи Acegi Security, це призвело до значного скорочення кількості коду.

Acegi Security є кращою річчю, коли-небудь відбувалася з моделлю безпеки J2EE. Вона дозволяє реалізовувати безліч функцій, які не є частиною моделі безпеки Servlet API, такі як аутентифікація, авторизація, рольова захист методів, Remember Me, шифрування паролів, робота з SSL, перемикання користувачів, і деякі інші. Вона так само дозволяє зберігати реквізити користувачів в XML файлі, в базі даних, в LDAP, або в окремій системі, наприклад Yale's Central Authentication Service (CAS) або SiteMinder.

Реалізація багатьох стосуються безпеки функцій в AppFuse була актуальна на самому початку. Тепер, коли AppFuse використовує Acegi Security, дані функції, як і багато інших, доступні і прості у використанні. Acegi має безліч точок для розширення, це і є причина великого розміру конфігураційного XML файлу. Після інтеграції з Acegi протягом минулого року, ми виявили, що налаштували безліч компонентів для тіснішої сумісності з AppFuse.

Комбінація простоти розробки, легко тестується коду і переваг використання Spring IoC і Acegi Security - основні причини того, що працювати з AppFuse - одне задоволення. Дані фреймворки дозволяють легко створювати чистий, тестований код. AppFuse підтримує безліч проектів з відкритим кодом, і додавання залежностей дозволяє легко інтегрувати різні рівні Вашого застосування між собою.

Причина № 5: Створення коду з використанням AppGen

На думку деяких розробників, якщо Вам необхідно створювати генератори коду, Ви робите щось не так. Я вважаю, що це помилкова думка. Якщо Ви створюєте схожі об'єкти DAO, менеджери, контролери і т.д. і ви не створюєте генератори коду для них - це неправильно. Звичайно, добре коли мова програмування дає вам різні функції для полегшення процесу розробки, проте часто генерація коду є необхідною і дуже продуктивною завданням.

До складу AppFuse входить Ant- і XDoclet-орієнтований інструмент генерації коду, який має назву AppGen. Різні менеджери дозволяють Вам генерувати і використовувати різні об'єкти Java, але на рівні веб це досить складно. AppGen надає функціонал для виконання наступних завдань:

  • Генерація об'єктів Java з таблиць баз даних (використовуючи інструменти Middlegen і Hibernate)
  • Генерація призначеного для користувача інтерфейсу для цих об'єктів
  • Генерація тестів для об'єктів доступу до даних, менеджерів, контролерів, дій і призначеного для користувача інтерфейсу

Коли Ви запускаєте AppGen, Вам пропонується робота з таблицями БД або Plain Old Java Objects (POJO), і AppGen генерує відповідний код. Якщо Ви наберете в командному рядку ant install-detailed, AppGen встановить POJO-специфічні об'єкти DAO і менеджери з відповідними тестами. Запуск ant install дозволить Вашим класів веб-рівня використовувати вихідні DAO і менеджер, який використовується за умовчанням.

Для ілюстрації роботи з AppGen, я створив таблицю, наведену в лістингу 2, в MySQL базі даних проекту devworks:

Лістинг 2. Створення таблиці бази даних з ім'ям cat

create table cat (cat_id int (8) auto_increment, color varchar (20) not null, name varchar (20) not null, created_date datetime not null, primary key (cat_id)) type = InnoDB;

З директорії extras / appgen виконайте ant install-detailed. Повний лістинг результатів виконання команди занадто великий для даної статті, але перша частина приведена в лістингу 3:

Лістинг 3. Запуск команди AppGen

$ Ant install-detailed Buildfile: build.xml init: [mkdir] Created dir: / Users / mraible / Work / devworks / extras / appgen / build [echo] [echo] + ----------- -------------------------------------------- + [echo] | - Welcome to the AppGen! - | [Echo] | | [Echo] | Use the "install" target to use the generic DAO and | [Echo] | Manager, or use "install-detailed" to general a DAO | [Echo] | and Manager specifically for your model object. | [Echo] + ---------------------------------------------- --------- + [input] Would you like to generate code from a table or POJO? (Table, pojo) table [input] What is the name of your table (ie person)? cat [input] What is the name, if any, of the module for your table (ie organization)? [Echo] Running Middlegen to generate POJO ...

Для використання згенерованого для таблиці cat коду, необхідно змінити src / dao / com / ibm / dao / hibernate / applicationContext-hibernate.xml і додати в нього Cat.hbm.xml файл для Hibernate. Лістинг 4 ілюструє, як повинен виглядати ваш модифікований компонент sessionFactory:

Лістинг 4. Додавання Cat.hbm.xml в компонент sessionFactory

<Bean id = "sessionFactory" class = "..."> <property name = "dataSource" ref = "dataSource" /> <property name = "mappingResources"> <list> <value> com / ibm / model / Role .hbm.xml </ value> <value> com / ibm / model / User.hbm.xml </ value> <value> com / ibm / model / Cat.hbm.xml </ value> </ list> </ property> ... </ bean>

Після виконання ant setup deploy, з'явиться можливість працювати з таблицею cat з встановленої програми:

Малюнок 4. Список cat
Малюнок 5. Форма cat

Дані, що містяться на скріншотах вище, створені як частина процесу генерації коду.

Причина # 6: Документація

Ви можете знайти керівництва до кожної конфігурації AppFuse на шести мовах: китайською, німецькою, англійською, корейською, португальською та іспанською. Під конфігурацією я в даний момент розумію різні комбінації фреймворків, такі як Spring MVC і iBATIS, Spring MVC і Hibernate, або JSF і Hibernate. Можливі кілька комбінацій п'яти веб-фреймворків і двох постійних. Крім даних посібників, AppFuse пропонується з вісьмома перекладами опису основного функціоналу. Список доступних мов включає китайський, голландський, німецький, англійський, французький, італійський, португальська та іспанська.

До того ж до основних руководста, безліч додаткової документації (див. ресурси ) Було додано для опису інтеграції з різними базами даних, серверами додатків і іншими технологіями з відкритим кодом (вкючая JasperReports, Lucene, Eclipse, Drools, Axisі DWR).

Причина # 7: Спільнота

Apache Software Foundation цікавиться перспективами в області проектів з відкритим вихідним кодом, і найбільш зацікавлене у створенні спільноти навколо цих проектів. Його учасники вважають, що якщо співтовариство досить розвинене, код високої якості буде логічним результатом. Текст на сторінці сайту Apache можна перевести як

"Ми вважаємо себе не просто групою проектів із загальним сервером, але так само і співтовариством розробників і користувачів."

Спільнота AppFuse значно зросла з моменту створення AppFuse як проекту SourceForge (частина struts.sf.net) в 2003 році. З переміщенням на java.net в березні 2004 року, воно стало популярним проектом там, і було найбільш відвідуваним проектом з січня по березень 2005 року. Сьогодні воно все ще популярно (див. ресурси для доступу до статистики проектів java.net), але втрачає грунт з-за безлічі проектів, спонсорованих Sun.

В кінці 2004, Натан Андерсон (Nathan Anderson) став першим учасником спільноти, крім мене. Безліч інших додалося з тих пір, і всі учасники внесли свій вклад тим чи іншим шляхом, допомагаючи зробити співтовариство AppFuse більш енергійним і веселим.

Наша поштова розсилка дружелюбна і ми намагаємося дотримуватися принципу "немає дурних питань". Єдиний "RTFM" в наших архівах був від користувача, а не від розробника. Безумовно, ми віримо в філософію відкритого вихідного коду Apache. Цитуючи мого хорошого друга Брюса Шнайдера (Bruce Snyder), "Ми прийшли з-за коду і залишилися через людей." В даний час, більшість розробників є також і користувачами, і у нас безумовно виходить конструктивно спілкуватися. До того ж, більшість документації було створено учасниками спільноти, таким чином, співтовариство має цінний досвід і знання.

Висновок

Вам слід спробувати розробку з використанням AppFuse, тому що даний проект дозволяє просто і зручно тестувати, інтегрувати, автоматизувати, захищати і створювати Ваші веб-додатки. За проектом є велика документація, а так само існує дружелюбне співтовариство. Поки компоненти, на яких заснований AppFuse, продовжують поліпшуватися, проект буде вдосконалюватися.

З виходом AppFuse 2.0 ми плануємо перейти на JDK 5 (без втрати підтримки 1.4) і Maven 2. Дані інструменти спростять розробку, інсталювання та вдосконалення проектів з використанням AppFuse. Ми плануємо використовувати деякі особливості Maven 2 по обробці спільних залежностей, а так само в нову версію будуть додані бібліотеки appfuse-hibernate-2.0.jar і appfuse-jsf-2.0.jar. Дані бібліотеки будуть описані у файлі pom.xml і відповідатимуть за обробку інших взаємних залежностей. Замість того щоб тримати базові класи AppFuse в своєму проекті, Вам буде досить просто розширити відповідні класи з JAR-файлів, як при роботі зі звичайним фреймворком, що зробить розробку набагато простіше і підштовхне багатьох користувачів AppFuse до здійснення бажаних змін в проекті.

Як ніщо інше, AppFuse допоможе вам перебувати на вістрі розробки веб-додатків на Java разом з нами!

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

Схожі тими

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

Echo] + ---------------------------------------------- --------------- + [input] What would you like to name your application [myapp]?
Devworks [input] What would you like to name your database [mydb]?
Appfuse]?
Ibm [input] What web framework would you like to use [webwork, tapestry, spring, js f, struts]?
Якщо Ви створюєте код в першу чергу і лише потім якимось чином переконуєтесь, що він працює, Ви, можливо, скажете собі, "Здається, тут все в порядку - навіщо потрібні тести?
Echo] + ---------------------------------------------- --------- + [input] Would you like to generate code from a table or POJO?
Table, pojo) table [input] What is the name of your table (ie person)?
Cat [input] What is the name, if any, of the module for your table (ie organization)?

Дополнительная информация

rss
Карта