Сделайте так, чтобы локально развернутый модуль легко подключался к процессу в среде интеграции - PullRequest
1 голос
/ 20 марта 2012

Наше приложение имеет различные модули, развернутые на многих физических компьютерах. И у нас есть прокси-сервер Apache (mod_proxy), который перенаправляет запрос клиента на связанный компьютер по контекстному пути. Например: http://dev.appserver/market/doSomeThing.htm будет переслано коту, который развертывает модуль "market". И тогда обработка внутри «рыночного» модуля может вызывать сервисы других модулей также через прокси-сервер Apache для выполнения полного бизнес-процесса.

Чтобы упростить разработку разработчиков, мы хотим, чтобы некоторые запросы через Apache пересылались на локальный ПК разработчика, если содержимое сеанса их имя пользователя и имя пользователя настроены для пересылки в базу данных. Вот простой код для демонстрации идеи:

forwardProcedure 
{    

    username = getUserName(session); // ex: Alex
    contextPath = getContextPath(request); // ex: /market

    toForwardUrl = getConfiguredForwardedUrl(username, contextPath); // get from    database or whatever;
    if (isNotEmpty(toForwardUrl )){
            forwardTo(toForwardUrl) ;  // forward to local pc of developers        
    } else {
            forwardToIntegrationServer(); // as normal.
    }
}
//

Не могли бы вы дать мне представление об инструменте для настройки этого? Среда интеграции - Unix, а ПК-разработчики используют Windows.

Заранее спасибо!

1 Ответ

0 голосов
/ 20 марта 2012

Как Apache может получить сессию?Сеанс находится на сервере Tomcat, а не на Apache.

Для этого требуется внешняя программа перезаписи.То есть программа, которая читает переменную и прочее и возвращает другой URL.

Если вы действительно хотите попробовать подход с использованием внешней перезаписи, прочитайте http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritemap и выполните поиск «Программа внешней перезаписи».Используйте флаг [P] для маршрутизации в mod_proxy.

...