我已經有經驗,通過更新每個webapp的META-INF/context.xml以包含crossContext =「true」,在單獨的webapps之間轉發請求。Tomcat跨服務請求轉發?
但是,我現在有一種情況,現在我在同一個運行的tomcat中部署了webapps,但是在完全獨立的區域中。爲了詳細說明,在Tomcat中的server.xml:
- APP1使用服務名稱爲「app1Svc」有自己的連接器(允許在不同端口上運行),等於是自己的發動機,領域和主機。
- APP2也有類似的設置,與名爲「app2Svc」有自己的連接器一distince服務等
如果我運行在同一臺主機內的這些web應用,我可以通過它們的上下文派遣兩個之間的請求.xml的crossContext =「true」並獲取相關的servlet上下文來轉發請求(根據Tomcat not able to get ServletContext of another webapp)。
但是,這是可能的兩個webapps之間的派遣,基本上必須在不同的端口上運行(沒有把httpd或somesuch放在tomcat前面)?
我想這會工作,除了這意味着我會有兩個偵聽器線程佔用服務於一個請求,這不是非常優化。這也將失去已經在請求中設置的任何請求屬性(我相信這不是標準轉發的情況)。 – drobert 2012-03-29 21:33:47
是的,你必須手動傳輸一切。 – Bozho 2012-03-29 21:37:04
您可以通過RMI公開兩個Servlet的服務嗎?如果您在本地局域網上,這對於服務器間通信可能比完全成熟的HTTP請求更有效。如果您使用的是同一個JVM,那麼您還有其他的可能性,例如JNDI,或者 - 如果您以編程方式啓動服務器 - 向您公開自己的JVM範圍的服務註冊表。 – 2012-03-30 06:10:56