Oracle XE 11g (ORA-12514: TNS:listener does not currently know of service requested in connect descriptor )
In a comment you said your web.xml contains:

&lt;init-param&gt;
 &lt;param-name&gt;DatabaseConnectionString&lt;/param-name&gt;
 &lt;!-- The string "${USER}" in the connection string will be replaced
      by the active username when making a connection. --&gt;
 &lt;param-value&gt;
  &lt;!--jdbc:hsqldb:mem:${USER}--&gt;
  &lt;!--jdbc:oracle:thin:@127.0.0.1:1521:xe/${USER}--&gt;
  jdbc:oracle:thin:@localhost:1521
 &lt;/param-value&gt;
&lt;/init-param&gt;


The connection string you showed at the top of the question is commented out, so you're actually connecting with jdbc:oracle:thin:@localhost:1521. That isn't supplying a service name; but your listener.ora does have DEFAULT_SERVICE_LISTENER = (XE), so this should be the equivalent of jdbc:oracle:thin:@localhost:1521/XE. (I've tested this with 11gR2 EE and the parentheses around the XE in the listener.ora don't seem to matter).

But that doesn't quite seem to work as expected. When you changed that and set the user name explicitly:

jdbc:oracle:thin:system/system@//localhost:1521/XE


... the TNS-12514 went away and was replaced with an ORA-01017, invalid username/password. That means the connection string is now working and your system account's password is something other than system. With a valid username and password it looks like it should now work.

If the ${USER} substitution works as the comment in the web.xml suggests, and contains both the username and password, then making your connection string look like this ought to work:

jdbc:oracle:thin:${USER}@//localhost:1521/XE


But only if ${USER} is actually a valid username/password string.