Пример PetClinic.
Один из примеров, прилагающихся к Spring.
- Файлы: petclinic.zip petclinic.war
- war-файл тоже является zip-архивом, поэтому браузер может попытаться сохранить его с расширением zip - не давайте ему этого сделать.
- Как развернуть и запустить приложение.
- Взять файл petclinic.zip и распаковать его в директорию petclinic рабочего пространства Eclipse ($workspace). При этом распакуются все файлы проекта. Директорию workspace на компьютере в классе лучше сделать в C:\Documents and Settings\student; при этом у вас будут права на запись и в именах файлов не будет русских букв, на что плохо реагирует junit, управляющий запуском тестов в проекте.
- Запустить СУБД. Для этого
- В полученной директории $workspace\petclinic\db\hsqldb найти файл server.bat.
- Добавить в нем в первую строку инициализацию переменной JAVA_HOME, чтобы она указывала директорию, в которой находится JDK.
- На компьютерах в классе это C:\Java\jdk1.6.0_18.
- Запустить поправленный server.bat.
- При этом запускается СУБД HyperSQL.
- Создать в Eclipse проект (Java Project) petclinic из уже имеющейся директории petclinic.
- Выполнить инициализацию базы данных. Для этого
- Найти в полученном проекте файл сборки Ant build.xml на верхнем уровне.
- Есть еще такой же файл в директории db - его трогать не надо.
- Правой кнопкой нажать на build.xml в Eclipse и выбрать пункт Run As/Ant Build...
- Внимание: выбирать именно пункт меню Run As с многоточием!
- В открывшемся диалоге оставить галочку только у пункта setupDB, затем нажать Run.
- При этом создается и заполняется исходными данными база проекта.
- Запустить сервер приложений J2EE. Для этого найти в меню Start группу Java EE 6 SDK и выбрать команду Start Application Server или Start Default Server. При этом запускается сервер glassfish.
- Если в браузере при переходе по адресу http://localhost:8080/ появляется страница с надписью "Your Application Server is now running", значит сервер запустился.
- Взять файл petclinic.war и скопировать его в директорию autodeploy сервера приложений. На компьютерах в классе это C:\Java\glassfishv3\glassfish\domains\domain1\autodeploy.
- Подождать некоторое время. Нужно дождаться, пока в этой директории появится файл petclinic.war_deployed.
- Если этого не происходит
- Может оказаться, что war-файл не тот (а, например, petclinic.zip, сохраненный с другим именем).
- Проверить это можно, заглянув в war-file с помощью Far'а или WinZip - на верхнем уровне в нем должен быть файл index.jsp и директории docs, html, images, META-INF, styles, WEB-INF.
- Могут случиться другие проблемы с развертыванием.
- Убедиться в их наличии можно, заглянув в server.log в директории logs рядом с autodeploy. Такие проблемы обычно проявляются в сообщениях об исключениях в конце лога.
- Если исключения говорят о ненайденном классе (
ClassNotFoundException или NoClassDefFoundError) - war файл неправильно скомпонован, в нем не хватает библиотек, каких именно - можно понять из имен недостающих файлов. Этого, по идее, в данном примере случится не должно, но иногда будет происходить с вашими заданиями. - Если исключения говорят о нехватке памяти (OutOfMemoryError) или что-то непонятное, а также, если новых сообщений в server.log не появляется, несмотря на удаление и повторное помещение war-файла в директорию autodeploy, стоит попробовать перезагрузить сервер приложений. Для этого нужно выбрать пункт Stop Application Server (или Stop Default Server) в группе Java EE 6 SDK меню Start, подождать, пока открывшееся терминальное окно не закроется, затем снова запустить сервер.
- Запустить браузер и набрать в нем адрес http://localhost:8080/petclinic. Если приложение запустилось успешно, браузер покажет картинку с собакой и кошкой.
- Как выполнить все задачи проекта.
- Выполнить пп. 1-5 из предудущего списка (не нужно повторять, если это уже сделано).
- Поправить настройки $workspace\petclinic\build.properties.
- В свойство appserver.home нужно записать корневую директорию glassfish.
- На компьютерах в классе это C:/Java/glassfishv3/glassfish.
- Здесь нужно использовать прямые, а не обратные слэши.
- В свойство javadoc.exe нужно записать путь к javadoc.exe в установленном JDK, иначе Ant запутывается.
- На компьютерах в классе это C:/Java/jdk1.6.0_18/bin/javadoc.exe.
- Так же, как в п. 4 предыдущего списка, выполнить задачи build, warfile, tests, deploywar.
- При выполнении war будет создан файл $workspace\petclinic\dist\petclinic.war.
- При выполнении deploywar он копируется в директорию autodeploy сервера приложений.
- При выполнении tests запускаются приложенные тесты, сделанные с помощью junit.