Java Framework - Использование скриншота для создания разнородных серверных сред - PullRequest
2 голосов
/ 31 октября 2009

OK. Итак, у меня есть CMS, написанная на Java, которая удовлетворяет потребности нескольких сотен клиентов. Но периодически клиенту требуется специализированное приложение: например, приложение базы данных регистрации классов.

Итак, скажем, мне не хочется писать или я слишком занят. Поэтому я передаю его другим лицам, но мне не нужен его / ее код на моем сервере, потому что он / она кодирует на языке, не поддерживаемом моей серверной средой. Так что у меня есть разработчик, размещающий его на дешевом сервере где-то еще. Но я все еще хочу, чтобы приложение отображалось на главном веб-сайте моего клиента (размещенного на моей CMS) в шаблоне CMS на основном домене клиента.

Как мне этого добиться? Могу ли я использовать экранный скребок или прокси-сервер, который перехватывает запросы клиентов на моем сайте, передает их на внешний сервер, который отображает HTML, и затем я интегрирую его / ее HTML обратно в мой шаблон? Как мне поступить с последующими запросами назад и вперед в действительно интерактивном приложении?

Так вот что я хочу сделать (я думаю). Есть ли у кого-нибудь понимание или опыт такого рода вещей? Какие подводные камни? Есть ли продукты, которые делают это легко?

Ответы [ 4 ]

1 голос
/ 31 октября 2009

Напишите Фильтр , который вы настроите в своем web.xml , который перехватывает запросы, соответствующие конкретному типу, который вы хотите передать на аутсорсинг. Затем этот фильтр может использовать Commons HttpClient для выполнения фактического запроса к внешним системам. Затем вы просто перенаправили бы ответ обратно пользователю. По сути, вы создаете собственный HTTP-прокси. Вы можете даже добавить такие вещи, как оформление содержимого (например, общий заголовок, проверка SiteMesh ), безопасность, перезапись URL-адреса и т. Д. Возможно, вы захотите поддерживать кэширование, чтобы компенсировать снижение производительности прокси-запросов.

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

1 голос
/ 31 октября 2009

Один из вариантов - объединить страницы, используя WSRP . В основном это веб-служба, которая включает в себя пользовательский интерфейс потребляемой службы (портлет).

Это решит многие проблемы, с которыми вы столкнетесь (перезапись URL и т. Д.), Поэтому, вероятно, стоит взглянуть исключительно с образовательной точки зрения. Я не уверен, как обстоят дела со стеками WSRP и не Java / .Net, хотя поиск в Google предполагает, что какая-то работа продолжается.

0 голосов
/ 31 октября 2009

Вы можете посмотреть Open Social , который позволяет Google добавлять приложения на их платформы (Orkut, iGoogle и, с некоторыми расширениями, Wave). Shindig - это Java-реализация контейнера Open Social, которую вы можете использовать в качестве серверной части вашей CMS-среды Open Social.

0 голосов
/ 31 октября 2009

Создайте iframe , чтобы показать это приложение на вашей веб-странице.

...