Как получить доступ к контексту сервлета из другого приложения в JSF - PullRequest
1 голос
/ 15 февраля 2012

У нас есть два разных приложения, развернутых на разных серверах Tomcat. Одно приложение разработано с использованием технологий JSF, Spring + hibernate, а другое - с использованием простой технологии Java EE Servlets.

Приложение JSF взаимодействует с приложением Servlet для извлечения данных и вызывает сервлет, используя следующий способ из приложения JSF:

URL url = new URL(“urlofservlets”); // http://application.com/servletName

URLConnection conn = url.openConnection();

BufferedReader in = null;

try {    
    in = new BufferedReader(new InputStreamReader(conn.getInputStream()));    
    in.readLine();    
}    
catch(Exception ex) {    
  logger.error(ex);    
}

Теперь ответ сервлета отображается на странице JSF следующим образом:

<rich:modalPanel id="report_preview_modal_panel" moveable="false" minWidth="1200" minHeight="450">    
    <iframe id="report_preview_iframe" frameborder="2" src="${(rportController.reportPreviewUrl == null) ? 'about:blank' : reportController.reportPreviewUrl}" style="width:100%;height:390px;"></iframe>
</rich:modalPanel>

Тег iFrame будет отображать HTTP-ответ от сервлетов (используя URL-адрес сервлета, т.е. reportController.reportPreviewUrl содержит URL-адрес сервлета).

Теперь мы хотим реализовать вместо загрузки данных ответа http из сервлетов в теге iFrame, эти данные должны быть показаны в таблице данных JSF. Но нам нужно получить данные из ответа сервлета таким образом, чтобы JSF мог получить доступ к контексту приложения сервлета.

Таким образом, мы можем сохранить компонент в атрибуте сеанса сервлета и получить доступ к нему в приложении JSF для отображения данных в таблице данных JSF. Это возможно? Как мы можем получить контекст другого приложения (т.е. здесь из сервлета) в приложении JSF. Есть ли способ сделать это?

1 Ответ

1 голос
/ 16 февраля 2012

Вы не можете напрямую получить доступ к ServletContext с другого сервера. Однако вы, безусловно, можете выставлять объекты в другом приложении различными способами:

  • Создайте EJB в «приложении сервлета» и получите доступ к нему из «приложения JSF» с помощью удаленного интерфейса.
  • Создайте веб-сервис, используя что-то вроде REST или SOAP. Если вы используете аннотации JAXB, это можно сделать довольно чисто.
  • Пусть сервлет сериализует объекты, возвращает их аналогично тому, как вы делали выше, и десериализует их в приложении JSF.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...