2013-02-12 43 views
3

我是Java EE新手。我發現web.xml是許多servlet容器/應用程序服務器(如tomcat,glassfish等)使用的標準文件(部署描述符)。在許多教程中,我可以找到各種XML標記,我應該將自定義值放在某處以實現給定功能(在教程的上下文中)。但它非常混亂 - 我不知道我是否可以在spring/tomcat中重用最初用於glassfish/jsf的標記(這只是一個示例問題)。是否有一個主要的web.xml的Java EE規範,以便我可以知道可以在那裏使用的Web服務器和框架獨立使用哪些標籤?Java EE - 搜索web.xml通用規範

我讀到例如tomcat爲web.xml文件提供了一些特定的選項,所以我想每個服務器都會有不同的表現(就像web瀏覽器可以以不同的方式解釋HTML/CSS一樣) - 但是有一個主要文檔(獨立於框架)?

回答

4

通常在java世界的通用規範中稱爲JSR。例如,Servlet規範包含web.xml的定義(以及如何解釋它)。有多個Servlet版本,並且由不同的JSR-s指定。例如Servlet 2.4規範可以在這裏找到:http://jcp.org/en/jsr/detail?id=154(它被稱爲JSR-154)

我認爲該規範不允許不同的供應商使用不同的web.xml-s。他們建議在web.xml中使用其他文件。因爲Tomcat曾經是Servlets的參考實現(但不再有),我認爲tomcat對JSR非常嚴格。

眼下最新的Servlet規範是3.0(3.1即將推出)

1

我想你應該經常看有關您正在使用的應用程序服務器的文檔。

例如如果您正在使用WebSphere see this

爲WebLogic see this

有意思的是,在Servlet的3.0,你可以創建一個可以不使用部署描述符都通過使用annotations.This並不意味着WEB應用程序.xml 將不再使用。 here是關於servlet 3.0的一篇很好的文章。

2

官方規範當然是在上面提到的各種JSR中。

但是,一個方便的技巧是查看xml文件頂部的'schemaLocation'屬性。把它放在網頁瀏覽器中,你會得到包含所有標籤和註釋的XSD文檔。

在這些規範中,您還可以找到有關問題第二部分的信息。註釋提供了可以被部署描述符(web.xml)中的值覆蓋的配置,每個應用服務器品牌也可以在其自己的部署描述符中包括額外的配置信息。即。 WEB-INF/jboss-web.xml

這些供應商特定的部署描述符可能具有與web.xml相同名稱的標籤並覆蓋web.xml值。

web.xml(和其他標準部署描述符)是標準化的。供應商特定的部署描述符取決於每個應用程序服務器供應商。