Разработка ПО при помощи технологий Java и PHP в AIX 5.3: Часть 1. Настройка Java-среды

В первой статье из этого цикла рассматриваются вопросы интеграции Java и PHP в AIX и кратко освещается приложение, реализующее подобную интеграцию, а затем подробно рассматривается установка Java-среды и сервера Apache Tomcat.

Дуг Монро, консультант по системному администрированию, DMA Inc.

Дуг Монро (Doug Monroe) работает консультантом и преподавателем по системному администрированию UNIX в DMA Inc. Он обладает степенью бакалавра компьютерных наук, полученной в Университете штата Орегон (Oregon State University), и обеспечивает поддержку различных UNIX-систем с 1984 года. Связаться с ним можно по электронной почте monroe@sqnt.com.



Мартин Браун, внештатный автор, консультант

Мартин Браун (Martin Brown) пишет статьи уже более семи лет. Он является автором многочисленных книг и статей по различным темам. Его квалификация охватывает множество платформ и языков разработки - Perl, Python, Java™, JavaScript, Basic, Pascal, Modula-2, C, C++, Rebol, Gawk, Shellscript, Windows®, Solaris, Linux, BeOS, Mac OS X и т.д., а также Web-программирование, системное управление и интеграция. Мартин является внутренним экспертом (SME) компании Microsoft® и регулярно пишет для ServerWatch.com, LinuxToday.com и IBM developerWorks. Он также принимает участие в блогах Computerworld, The Apple Blog и на других сайтах. Связаться с ним можно через его Web-сайт.



10.04.2008

Введение

PHP является ведущим языком для Web-разработки, а язык программирования Java™ широко используется при разработке бизнес-приложений, поэтому для использования сильных сторон каждого языка в ОС AIX® Version 5.3 был разработан мост PHP Java Bridge. Цель этого цикла статей - познакомить разработчиков приложений для AIX 5.3 с возможностями интегрирования технологий Java и PHP для создания интернет-приложений.

Мы будем следовать перечисленным ниже типичным этапам разработки ПО и создадим простое приложение для анкетирования:

  • разработаем основное Java-приложение;
  • расширим Java-приложение до Web-приложения с помощью сервлетов Java;
  • добавим поддержку возможности хранения информации в базе данных;
  • представим исходное приложение в качестве Web-сервиса и создадим PHP-интерфейс к этому приложению;
  • повторно разработаем PHP-интерфейс с использованием специального компонента PHP Java Bridge.

Этот цикл статей состоит из 6 частей:

  • Часть 1 рассматривает приложение и настраивает среду для создания Java-приложений и поддержки Java Web-приложений при помощи Tomcat.
  • Часть 2 охватывает основной код приложения и разработку простого Java-сервлета для предоставления Web-интерфейса к информации.
  • Часть 3 связывает основное приложение с базой данных DB2® для хранения запросов и ответов.
  • Часть 4 преобразует исходное приложение в приложение, доступ к которому осуществляется как к Web-сервису и которое являет собой основу PHP-интерфейса.
  • Часть 5 затрагивает создание PHP-интерфейса к Java-приложению при помощи PHP Java Bridge.
  • Часть 6 реконструирует приложение для использования PHP Java Bridge вместо интерфейса Web-сервиса.

Совместное использование технологий PHP и Java

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

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

Те же проблемы могут возникнуть даже при разработке нового приложения: эксперты разработки Web-приложений пользуются средой, такой как PHP, а разработчики бизнес-приложений специализируются на Java-технологиях. Также полезно воспользоваться преимуществом гибкости, предоставляемой различными средами. PHP позволяет очень быстро создавать прикладные прототипы Web-приложений, а достаточно вольное комбинирование HTML-разметки и встроенных команд PHP позволяет легко разрабатывать Web-интерфейсы.

Хотя Java-платформа полностью приспособлена для разработки Web-приложений, использующих Java Server Pages (JSP), а платформенно-зависимые решения (native solution), такие как Struts, приспособлены для развертывания объектов HTML, Java также часто используется для создания основной логики работы приложения в больших программных продуктах. Из-за сильной типизации и стандартизации внутри Java-платформы она часто оказывается более удобной для разработки сложных бизнес-приложений.

Выход в том, чтобы применять подход, который позволяет использовать оба решения для различных частей приложения - основной логики работы программы и интерфейса взаимодействия с ней, используя технологии Java и PHP с интерфейсом между ними для обмена информацией.

Не существует никакой удобной связи между технологиями Java и PHP, так как они являются двумя различными технологиями, использующими разную логику работы, двоичные файлы и среды развертывания. Единственным способом, благодаря которому можно заставить взаимодействовать обе системы, является применение сервис-ориенторованной архитектуры (Service-Oriented Architecture, SOA) и Web-сервисов для обмена информацией. В этом случае будет организовано взаимодействие с Java-приложением через набор Web-сервисов. PHP-приложение тогда будет работать как клиент Web-сервиса, предназначенного для взаимодействия с интерфейсами Web-сервисов Java-приложения.

Другой альтернативой является применение PHP Java Bridge, который предоставляет прямой объектный интерфейс, позволяющий одновременно использовать Java- и PHP-код внутри одного приложения.

В этом цикле статей и учебных курсов будет подробно объяснено, как можно разрабатывать Java-приложения для последующего расширения путем создания PHP-интерфейса к коду Java.

Создание приложения для анкетирования

В этом цикле статетй в качестве примера рассматривается создание простой системы анкетирования, которая задает ряд вопросов, собирает ответы, а затем осуществляет их статистический анализ.

Логика приложения для реализации опросов запрограммирована на Java с использованием базового класса для анкетирования. Нами также будет создан один класс (который хранит основные данные по вопросам), который можно использовать в качестве родителя для других классов, реализующих поддержку ответов различных типов (множественный выбор, текстовая запись, рейтинг и прочее). Структура базового класса для анкетирования показана на рисунке 1.

Рисунок 1. Основные классы приложения для анкетирования
Основные классы приложения для анкетирования

Для доступа к приложению через Web-интерфейс необходимо создать Java-сервлет, который расширяет исходные классы вопросов, поддерживает возможность вывода вопроса как HTML и получает ответы. Структуру этого элемента можно увидеть на рисунке 2.

Рисунок 2. Расширение приложения для анкетирования до Web-сервиса на базе Java
Дополнение приложения для анкетирования до Web-сервиса на основе Java

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

Для создания PHP-интерфейса в системе необходимо адаптировать приложение при помощи Java так, чтобы оно работало как Web-сервис, к которому можно получить доступ из PHP-приложения для обеспечения альтернативного интерфейса. Финальным этапом является повторное развертывание приложения с использованием PHP Java Bridge для обеспечения максимума производительности системы.

Для выполнения первых двух шагов - разработки основного приложения и последующего развертывания приложения как Java-сервлета - необходимо инсталлировать язык программирования Java и сервер Apache Tomcat - среду выполнения сервлетов Java. Начнем с инсталляции и настройки языка Java.

Инсталляция языка программирования Java

Необходимо инсталлировать Java Software Development Kit (SDK) версии 5 или более поздней, а также необходима среда разработки (а не выполнения), поскольку нужно будет скомпилировать исходный код Java в классы, требующиеся для работы базовой части тестового приложения.

32-битная версия Java V1.4 SDK доступна на инсталляционном диске AIX Version 5.3, и, возможно, она уже установлена на используемой системе, поскольку она требуется для работы WebSM. Проверить это можно командой lslpp -L Java14.sdk. 64-битная версия Java 5 SDK доступна на сайте IBM developerWorks (см. раздел Ресурсы). Кроме того, что данный релиз SDK является более свежим, 64-битные приложения работают более эффективно на 64-битном аппаратном обеспечении с 64-битным ядром. Для установки:

  1. Загрузим файл Java5_64.sdk.tar.gz.
  2. Извлечем SDK при помощи команды gunzip -c Java5_64.sdk.tar.gz | tar -xvf -.
  3. Под учетной записью root установим, используя команду: installp -a -d Java5_64.sdk all.

Или с помощью утилиты SMIT:

  1. Выполним smitt install.
  2. Выберем Install and Update Software.
  3. Выберем Install Software.
  4. Зададим полный путь к файлу, содержащему образ (например, /usr/local/src/Java4_64.sdk).
  5. Нажмем OK.
  6. Нажмем OK и SDK будет установлена.

Инсталляция Tomcat

Apache Tomcat предоставляет платформу для выполнения JSP. Apache Tomcat можно использовать для развертывания Java-приложений с использованием Web-интерфейса или для того, чтобы обеспечить работу Web-сервисов. В этом цикле статей технология Java будет использоваться сначала как платформа для Java-сервисов, а позже - как решение для разработки кросс-платформенного (Java и PHP) ПО.

Возможно, Tomcat является самым простым компонентом системы для установки и развертывания. Поскольку Tomcat является Java-приложением, его легко инсталлировать и настроить после установки языка Java.

Для установки Tomcat:

  1. Загрузим последнюю версию пакета программ Tomcat (см. раздел Ресурсы). На момент создания этой статьи самым последним стабильным релизом Apache Tomcat была версия 6.0.10.
  2. Распакуем модуль Tomcat используя tar и gunzip или unzip: $ gunzip -c apache-tomcat-6.0.10.tar.gz|tar xvf -.
  3. Переместим извлеченный каталог в место, где планируется установить Tomcat, но при этом не следует переименовывать каталог, который был создан. Например: $ mv apache-tomcat-6.0.10 /usr/local.
  4. Создадим символьную ссылку между фактическим каталогом и именем, которое будет использовать. Это позволит в будущем легко обновить Tomcat до последней версии: $ ln -s /usr/local/apache-tomcat-6.0.10 /usr/local/tomcat.

Поскольку Tomcat является Java-приложением, не требуется никаких дальнейших дополнительных шагов для инсталляции или сборки. Итак, теперь мы можем инсталлировать и запустить Tomcat.

Структура каталогов Tomcat

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

  • LICENSE
  • NOTICE
  • RELEASE-NOTES
  • RUNNING.txt
  • bin/
  • conf/
  • lib/
  • logs/
  • temp/
  • webapps/
  • work/

Ключевые каталоги Tomcat:

  • Каталог bin содержит главные сценарии и приложения, которые контролируют и запускают Tomcat. Каталог содержит сценарии оболочки, платформенно-зависимые Windows®-приложения и командные файлы Windows. Для сценариев оболочки в этом каталоге необходимо выполнить команду chmod, чтобы убедиться в возможности запуска, остановки и управления Tomcat: $ chmod ugo+x bin/*.sh.
  • В каталоге conf находятся файлы, которые содержат конфигурационную информацию Tomcat. После первичной настройки Tomcat едва ли понадобится менять эти файлы, поскольку большую часть инсталляции и развертывания системы можно контролировать через Web-интерфейс Tomcat.
  • Каталог lib содержит библиотеки и Java-код, который составляет Java-систему.
  • Каталог logs автоматически создается Tomcat-сервером, когда тот устанавливается, и содержит файлы журналов сообщений (включая сообщения об ошибках).
  • Каталог temp автоматически создается Tomcat-сервером после его установки и содержит любые временные файлы.
  • Каталог webapps - место, куда надо устанавливать компоненты Web-приложения. Можно устанавливать JAR-файлы, WAR-файлы, файлы JSP, которые составляют приложение. По умолчанию в этом каталоге хранится документация, примеры и программы для управления системой Tomcat.
  • Каталог work содержит работающие компоненты выполняемого приложения и автоматически создается Tomcat во время его выполнения.

Теперь давайте рассмотрим конфигурацию Tomcat, поскольку, возможно, придется скорректировать некоторые части конфигурации для соответствия Tomcat используемой среде.

Конфигурация сервера Tomcat

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

Тем не менее может понадобиться настроить некоторые ключевые элементы. По умолчанию Web-сервер работает на TCP/IP с номером порта 80, поэтому для предотвращения конфликтов Tomcat выполняется на порте с номером 8080, но на некоторых серверах этот порт может использоваться другим приложением, например Web-прокси.

Можно изменить порт по умолчанию, который использует Tomcat, отредактировав файл conf/server.xml. Для этого необходимо найти блок Connector внутри службы Catalina: обычно он находится в первых 50 строках файла. Пример приведен в листинге 1 ниже.

Листинг 1. Блок Connector
<Service name="Catalina">

    <!-- A "Connector" represents an endpoint by which requests are received
         and responses are returned. Documentation at :
         Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
         Java AJP  Connector: /docs/config/ajp.html
         APR (HTTP/AJP) Connector: /docs/apr.html
         Define a non-SSL HTTP/1.1 Connector on port 8080
    -->
    <Connector port="8080" protocol="HTTP/1.1"
               maxThreads="150" connectionTimeout="20000"
               redirectPort="8443" />

Изменим значение параметра port на номер порта, который будет использовать Tomcat. При необходимости можно также настроить параметр redirectPort, который содержит номер порта, использующийся для соединений с Secure Sockets Layer (SSL). При изменении этого значения нужно убедиться, что вы соответствующим образом изменили спецификацию порта для SSL-соединения, как показано в листинге 2.

Листинг 2. Изменение спецификации порта
<!-- Define a SSL HTTP/1.1 Connector on port 8443
     This connector uses the JSSE configuration, when using APR, the
     connector should be using the OpenSSL style configuration
     described in the APR documentation -->
<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
           maxThreads="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" />
-->

Если необходимо обеспечить поддержку сервиса на определенных хостах сервера, у которых нескольких сетевых интерфейсов или адресов, надо изменить соответствующий блок в файле. Данное изменение вносится дважды: сначала внутри тега Engine, а затем внутри выбранного тега Host, как показано в листинге 3.

Листинг 3. Изменение настроек, связанных с именем хоста
<Engine name="Catalina" defaultHost="localhost">

...

      <!-- Define the default virtual host
           Note: XML Schema validation will not work with Xerces 2.2.
       -->
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

Необходимо сначала изменить defaultHost а затем изменить соответствующий параметр name.

Другим файлом, на который следует обратить внимание, является conf/web.xml. Пока не нужно его редактировать, но будет неплохо ознакомиться с его содержанием, поскольку редактирование этого файла может понадобиться при настройке дополнительных приложений на Tomcat-сервере.

Запуск Tomcat

После того как Tomcat был инсталлирован и настроен, можно попробовать его запустить. Сначала убедимся, что значение переменной среды JAVA_HOME соответствует каталогу, в который была установлена Java-платформа. Если была установлена Java5_64, то место ее установки соответствует /usr/java5_64 (см. листинг 4).

Листинг 4. Каталог инсталляции Java
$ JAVA_HOME=/usr/java5_64
$ export JAVA_HOME

При желании можно явно определить путь к исполняемым файлам Java-платформы в переменной PATH, как показано в листинге 5.

Листинг 5. Добавление Java-платформы к PATH
$ PATH=$JAVA_HOME/bin:$JAVA_HOME/rje/bin:$PATH
$ export PATH

В переменной среды PATH дополнительно можно указать путь к серверу Tomcat, чтобы было проще его обнаружить (см. листинг 6).

Листинг 6. Назначение пути к Tomcat
$ CATALINA_HOME=/usr/local/tomcat
$ export CATALINE_HOME

Теперь можно запускать Tomcat при помощи предусмотренных для этого сценариев оболочки. Сценарий запуска выводит конфигурационную информацию (см. листинг 7).

Листинг 7. Сценарий запуска Tomcat
$ $CATALINA_HOME/bin/startup.sh
Using CATALINA_BASE:   /Data/Incoming/apache-tomcat-6.0.10
Using CATALINA_HOME:   /Data/Incoming/apache-tomcat-6.0.10
Using CATALINA_TMPDIR: /Data/Incoming/apache-tomcat-6.0.10/temp
Using JRE_HOME:       /usr/java5_64

Если были выведены сообщения о каких-то ошибках, то, возможно, понадобиться проверить более подробный файл журнала logs/catalina.out. Пример выводимых данных показан в листинге 8.

Листинг 8. Журнал catalina.out
Mar 31, 2007 8:51:11 AM org.apache.catalina.core.AprLifecycleListener init
INFO: The Apache Tomcat Native library which allows optimal performance in production
environments was not found on the java.library.path: /usr/local/lib:/u
sr/local/apr/lib:.:/usr/java5/extensions:/usr/java5/lib
Mar 31, 2007 8:51:13 AM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
Mar 31, 2007 8:51:13 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 5262 ms
Mar 31, 2007 8:51:13 AM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Mar 31, 2007 8:51:13 AM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.10
Mar 31, 2007 8:51:23 AM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
Mar 31, 2007 8:51:23 AM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
Mar 31, 2007 8:51:23 AM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/34  config=null
Mar 31, 2007 8:51:23 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 10466 ms

Этот файл должен содержать более подробную информацию об ошибках в процессе запуска. Самой распространенной проблемой является конфликт портов с уже существующим сервисом или отсутствие Java-среды.

Проверка установки

Простейшим способом проверить инсталляции Tomcat является открытие страницы сервера Tomcat при его запуске. Если номер порта не был изменен и на сервере установлен браузер, то нужно открыть адрес: http://localhost:8080/.

Если Tomcat-сервер инсталлирован на другой машине или был изменен номер порта, тогда нужно заменить значения localhost и 8080 в примере выше. Например: http://192.168.0.170:8080/.

Пример результата этой команды показан на рисунке 3.

Рисунок 3. Работающий сервер Tomcatt
Работающая сервер Tomcat

Заключение

В этой статье были кратко рассмотрены проблемы, связанные с разработкой и развертыванием в AIX приложений, основанных на технологии PHP и Java, и некоторые решения, позволяющие интегрировать эти две технологии. Также было рассмотрено приложение с прикладной частью, реализованной на Java, и классами для поддержки различных операций, которые будут расширены через сетевые интерфейсы с использованием PHP. В следующей части этого цикла статей с помощью Java будет разработана основная логика приложения.

Ресурсы

Научиться

Получить продукты и технологии

  • Пробное программное обеспечение от IBM: ознакомительные версии программного обеспечения для разработчика, которые можно загрузить со страницы developerWorks.
  • Tomcat: последняя версия этого пакета.
  • Java 5 64-bit SDK: для загрузки этого пакета необходимо зарегистрироваться (регистрация бесплатная).
  • Mozilla: Web-браузер Mozilla для ОС AIX можно загрузить с сайта IBM.

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=AIX и UNIX, Open source, Технология Java
ArticleID=300509
ArticleTitle=Разработка ПО при помощи технологий Java и PHP в AIX 5.3: Часть 1. Настройка Java-среды
publish-date=04102008