понедельник, 12 декабря 2011 г.

Установка и использование WebLogic Server 12c в версии для разработчиков


На прошлой неделе Oracle сделала доступным для скачивания набор дистрибутивов сервера приложений нового поколения, основы линейки продуктов Oracle Fusion Middleware, - WebLogic Server 12c. Данный продукт доступен как в виде инсталляторов под Windows, Linux и Mac OS X, так и в виде двух ZIP-архивов, предназначенных исключительно для разработчиков. В данной заметке мы рассмотрим как установить WebLogic Server из данных архивов и создать демонстрационный домен, а так же написать и развернуть в данном домене небольшое Java EE 6 приложение, используя Oracle Enterprise Pack for Eclipse 12.1.1.

Установка WebLogic Server 12c


Дистрибутив WebLogic Server 12c состоит из двух архивов: Zip Distribution for Mac OSX, Windows and Linux, содержащего базовые компоненты сервера, и Supplemental zip distribution, содержащего страницы локализации для служебных приложений, примеры и шаблоны тестовых доменов. Для знакомства с сервером приложений достаточно скачать только первый архив, перейдя по ссылке.

После скачивания необходимо распаковать архивы в некоторый каталог. Данный каталог в дальнейшем будет именоваться как MW_HOME и должен быть прописан в качестве значения соответствующей переменной окружения. Под Windows установить значение переменной окружения можно с помощью команды set:



Так же необходимо установить путь к JDK в качестве значения переменной окружения JAVA_HOME. Важно: данный путь не должен содержать пробелов.

После установки значений переменных окружений можно запускать конфигурацию сервера - файл configure.cmd, расположенный в корне каталога MW_HOME. При выполнении данного файла будут распакованы архивы с библиотеками. Данный процесс может занять некоторое время, о чем нас любезно проинформирует надпись в консоли:



В заголовке окна будет отображаться количество оставшихся нераспакованными библиотек:



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



Создание демонстрационного домена


После установки сервера приложений необходимо создать домен. Домен в терминах WebLogic - группа серверов приложений, администрируемая как единое целое с помощью единственного администрирующего сервера (Admin Server). Сервера, компоненты домена, не являющиеся администрирующим сервером, называются управляемыми серверами (Managed Servers). Управляемые сервера, объединенные в домен, могут быть сгруппированы в один или несколько кластеров.

Для создания домена необходимо запустить программу MW_HOME\wlserver\common\bin\config.cmd. Через некоторое время после запуска появится мастер создания домена. На первом шаге данного мастера необходимо выбрать желаемое действие: создать новый домен или расширить существующий.



На следующем шаге мастера необходимо выбрать компоненты создаваемого домена. Так как домен нам нужен только для тестирования базовых возможностей сервера приложений, то никакие дополнительные компоненты не нужны.



Затем следует задать наименование домена и каталог, в котором будут сохранено его содержимое. Oracle рекомендует создавать каталог домена вне MW_HOME. В дальнейшем будем обозначать выбранный каталог как DOMAIN_HOME.



Теперь необходимо задать логин и пароль администратора домена. По-умолчанию логин для администратора домена - weblogic.



После этого необходимо задать режим работы домена (Development или Production) и JDK. По-умолчанию доступна JDK, на которой запущен мастер конфигурации домена. При необходимости можно выбрать другую JDK.



На следующем шаге мастера можно выбрать какие компоненты требуется дополнительно сконфигурировать. Для того, чтобы продемонстрировать возможности по взаимодействию Eclipse и кластера серверов WebLogic, необходимо помимо Admin Server'а, создаваемого в домене по-умолчанию, добавить несколько Managed Server'ов. Для этого необходимо отметить галочкой пункт Managed Servers, Clusters and Machines.



Добавим с помощью кнопки Add... два Managed Server'а: demo_server1 и demo_server2, назначив им порты 7003 и 7004, соответственно.



Созданные сервера необходимо объединить в кластер - demo_cluster. Для кластера можно указать используемый тип обмена сообщениями между серверами: unicast или multicast, порты и адрес кластера.



После создания кластера в него необходимо добавить Managed Server'а.



Все сервера располагаются на одной или нескольких машинах. Имеются ввиду физические машины. Машина характеризуется названием и парой адрес/порт, на которых работает NodeManager - утилита, используемая для удаленного управления серверами, устанавливается одна на машину.



На следующем шаге мастера необходимо задать отношение между серверами и машиной. Т.к. у нас одна машина, то все сервера необходимо проассоциировать с ней.



Последний шаг мастера - информационный. На нем приведено полное описание домена.



Для создания домена необходимо нажать кнопку Create. Появится окно с изображением линейки прогресса и перечислением выполненных шагов. В случае успешного создания домена, станет доступной кнопка Done - выход из мастера.



Для запуска серверов служат файлы, расположенные в каталоге DOMAIN_HOME/bin: startWebLogic.cmd - для AdminServer'а и startManagedWebLogic.cmd - для Managed Server'ов, соответственно. Обязательным аргументом последней команды является имя Managed Server'а.



После начала запуска Managed Server'ов они запросят логин и пароль администратора домена. Чтобы каждый раз не вводить данную информацию вручную, необходимо в каталоги серверов (DOMAIN_HOME/servers/SERVER) скопировать каталог security из каталога Admin Server'а (DOMAIN_HOME/servers/AdminServer).

Необходимо дождаться перехода всех серверов в состояние RUNNING. Домен готов к работе.



Консоль управления Oracle WebLogic Server Administration Console доступна по адресу http://host:port/console. По сравнению с версией 11g изменился фон консоли.



Если вызвать пункт меню base_domain -> Environment -> Servers, то откроется страница, содержащая информацию о состоянии серверов домена.



Если вызвать пункт меню Deployments, то откроется список установленных приложений. Т.к. домен только что создан, то данный список пуст.



Создание и развертывание Java EE 6-приложения с помощью OEPE


Для работы с сервером приложений WebLogic Server 12c можно использовать недавно выпущенный Oracle Enteprise Pack for Eclipse 12.1.1 (OEPE), который доступен для скачивания с OTN.



Чтобы создавать и разворачивать приложения на сервере WebLogic, необходимо прежде всего создать в Eclipse подключение к данному серверу. Для этого служит пункт New -> Server контекстного меню вида Servers из которого запускается мастер создания подключения к серверу приложений, на первой вкладке которого необходимо выбрать тип сервера, его хост и наименование.



На втором шаге мастера необходимо указать каталог, в котором установлен сервер приложений (MW_HOME/wlserver), и путь к JVM.



На третьем шаге мастера необходимо выбрать тип сервера приложений: локальный или удаленный и указать каталог домена.



После нажатия кнопки Finish созданное соединение отобразится на виде Servers



Создадим демонстрационный проект, содержащий один сервлет и одну страницу статического контента. Данный проект должен иметь тип Dynamic Web Project. Структура каталогов проекта следующая:



Следует обратить внимание на отсутствие файла web.xml. По спецификации Java EE 6 данный файл не является обязательным.

Код сервлета предельно прост: на страницу в браузере выводится строка Hello, World. Сервлет регистрируется с помощью аннотации WebServlet, являющейся частью спецификации Servlet API версии 3.0.



Статическая страница выводит сообщение Welcome!.



После создания проекта его необходимо развернуть на сервере приложений. Для этого служит пункт Add and Remove... контекстного меню данного сервера.



В окне добавления проекта на сервер необходимо перетащить проект demo в правую колонку и нажать кнопку Finish.



Сервлет будет доступен по адресу http://localhost:7001/demo/demo, страница со статическим контентом - по адресу http://localhost:7001/demo/demo.html.





По-умолчанию приложение разворачивается только на AdminServer'е. Чтобы приложение разворачивалось на кластере, необходимо выполнить соответствующие настройки, для чего воспользоваться мастером редактирования свойств соединения с сервером приложений, доступным из пункта Properties контекстного меню данного сервера. Настройки разворачивания приложения находятся на странице WebLogic -> Publishing данного мастера. Следует поменять режим публикации на Publish as an exploded archive.



Выбрать сервера, на которые будет выполняться публикация приложения, можно на странице WebLogic -> Publishing -> Advanced. Чтобы приложение разворачивалось на кластер demo_cluster, необходимо перетащить его в правую часть поля Additional WebLogic Server instances and clusters as deployment targets.



После нажатия кнопки OK приложение начнет разворачиваться на Managed Server'ах кластера.



Если развертывание выполнено успешно, то приложение отобразится в дереве Published Modules сервера WebLogic, расположенного на виде Servers



... и будет доступно по адресу http://localhost:7003/demo/demo



... и http://localhost:7004/demo/demo.



Дополнительные материалы




З.Ы. Судя по личным впечатлениям сервер легче нежели в версии 11g. Суммарное потребление памяти тремя серверами составляет 1.8 Гб. Ждем Oracle SOA Suite 12c!.

Понравилось сообщение - подпишитесь на блог

15 комментариев:

gogi комментирует...

Отличная статья, Спасибо!!!:)

Николай Попов комментирует...

Подойдет ли эта утилита для развертывания следующей системы: нужно разместить набор установленных программ на одной из машин в сети, и через веб интерфейс иметь возможность их вызова на стороне клиента!? (пример: устанавливаем word, acrobat и выбирая из базы нужный проект, подгружается документация из БД (не важно как)и вот эту документацию надо просмотреть с помощью этих программ предустановленных на отдельной машине)

Erik комментирует...

Спасибо, очень помогло при первом запуске веблоджика!

Vash комментирует...

Статья, отличная. Но у меня возникли трудности. Я сделал все шаг в шаг, как описано в вашей статье, до момента запуска серверов. AdminServer запускается без проблем, а при запуске оставшихся двух серверов, почему-то происходит ошибка в момент
ввода логина, т.е. логин везде введен правильно но выпадает ошибка, что нельзя найти terminalio (я нашел terminalio.dll) файл, хотя он лежит на месте, я даже его на всякий случай в переменную path прописал. Все происходит в Windows 7 Ultimate service pack 1. Тоже самое делал и на виртуальной машине с той же ОС, результат аналогичен. Один раз чудом запустился AdminServer и один demo_serve1. Подскажите хотя бы в какую сторону капать.

Pavel Samolisov комментирует...

Не сталкивался с такой проблемой. Возможно не хватает памяти для загрузки библиотеки.

Попробуйте создать файл boot.properties в директории servers/SERVER/security следующего содержания:

username=ваше имя пользователя
password=пароль

тогда при запуске сервера SERVER будут использоваться данные из этого файла, а не терминала.

stepan kachan комментирует...

Здравствуйте , приходилось ли Вам когда-то работать с Oracle Coherence, если да , подскажите каким образом можно к нему подконнектиться и добавлять туда данные .

Pavel Samolisov комментирует...

Здравствуйте. С Coherence работал очень мало, в основном использовал его как кэш для OSB. Попробуйте найти книгу Oracle Coherence 3.5 Create Internet-scale applications using Oracle's high-performance data grid, там очень хорошая вводная часть про то как подготовить кластер Coherence и использовать его через интерфейс командной строки, ну и из Java конечно тоже.

stepan kachan комментирует...

Спасибо , будем искать)

Дмитрий Мартынов комментирует...

Спасибо за статью!!!

None none комментирует...

Спасибо за статью. Все отлично нашло себя, собралось и заработало. Правда при попытке запуска на сервере ловлю следующую ошибку:

10.4.4 403 Forbidden
The server understood the request, but is refusing to fulfill it. Authorization will not help and the request SHOULD NOT be repeated. If the request method was not HEAD and the server wishes to make public why the request has not been fulfilled, it SHOULD describe the reason for the refusal in the entity. This status code is commonly used when the server does not wish to reveal exactly why the request has been refused, or when no other response is applicable.

Может я упустил что-то, может эклипс web.xml неправильно генерирует, может надо роли настроить у сервера. Увы спустя несколько часов мучений я уже не знаю что может быть всему виной. Если вы случайно не знаете, может быть подскажите, какой-нибудь простой веб-сервер чтобы разобраться с SOAP и REST на живом примере. Сам сервер мне как таковой не сдался, я пишу клиент (андроид-приложение) которому надо будет использовать REST/SOAP. Еще раз спасибо за статью.

Pavel Samolisov комментирует...

Здравствуйте.

Не зная вашего приложения, очень трудно что-то сказать. Вообще, WebLogic заслуженно считается лучшим в мире сервером приложений, поэтому рекомендую все же разобраться. Если же не получается с WebLogic, то попробуйте Apache Tomcat или Jetty, но к ним придется доустанавливать библиотеки.

Если это возможно, пришлите мне свое приложение на samolisov собака гуглопочта.com, я посмотрю.

None none комментирует...

Большое спасибо за то что уделили мне время. Я скинул приложение на почту (подробности в письме). Если Weblogic действительно такой хороший, тогда мне определенно следует его освоить. Буду с нетерпением ждать вашего ответа =)

Pavel Samolisov комментирует...

Ответил вам на почту.

None none комментирует...

Читайте внимательней, кто будет использовать руководство. Я пропустил момент про "/demo/demo" и из-за этого потратил кучу времени. Ошибка 403 Forbidden возникала именно из-за того что эклипс открывал "/demo" а не "/demo/demo" страничку по умолчанию. А я даже не обратил на это внимание доверившись системе.

Большое спасибо, Pavel Samolisov, сам бы я наверно, не догадался.

Michael de Oz комментирует...

Получилось. Но приложение работает на административном сервере.
Что надо сделать что бы заработали машины (machines) и размещённые на ни сервера?

Отправить комментарий

Любой Ваш комментарий важен для меня, однако, помните, что действует предмодерация. Давайте уважать друг друга!