Вдохновившись созданием первого сервлета, который раоботал в Apache Tomcat, я решил двигаться дальше. Я быстро узнал, что GlassFish предоставляет намного больше возможностей и решил попробовать его.

Запускаем GlassFish

Поскольку на всех возможных для GlassFish серверах у меня установлен Linux, инструкция будет именно для Linux. Подразумевается, что перед установкой GlassFish уже установлен JDK, поэтому процесс установки JDK тут описан не будет. Установить GlassFish на локальный компьютер не вызывает сложностей. Либо он ставится вместе с NetBeans, либо как отдельный пакет посредством графического установщика. Но как установить GlassFish на удаленный компьютер без монитора, мыши и клавиатуры, доступ к которому есть только по локальной сети? Именно такой компьютер и выполняет у меня функции веб-сервера, поэтому я рассмотрю процесс установки GlassFish именно для этого случая.

Загружаем дистрибутив

Если у вас нет дистрибутива GlassFish, его можно загрузить с официального сайта. Возможно, вы немного растеряетесь в выборе нужного для загрузки файла. Есть варианты, но нету описания отличий одного от другого. Было бы неплохо написать чем отличается Oracle GlassFish Server 3.1.1 от Oracle GlassFish Server 3.1.1 Web Profile. В общем, я выбрал GlassFish Server 3.1.1. Дальше предлагается снова выбрать один из файлов и опять никаких комментариев. Насколько я понял, отличия кроются в платформе и языковой поддержке. В итоге, ориентируясь на имена файлов и размер, я остановился на файле ogs-3.1.1-unix-ml.sh.

Установка

Итак, сервер загружен и теперь надо подготовить его для установки. Поскольку на компьютере без монитора графический установщик бесполезен, надо как-то сообщить установщику ответы на вопросы, которые возникают в процессе графической установки. Обычно в таких случаях ответы на возможные вопросы записываются в файл, место положения которого указывается установщику. В инструкции к серверу GlassFish такой метод установки называется Silent Mode, что можно перевести как «втихую» или «тихий режим».

Как я и говорил, для установки в Silent Mode, нам потребуется нечто, именуемое «Answer File» (Файл ответов). Создать этот файл можно при помощи приема, носящего название «Dry-run» (запуск всухую). Для выполнения dry-run, достаточно выполнить команду

$ ./ogs-3.1-unix-ml.sh -n answers.ogs

Следует помнить, что файл ogs-3.1.1-unix-ml.sh должен иметь разрешение на запуск Если кто не в курсе, разрешить запускать файл можно командой типа

$ chmod 755 ogs-3.1-unix-ml.sh

После запуска файла начнется его как-бы установка. Как-бы — потому что это dru-run и единственная цель этой как-бы установки заключается в том, чтобы установщик задал вопросы и получил на них ответы. Тут важно чтобы ответы на вопросы наиболее полно соответствовали конфигурации того компьютера, на который GlassFish будет установлен втихаря и по-настоящему. Поэтому, отвечать надо так как обстоят дела на целевом компьютере, а не на том, который используется для составления файла ответов. Если есть необходимость, файл ответов можно отредактировать, соблюдая осторожность.

Как только файл с ответами будет готов для использования, можно приступать к установке на целевом компьютере. Для этого достаточно скопировать на целевую систему установочный файл (ogs-3.1-unix-ml.sh), файл с ответами (answer.ogs) и выполнить от имени суперпользователя на целевой системе команду

# ./ogs-3.1-unix-ml.sh -a answer.ogs -s

Установка закончена. Если все прошло успешно, можно приступать к настройке и запуску GlassFish. Часть настройки была выполнена на этапе создания файла ответов (вы должны были указать имя домена, а так же порты, используемые для администрирования и для подключения клиентов). Почти любые манипуляции с доменами в процессе работы с GlassFish могут быть выполнены посредством программы asadmin. Программа имеет консольный интерфейс и располагается в каталоге /bin по месту установки GlassFish. Таким образом, если GlassFish был установлен в /usr/local/glassfish то искать утилиту asadmin следует в каталоге /usr/local/glassfish/bin.

Если вы собираетесь работать с СУБД в ваших серверных приложениях (а скорее всего это так), то можно сразу добавить необходимые JDBC-драйверы для подключения к требуемым СУБД. Рассмотрим на примере конфигурации моего сервера как правильно располагать JDBC-драйверы. Есть путь

/usr/local/glassfish/glassfish/domains/pgtk/lib/ext

где /usr/local/glassfish — каталог в который устанавливался GlassFish. Следующая часть пути (glassfish/domains/pgtk) — приводит нас в домен pgtk, который (в числе прочих) находится на сервере и возможно был создан еще при установке. Название pgtk в моем примере скорее всего будет другим в вашем случае (например, domain1). Относительно каталога домена, двигаемся дальше по пути /lib/ext. Именно там и принято располагать дополнительные JDBC-драйвера. На моем сервере в этой папке находятся следующие файлы:

# ls -all /usr/local/glassfish/glassfish/domains/pgtk/lib/ext
итого 1008
drwxr-xr-x 2 root root   4096 Май 17 11:39 .
drwxr-xr-x 6 root root   4096 Май 17 11:37 ..
-rw-r--r-- 1 root root 472831 Май 17 11:39 postgresql-8.4-701.jdbc3.jar
-rw-r--r-- 1 root root 537303 Май 17 11:39 sqljdbc4.jar

Что говорит о моем намерении работать с двумя СУБД: MS SQL Server и PostgreSQL.

Запустить свежеустановленный сервер (точнее единственный домен) можно командой

# ./asadmin start-domain

После выполнения этой команды можно пробовать соединиться с Web-сервером на порту 8080 либо с консолью управления на порту 4848. При соединении надо указывать сетевой адрес того компьютера на который производилась установка GlassFish. Если все сделано правильно, на данном этапе должны работать и консоль администрирования и Web-сервер.

Подготовка сервера для приложения

Будем считать, что запустить GlassFish удалось. Продолжаем дальше. В предыдущем разделе упоминалось про JDBC-драйверы для СУБД MS SQL Server. Поскольку приложение, которое я буду писать работает с SQL Server, будет неплохо настроить пул соединений. В GlassFish это все делается довольно просто посредством консоли администрирования. Начнем издалека. Допустим, при установке вы оставили все как есть и у вас имеется стандартный домен domain1. Опишу подготовительные работы по удалению этого домена и созданию своего с нужными нам параметрами.

Разбираемся с доменами

Как и говорилось выше, все необходимые манипуляции с доменами можно выполнить в утилите asadmin. Запустим её, для чего перейдем в каталог /usr/local/glassfish/bin и выполним команду

# ./asadmin

На всякий случай я выполняю эту команду в режиме суперпользователя. Результатом выполнения команды будет приглашение командной строки утилиты asadmin

# ./asadmin
Use "exit" to exit and "help" for online help.
asadmin>

Теперь пора удалить домен domain1. Если домен который вы собираетесь удалить запущен, неплохо будет его перед этим остановить командой stop-domain утилиты asadmin.

asadmin> stop-domain
Waiting for the domain to stop ...
Command stop-domain executed successfully.
asadmin>

Для удаления домена достаточно выполнить команду delete-domain утилиты asadmin.

asadmin> delete-domain domain1
Domain domain1 deleted.
Command delete-domain executed successfully.
asadmin>

Домен удален. Можно создавать новый. В принципе, новый домен можно было создать не удаляя старый, но так нагляднее. Для создания домена имеется команда create-domain. В процессе создания домена вам будет задано несколько вопросов относительно логина и пароля администратора домена.

asadmin> create-domain gooamoko
Enter admin user name [Enter to accept default "admin" / no password]> gooamoko
Enter the admin password [Enter to accept default of no password]> 
Enter the admin password again> 
Using port 4848 for Admin.
Using default port 8080 for HTTP Instance.
Using default port 7676 for JMS.
Using default port 3700 for IIOP.
Using default port 8181 for HTTP_SSL.
Using default port 3820 for IIOP_SSL.
Using default port 3920 for IIOP_MUTUALAUTH.
Using default port 8686 for JMX_ADMIN.
Using default port 6666 for OSGI_SHELL.
Using default port 9009 for JAVA_DEBUGGER.
The file in given locale [ru_RU] at: [/usr/local/glassfish-3.1/glassfish/lib/templates/locales/ru_RU/index.html]
 could not be found. Using default (en_US) index.html instead.
Distinguished Name of the self-signed X.509 Server Certificate is:
[CN=phenom,OU=GlassFish,O=Oracle Corporation,L=Santa Clara,ST=California,C=US]
Distinguished Name of the self-signed X.509 Server Certificate is:
[CN=phenom-instance,OU=GlassFish,O=Oracle Corporation,L=Santa Clara,ST=California,C=US]
No domain initializers found, bypassing customization step
Domain gooamoko created.
Domain gooamoko admin port is 4848.
Domain gooamoko admin user is "gooamoko".
Command create-domain executed successfully.
asadmin>

Домен создан. Пришло время добавить в него JDBC-драйвера для MS SQL Server.

Соединение с СУБД

Поскольку домен был создан только что, каталог домена lib/ext пуст. Необходимо добавить JDBC-драйверы для MS SQL Server. Поскольку имя домена в моем примере — gooamoko, полный путь относительно корня файловой системы будет /usr/local/glassfish/glassfish/domains/gooamoko/lib/ext. Копируем в этот каталог файл sqljdbc4.jar (этот файл можно найти в zip-архиве пакета JDBC-драйверов, который доступен для загрузки на официальном сайте корпорации Microsoft).

После копирования файла, запускаем домен утилитой asadmin

asadmin> start-domain
Waiting for gooamoko to start .................
Successfully started the domain : gooamoko
domain  Location: /usr/local/glassfish/glassfish/domains/gooamoko
Log File: /usr/local/glassfish/glassfish/domains/gooamoko/logs/server.log
Admin Port: 4848
Command start-domain executed successfully.
asadmin>

Домен запущен. Заходим в консоль администратора, вводим логин и пароль администратора домена. Если все прошло нормально и вы вошли в консоль администратора, в левой части экрана вы увидите меню Common Tasks. В данный момент нас интересует раздел JDBC. В нем два пункта: JDBC resources и JDBC Connection Pools. Сначала нужно создать пул подключений (Connection Pool), ответив на вопросы. После создания пула, можно добавить ресурс, который будет ссылаться на этот пул подключений. Имя ресурса будет использоваться Java-приложением для работы с СУБД.

Процесс создания пула соединений состоит из двух шагов. Внешний вид интерфейса для первого шага изображен на рисунке 1.

Рисунок 1. Начало создания пула

На данном этапе указывается название пула, тип ресурса и разработчик СУБД для которого создается пул. Укажите требуемые параметры и нажмите «Next» (далее) для перехода ко второму шагу. Внешний вид интерфейса для второго шага изображен на рисунке 2.

Рисунок 2. Второй шаг создания пула

На данном этапе будет предложено указать еще ряд параметров, большая часть из которых будет относиться к количеству соединений. В нижней части экрана (рисунок 3) располагаются такие параметры как URL, логин и пароль для СУБД. Можно указывать дополнительные параметры. В данном случае был добавлен параметр databaseName

Рисунок 3. Параметры подключения

Указав все параметры для подключения к серверу, нажимаем кнопку «Finish» (завершение). Пул создан и теперь можно приступать к созданию ресурса на основе этого пула. Внешний вид интерфейса для создания ресурса представлен на рисунке 4.

Рисунок 4. Создание JDBC-ресурса

Для создания ресурса вам потребуется указать его название, а так же выбрать пул соединений для использования этим ресурсом. При необходимости, можно проверить подключение к СУБД. Для этого нужно открыть для изменения параметров пул соединений и воспользоваться кнопкой «Ping». На этом подготовительные работы закончились и можно приступать к написанию первого приложения для GlassFish.

Начало работы с GlassFish