web.xml
是一個標準的JavaEE文件,其結構在Servlet規範中有詳細記錄。在web.xml
中,您聲明瞭在本地JNDI命名空間(java:comp/env
)中已知的URL。
web.xml
應位於WAR項目結構下的WEB-INF
之內。如果您正在使用IDE(例如Eclipse)創建Web項目,則應該已經爲您創建了該文件(除非您使用Servlet規範2.5及更高版本--Servlet規範2.5包含在JavaEE 5.0中 - 其中部署描述符是可選的)。
ibm-web-bnd.xml
是一個特定於WebSphere的文件。它包含已聲明的人工產物(如URL定義)的綁定,並將其包含在真實工件中。您應該參考IBM的文檔以找出該文件的格式。
ibm-web-bnd.xml
文件應位於與web.xml
相同的目錄中。
的resource-ref
的id
屬性可以被設置爲你喜歡的任何值,只要它是交叉引用的由內部ibm-web-bnd.xml
匹配id
屬性。這就是WebSphere如何將ibm-web-bnd.xml
中的定義與web.xml
中的定義相關聯。您在教程中看到的隨機字符串由RAD或WSAD創建;你可以在那裏放置任何標識符。
編輯(補充說明)
概括地說,這個過程是這樣的:
在web.xml
,你定義本地 JNDI名稱。這將是您的Java代碼所指的URL的名稱。例如,myWebsiteUrl
。您的代碼必須在java:comp/env/myWebsiteUrl
上執行JNDI查找。定義如下:
<resource-env-ref>
<resource-env-ref-name>myWebsiteUrl</resource-env-ref-name>
<resource-env-ref-type>java.net.URL</resource-env-ref-type>
</resource-env-ref>
在WebSphere本身中,添加一個URL定義。關鍵是在WebSphere的JNDI樹中有JNDI名稱,通過它,URL將是已知的。您可以在那裏設置任何值,但建議(按慣例)以url/
爲前綴。例如:url/test
。
在ibm-web-bnd.xml
中,您需要將myWebsiteUrl
(由您的應用程序查找)綁定到url/test
(這是WebSphere知道URL的JNDI名稱)。定義將是沿着線:
<resource-env-ref name="myWebsiteUrl" binding-name="url/test"/>
步驟3不是必需的。如果ibm-web-bnd.xml
在部署時不存在,則基於GUI的部署流(在通過WAS管理控制檯部署應用程序時使用)將提示您輸入綁定值。 (如果您正在使用腳本部署,你仍然可以省略ibm-web-bnd.xml
文件,只要你指定一個不同的方式綁定,但這已經超出了這個答案的範圍。閱讀IBM文檔有關戰略文件和AdminApp.installApplication
)
注意:只要您使用JavaEE 5.0及更高版本,則不需要定義中的id
屬性。順便說一下,你閱讀的文章非常過時。
嗨,艾薩克。感謝您的回覆!您可以教我如何設置WebSphere以使用JNDI嗎?我沒有JNDI的背景,這是我第一次創建URL資源,所以我想我誤解了一些東西。 – Arci
根據我的理解,爲了使用JNDI,我需要在WebSphere上設置URL資源,其中我需要在鍵值對中聲明URL(例如,url1 = http://www.website.com/url1)。該密鑰將在Web應用程序中使用,其中它可以以'java:comp/env/key'格式引用。根據我在教程中理解的內容,我需要設置WebSphere的web.xml和ibm-web-bnd.xml,而不是WAR的web.xml和ibm-web-bnd.xml。或者,教程是否引用了我的WAR文件的XML?如果是這樣,那麼我可以在哪裏設置WebSphere上我的URL的值? – Arci
編輯答案。 – Isaac