我们在不同的Tomcat服务器上部署了两个不同的应用程序。一个应用程序是使用JSF,Spring + hibernate技术开发的,另一个是使用普通Java EE Servlets技术开发的。
JSF应用程序与Servlet应用程序交互以获取数据并使用以下方式从JSF应用程序调用servlet:
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页面中显示servlet响应:
<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标记将显示来自servlet的HTTP响应(使用servlet的URL,即reportController.reportPreviewUrl
包含servlet URL)。
现在我们要实现的是,不是从iFrame标记中的servlet加载http响应数据,而是必须在JSF Data表中显示数据。但是我们需要从servlet响应中获取数据,以便JSF可以访问servlet应用程序上下文。
因此,我们可以将bean存储在servlet会话属性中,并在JSF应用程序中访问它以在JSF数据表中显示数据。这可能吗?我们如何在JSF应用程序中获取不同应用程序的上下文(即来自servlet)。有没有办法做到这一点?
答案 0 :(得分:1)
您无法直接从其他服务器访问ServletContext。但是,您当然可以通过多种方式在另一个应用程序中公开对象: