是否可以在另一個內部包含/嵌入一個Java EE應用程序(war文件)?Java EE war文件
我有一個應用程序是一個門戶應用程序,我想讓其他用戶在那裏添加應用程序。爲了做到這一點,我需要一些方法來訪問我的應用程序。
這可能嗎?
是否可以在另一個內部包含/嵌入一個Java EE應用程序(war文件)?Java EE war文件
我有一個應用程序是一個門戶應用程序,我想讓其他用戶在那裏添加應用程序。爲了做到這一點,我需要一些方法來訪問我的應用程序。
這可能嗎?
您不能將WAR放入其他WAR中。您需要一個EAR文件來包含WAR,EJB等。實現WAR間通信的一種方法是將該邏輯直接打包到EAR中。這完全取決於你想要做什麼。
也許你需要一個插件系統或portlet,所以你的用戶不會開發一個戰爭應用程序,但包括他們的portlet在你的應用程序(戰爭)。有一個標準:JSR 168和幾個實現: http://developers.sun.com/portalserver/reference/techart/jsr168/
正如其他人指出的那樣,將WARs嵌入到WAR中不是一種選擇。不過,我可能會爲您解決一個問題。
我熟悉的大多數Web容器都具有「測試部署/自動部署」模式/功能,如果WAR被複制到正確的目錄中,他們將自動部署應用程序。
您的門戶應用程序當然可以允許上傳WAR,並且它可以將上傳的字節存儲在給定文件名下的給定目錄中。您的Web容器可以完成剩下的工作。然後,您可以從您的門戶鏈接到新的應用程序,或任何其他。所有這些都相對容易。
但是,請注意,如果有任何安全問題,這是一個可怕的想法。你基本上允許你的用戶在你的服務器上執行任意代碼。除非你完全相信所有的潛在用戶都是非惡意的,並且完全勝任(認爲無限循環),否則你在這裏要求很大的麻煩。
我對這件事感到不安。 (至少你確實指出了你的安全問題。) – 2008-10-07 16:18:16
做間.WAR通信的方式是通過該方法 http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/ServletContext.html#getContext(java.lang.String)
ServletContext.getContext(URIOfOtherWAR_resource)
我用這個成功地去做你在說什麼。
說明一下,EAR是其他JEE可部署軟件包(如WAR,EJB JAR等)的容器。 – skaffman 2008-10-07 14:03:02