views:

41

answers:

3

The <display-name> element appears to be a valid sub-element of the <servlet> element as per the Servlet 2.5 deployment descriptor XSD. That is, according to Eclipse's XML validator, this:

<servlet>
    <servlet-name>FooServlet</servlet-name>
    <display-name>FooServlet</display-name>
    <servlet-class>com.bar.servlet.FooServlet</servlet-class>
</servlet>

is a valid servlet-mapping, while this:

<servlet>
    <servlet-name>FooServlet</servlet-name>
    <random-tag-name>OMGWTFBBQ</random-tag-name>
    <servlet-class>com.bar.servlet.FooServlet</servlet-class>
</servlet>

is not (which seems reasonable enough).

What's the display-name actually used for? I haven't been able to dig up anything informative on it.

+1  A: 

I believe it's used primarily by J2EE web-management consoles, when displaying statistics, etc.

bosmacs
+1  A: 

The servlet-name is used to refer to the servlet in other tags (like servlet-mapping). This could be thought of as the "internal name" of the servlet. The display-name is the "external name" of the servlet - it's what should show up on a management consoles of servlet containers. Usually, web apps are managed as a unit - they are deployed/undeployed/restarted/etc. as a whole, not managing individual servlets - so there's not a place where you would usually see this display name used.

Nate
+2  A: 

The <servlet-name> is the canonical, internal name of the servlet, and is used as the key linking things like url-patterns to servlets. <display-name> is for use by admin tools and the like.

This perhaps makes more sense when you consider that the XML Schema permits multiple <display-name> elements, for various languages, e.g.

<servlet>
   <servlet-name>MyServlet</servlet-name>
   <displayable-name xml:lang="en">My Servlet</displayable-name>
   <displayable-name xml:lang="fr">Moi Servlet</displayable-name>
</servlet>

(pardon my Frenglais)

skaffman
<display-name xml:lang="de">Mein Servlet</display-name>
Michael Konietzka
+1 for `Frenglais` and `canonical`. I generally understood what the `<servlet-name>` was for (really wasn't confused about that part), but "canonical" is _the_ word to describe it.
Matt Ball