2011-03-23 73 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().