ModCBroker: Руководство Администратора
DocumentId:GradSoft-Cbroker-AG503-79-10.05.2000-3.3.0

Руслан Шевченко, Александр Яновец, Юлия Прокопенко

October 15, 2008

Contents

1 Введение
2 Компиляция и Инсталляция ModCBroker
 2.1 Для UNIX
  2.1.1 Необходимое ПО:
  2.1.2 Компиляция ModCbroker как DSO модуля
  2.1.3 Параметры configure
 2.2 Для Windows.NT
  2.2.1 Необходимое ПО
  2.2.2 Процесс инсталляции:
 2.3 Компиляция клиентской библиотеки clcbroker
  2.3.1 Для Unix
  2.3.2 Для Windows NT
3 Тестирование
  3.0.3 Замечание о режиме выполнения потоков ORB
4 Использование
5 Настройка
 5.1 Перечень директив
 5.2 Типичные примеры
  5.2.1 Обращение к сервлету для выдачи контента
  5.2.2 Использование сервлетов для авторизации
  5.2.3 Использование фильтров
6 Интеграция с tcl [3] [2]
7 Интеграция с mod_ssl [1]
  7.0.4 Для Unix
  7.0.5 Для Windows NT
8 Перечень изменений

1 Введение

ModCBroker – модуль Apache, обеспечивающий трансляцию WWW запросов в CORBA запросы. Модуль разрабатывается и поддерживается компанией GradSoft, дистрибутив ModCBroker в исходных кодах доступен по адресу http://www.gradsoft.kiev.ua. Версия ModCbroker, для которого написанно это руководство: 3.2.0

2 Компиляция и Инсталляция ModCBroker

2.1 Для UNIX

2.1.1 Необходимое ПО:

  1. Операционная система: Sun Solaris 2.6 или выше, Linux с ядром 2.2.0 или выше, FreeBSD версии 4.7 или выше. В принципе возможен перенос на любую posix-совместимую платформу.
  2. ORB - один из ORBacus-4.1, omniORB, TAO, MICO
  3. Apache - 2.2.3 или выше.
  4. Компилятор C++, совместимый с используемым брокером объектных запросов
  5. Make - GNU make версии 3.76 или выше.

2.1.2 Компиляция ModCbroker как DSO модуля

Необходимые предусловия:

Процесс инсталляции:

  1. Развернуть архив ModCBroker.tar.gz с помощью последовательности команд:
  2. Перейти в образовавшуюся директорию ModCBroker
  3. Запустить ./configure
    При необходимости, указать опции configure, описанные в разделе 2.1.3
  4. Запустить gmake
  5. Запустить gmake install После этого DSO модуль с именем mod_cbroker.so будет скопирован в каталог <prefix>/libexec/apache2 //
  6. Добавить в конфигурацию Apache (httpd.conf) строчку
    LoadModule cbroker_module <prefix>/libexec/apache2/mod_cbroker.so.

  7. Если необходимо, добавить туда-же строку AddModule mod_cbroker
  8. Перезапустить Apache

После этого модуль загружается при старте Apache и вы можете переходить к тестированию.

2.1.3 Параметры configure

Список всех опций конфигурации можно посмотреть с помошью команды

./configure --help

Вы можете обратиться к [4], для подробного описания механизма выбора ORB. Если что-то идет не так, можете написать нам.

2.2 Для Windows.NT

2.2.1 Необходимое ПО

  1. ORB - ORBacus-4.0.x
  2. Проинсталированный Apache, версии 2.2.3 или выше.
  3. Компилятор C++ Microsoft Visual C версии 6.0 или выше.

2.2.2 Процесс инсталляции:

  1. Развернуть архив ModCBroker.zip.
  2. Перейти в образовавшуюся директорию ModCBroker/msvc.gen
  3. Определить значения следующих nmake-переменных в файле env_inc.mak:
  4. Зайти в директорию ModCBroker/msvc.gen
  5. Запустить компиляцию, запустив make.bat
  6. Инсталлировать, набрав make install
  7. Инсталлировать библиотеку, набрав make install-dll
  8. Вписать в конфигурацию Apache (httpd.conf) строчку
    LoadModule cbroker_module modules/mod_cbroker.so

    Данная директива должна идти последней в списке директив LoadModule

2.3 Компиляция клиентской библиотеки clcbroker

Так как клиентская библиотека состоит просто из генерируемых стаб файлов, то ее можно собрать на любом компюьетере с инсталлированной ORB просто взяв файл idl/HTTP.idl, сгенерировать объектные стабы и скелетоны с помощью idl компилятора, и либо добавить их в свой проект, либо собрать в библиотеку libclcbroker.so (clcbroker для UNIX)

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

2.3.1 Для Unix

  1. Развернуть инсталляцию ModCBroker
  2. Отконфигурировать, сказав ./configure --without-apache
  3. Откомпилировать, командой make client
  4. Инсталлировать клиентскую библиотеку, командой make install-client

2.3.2 Для Windows NT

  1. Развернуть инсталляцию ModCBroker
  2. Откомпилировать, командой make client
  3. Инсталлировать командой make install-client

3 Тестирование

  1. После инсталляции ModCBroker убедитесь, что Apache работает и, впишите в конфигурацию (httpd.conf) следующий блок:
    CbrokerORBArgs -ORBInitRef NameService=corbaloc::you-host-name:10000/NameService  
    CbrokerLocation /cbroker

  2. Перезапустите httpd
  3. Запустите CORBA NameService на 10000 порт. (для ORBACUS команда: nameserv -OAport 10000)
  4. Зайдите в каталог mod-cbroker-dir/demo/HelloWorld
  5. Запустите HelloWorldServlet, указав ему имя NameService командой:
    ./HelloWorldServlet -ORBInitRef \  
              NameService=corbaloc::you-host-name:10000/NameService  
    Для TAO 1.1  
    ./HelloWorldServlet -ORBInitRef \  
              NameService=iioploc://you-host-name:10000/NameService

  6. Наберите в WWW браузере следующий URL: http://you.host.name/cbroker/Hello/Hello

3.0.3 Замечание о режиме выполнения потоков ORB

В некоторых ORB (к примеру - ORBacus), режимы выполнения потоков по умолчанию (threading mode) не поддерживают обратные вызовы (т. е. callback функции). То есть вам необходимо самомстоятельно установить режим выполнения потоков в конфигурационных параметрах ORB, в противном случае ваш клиент остановится во во время первого вызова метода HTTPStream

К примеру, для ORBacus директива CbrokerORBArgs в конфигурационном файле httpd.conf в нашем примере должна выглядеть следующим образом:

CbrokerORBArgs -ORBInitRef NameService=corbaloc::you-host-name:10000/NameService \  
   -ORBreactive -OAreactive

В то время, как для всех остальных ORB режимы потоков остаются по умолчанию:

CbrokerORBArgs -ORBInitRef NameService=corbaloc::you-host-name:10000/NameService \

4 Использование

  1. Убедиться что в конфигурации Apache2 загружается mod_cbroker.so
  2. Установите параметры конфигурации в httpd.conf (см. ??)
  3. Пользовательские программы, работающие back-end-ом для ModCBroker должны быть скомпилированны с библиотекой libclcbroker.so либо libclcbroker.a (для UNIX), clbroker.lib (для Windows NT)

5 Настройка

Настройка ModCBroker заключается в установке обработчика (вы можете установить обработку по директории), в настройке авторизации apache и, при необходимости, настройке авторизационных сервлетов, фильтров и интерфейсов со скрипт-языками.

5.1 Перечень директив

  1. CbrokerORBArgs <arguments for ORB>
  2. CbrokerLocation
  3. CbrokerDefaultServlet
  4. CbrokerDefaultHandler
  5. CbrokerAddAuthByLocation location servletName hanlderName
  6. CbrokerPrefix
  7. CbrokerSuffix
  8. CbrokerPrefix0
  9. CbrokerSuffix0
  10. CbrokerFormAuth on|off
  11. CbrokerFormAuthCookieName
  12. CbrokerFormAuthKey Ключ, в соответствии с которым кодируется выражения login:password ( в соответствии с алгоритмом blowfish)
  13. CbrokerFormAuthLoginUrl
  14. CbrokerFormAuthLogoutUrl
  15. CbrokerFormAuthAfterLogoutUrl
  16. CbrokerFormAuthLoginFormTemplate

5.2 Типичные примеры

5.2.1 Обращение к сервлету для выдачи контента
CbrokerORBArgs -ORBInitRef NameService=corbaloc::www.name.com:10000/NameService  
CbrokerLocation /cbroker

И если вам нужна авторизация, то для выделенного ресурса должна быть настроена авторизация этого ресурса, например так:

<Location /cbroker>  
AuthType Basic  
AuthName authorization  
require  valid-user  
</Location>

Этот пример говорит, что

  1. apache вызывает обработчик ModCBroker когда мы обращаемся к виртуальной директории cbroker. (т. е. когда URL запроса начинается с /cbroker )
  2. Встроенной ORB передается строка параметров инициализации:
       -ORBInitRef NameService=corbaloc::www.name.com:10000/NameService

  3. для доступа требуется авторизация. Заметим, что авторизация производится в пользовательском сервлете, хотя в конфигурации об этом ничего не сказанно.

5.2.2 Использование сервлетов для авторизации

Допустим, Вы хотите определить с помощью CORBA сервлетов доступ к определенному набору ресурсов (Web страницам либо приложению).

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

CbrokerAuthLocation  MyProtectedArea AuthServlet AuthHandler  
<Location MyProtectedArea>  
AuthType Basic  
AuthName MyResources  
require  valid-user  
</Location>

При отсуствии директив AuthType Apache будет генерировать внутреннюю ошибку.

5.2.3 Использование фильтров

ModCbroker также определеет два фильтра: CBROKER и CBROKER0. Вы можете указать использование этих фильтров при обработке файлов определенных типов с помощью команды AddOutputFilterByType. Например:

AddOutputFilterByType  CBROKER  cbhtml

6 Интеграция с tcl [3] [2]

Также можно использовать cbroker совместно со скрипт-языком. Как пример, вы можете найти в дистрибутиве, в поддиректории add_on/tcl расширение tcl, которое должно загружаться из ssh

Его надо откомпилировать как расширение Tcl, соответствующее стандарту TEA, и загрузить результирующуюю разделяемую библиотеку в секции инициализации интерпретатора. После этого можно будет пользоваться командой cbroker в скрипт-языках.

7 Интеграция с mod_ssl [1]

7.0.4 Для Unix

Начиная с Apache-2.x ничего особенного делать не надо.

  1. Установите mod_ssl
  2. Откомпилируйте и установите mod_cbroker, как обычный DSO модуль. при установке он должен быть скомпилирован с mod-ssl

7.0.5 Для Windows NT

Во первых, необходимо иметь проинсталированный apache (вер. 2.0.44 и выше).

Перед компиляцией mod_cbroker в файле env_inc.mak к переменной CFLAGS добавьте параметр /DEAPI.

Далее следуйте общим инструкциям по инсталяции.

8 Перечень изменений

References

[1]   Ralf. S. Engelschall Ben Laurie. mod_ssl home page, 1995-2001. http://www.modssl.org.

[2]   Apache Software Foundation NetCetera AG. websh home page, 2000-2002. http://tcl.apache.org/websh.

[3]   J. K. Osterhout. Tcl: An embeddable command language. pages 133–146, 1990.

[4]   Ruslan Shevchenko. corbaconf: autoconf-based package for CORBA based applications, 2000. http://corbaconf.kiev.ua.