2011-03-23 75 views
1

我们有一个基于Servlet/JSP的应用程序运行在AIX服务器上运行的Websphere应用程序服务器上。在客户端和以前提到的Websphere服务器上的应用程序之间还有另一台Tomcat服务器(位于另一台计算机上)。我如何在Tomcat和websphere之间建立连接?我想到的是 - 在Tomcat上部署servlet,并使用java.net.URL & URL连接将servlet连接到servlet连接。它将来自tomcat服务器的请求从客户端重定向到Websphere服务器应用程序,并根据字节流获取响应。Servlet到服务器间的servlet连接

使用此类解决方案有哪些优缺点?什么是其他选择或更好的设计选择?

+0

什么是功能要求? webapps/servlets应该做什么?为什么你会举个例子,不是只发送一个重定向到另一个webapp?只有这样我们才能提出“最好”的方法。 Websphere上的 – BalusC 2011-03-23 03:03:34

+0

应用程序基于通过tomcat服务器从客户端传递给它的参数生成特定报告。这些报告以字节流的形式传输回Tomcat服务器并转换为PDF文件。这些PDF文件在基于浏览器的客户端上发布。 – user662363 2011-03-23 03:09:52

+0

基本上,我们有两层服务器(tomcat和WAS)WAS服务器位于防火墙后面的安全区域中,出于安全原因无法直接暴露给客户端。 WAS服务器上的应用程序基于servlet。我想在TOmcat上有一个servlet来连接到WAS,在bytestream中获得响应并将其转换回PDF。任何更好的方法? – user662363 2011-03-23 03:12:41

回答

0

您可以让客户端直接将请求发送到其他服务器。因此,而不是

<form action="generatereport" method="post"> 

使用

<form action="http://other.com/generatereport" method="post"> 

任何额外的参数可以通过<input type="hidden">传递。


或者,如果支持GET,你可以代替method="get"也只是做

<a href="http://other.com/generatereport?param=foo"> 

response.sendRedirect("http://other.com/generatereport?param=foo"); 

或者,如果有一定的安全限制和/或客户端不应该知道其他服务器的URL,那么你最好的选择就是自己和他一起玩代理lp URLConnection

URLConnection connection = new URL("http://other.com/generatereport").openConnection(); 
// Copy necessary request headers from request.getHeader() to connection.setRequestProperty(). 
// If POST, copy request.getInputStream() to connection.getOutputStream() as well. 
// Copy necessary response headers from connection.getHeaderField() to response.setHeader(). 
// Finally copy connection.getInputStream() to response.getOutputStream().