Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 771 | blopes | 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <!-- |
||
| 3 | Licensed to the Apache Software Foundation (ASF) under one or more |
||
| 4 | contributor license agreements. See the NOTICE file distributed with |
||
| 5 | this work for additional information regarding copyright ownership. |
||
| 6 | The ASF licenses this file to You under the Apache License, Version 2.0 |
||
| 7 | (the "License"); you may not use this file except in compliance with |
||
| 8 | the License. You may obtain a copy of the License at |
||
| 9 | |||
| 10 | http://www.apache.org/licenses/LICENSE-2.0 |
||
| 11 | |||
| 12 | Unless required by applicable law or agreed to in writing, software |
||
| 13 | distributed under the License is distributed on an "AS IS" BASIS, |
||
| 14 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||
| 15 | See the License for the specific language governing permissions and |
||
| 16 | limitations under the License. |
||
| 17 | --> |
||
| 18 | <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" |
||
| 19 | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||
| 20 | xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee |
||
| 21 | http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" |
||
| 22 | version="4.0" |
||
| 23 | metadata-complete="true"> |
||
| 24 | |||
| 25 | <description> |
||
| 26 | Servlet and JSP Examples. |
||
| 27 | </description> |
||
| 28 | <display-name>Servlet and JSP Examples</display-name> |
||
| 29 | |||
| 30 | <request-character-encoding>UTF-8</request-character-encoding> |
||
| 31 | |||
| 32 | <!-- Define example filters --> |
||
| 33 | <filter> |
||
| 34 | <filter-name>Timing Filter</filter-name> |
||
| 35 | <filter-class>filters.ExampleFilter</filter-class> |
||
| 36 | <init-param> |
||
| 37 | <param-name>attribute</param-name> |
||
| 38 | <param-value>filters.ExampleFilter</param-value> |
||
| 39 | </init-param> |
||
| 40 | </filter> |
||
| 41 | |||
| 42 | <filter> |
||
| 43 | <filter-name>Request Dumper Filter</filter-name> |
||
| 44 | <filter-class>org.apache.catalina.filters.RequestDumperFilter</filter-class> |
||
| 45 | </filter> |
||
| 46 | |||
| 47 | <filter> |
||
| 48 | <filter-name>Compression Filter</filter-name> |
||
| 49 | <filter-class>compressionFilters.CompressionFilter</filter-class> |
||
| 50 | <init-param> |
||
| 51 | <param-name>compressionThreshold</param-name> |
||
| 52 | <param-value>128</param-value> |
||
| 53 | </init-param> |
||
| 54 | <init-param> |
||
| 55 | <param-name>compressionBuffer</param-name> |
||
| 56 | <param-value>8192</param-value> |
||
| 57 | </init-param> |
||
| 58 | <init-param> |
||
| 59 | <param-name>compressionMimeTypes</param-name> |
||
| 60 | <param-value>text/html,text/plain,text/xml</param-value> |
||
| 61 | </init-param> |
||
| 62 | <init-param> |
||
| 63 | <param-name>debug</param-name> |
||
| 64 | <param-value>0</param-value> |
||
| 65 | </init-param> |
||
| 66 | </filter> |
||
| 67 | |||
| 68 | <!-- Configured to set X-FRAME-OPTIONS. Disable HSTS in case it --> |
||
| 69 | <!-- interferes with an existing setting. Keep X-Content-Type-Options --> |
||
| 70 | <!-- and X-XSS-Protection as they are page specific. --> |
||
| 71 | <filter> |
||
| 72 | <filter-name>HTTP header security filter</filter-name> |
||
| 73 | <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class> |
||
| 74 | <async-supported>true</async-supported> |
||
| 75 | <init-param> |
||
| 76 | <param-name>hstsEnabled</param-name> |
||
| 77 | <param-value>false</param-value> |
||
| 78 | </init-param> |
||
| 79 | </filter> |
||
| 80 | |||
| 81 | <!-- Define filter mappings for the timing filters --> |
||
| 82 | <!-- |
||
| 83 | <filter-mapping> |
||
| 84 | <filter-name>Timing Filter</filter-name> |
||
| 85 | <url-pattern>/*</url-pattern> |
||
| 86 | </filter-mapping> |
||
| 87 | --> |
||
| 88 | |||
| 89 | <!-- |
||
| 90 | <filter-mapping> |
||
| 91 | <filter-name>Compression Filter</filter-name> |
||
| 92 | <url-pattern>/CompressionTest</url-pattern> |
||
| 93 | </filter-mapping> |
||
| 94 | --> |
||
| 95 | |||
| 96 | <!-- |
||
| 97 | <filter-mapping> |
||
| 98 | <filter-name>Request Dumper Filter</filter-name> |
||
| 99 | <url-pattern>/*</url-pattern> |
||
| 100 | </filter-mapping> |
||
| 101 | --> |
||
| 102 | |||
| 103 | <!-- Enable header security filter for all requests --> |
||
| 104 | <filter-mapping> |
||
| 105 | <filter-name>HTTP header security filter</filter-name> |
||
| 106 | <url-pattern>/*</url-pattern> |
||
| 107 | </filter-mapping> |
||
| 108 | |||
| 109 | <!-- Define example application events listeners --> |
||
| 110 | <listener> |
||
| 111 | <listener-class>listeners.ContextListener</listener-class> |
||
| 112 | </listener> |
||
| 113 | <listener> |
||
| 114 | <listener-class>listeners.SessionListener</listener-class> |
||
| 115 | </listener> |
||
| 116 | |||
| 117 | <!-- Define listeners required by examples --> |
||
| 118 | <listener> |
||
| 119 | <listener-class>async.AsyncStockContextListener</listener-class> |
||
| 120 | </listener> |
||
| 121 | |||
| 122 | <!-- Define servlets that are included in the example application --> |
||
| 123 | |||
| 124 | <servlet> |
||
| 125 | <servlet-name>ServletToJsp</servlet-name> |
||
| 126 | <servlet-class>ServletToJsp</servlet-class> |
||
| 127 | </servlet> |
||
| 128 | <servlet> |
||
| 129 | <servlet-name>CompressionFilterTestServlet</servlet-name> |
||
| 130 | <servlet-class>compressionFilters.CompressionFilterTestServlet</servlet-class> |
||
| 131 | </servlet> |
||
| 132 | <servlet> |
||
| 133 | <servlet-name>HelloWorldExample</servlet-name> |
||
| 134 | <servlet-class>HelloWorldExample</servlet-class> |
||
| 135 | </servlet> |
||
| 136 | <servlet> |
||
| 137 | <servlet-name>RequestInfoExample</servlet-name> |
||
| 138 | <servlet-class>RequestInfoExample</servlet-class> |
||
| 139 | </servlet> |
||
| 140 | <servlet> |
||
| 141 | <servlet-name>RequestHeaderExample</servlet-name> |
||
| 142 | <servlet-class>RequestHeaderExample</servlet-class> |
||
| 143 | </servlet> |
||
| 144 | <servlet> |
||
| 145 | <servlet-name>RequestParamExample</servlet-name> |
||
| 146 | <servlet-class>RequestParamExample</servlet-class> |
||
| 147 | </servlet> |
||
| 148 | <servlet> |
||
| 149 | <servlet-name>CookieExample</servlet-name> |
||
| 150 | <servlet-class>CookieExample</servlet-class> |
||
| 151 | </servlet> |
||
| 152 | <servlet> |
||
| 153 | <servlet-name>SessionExample</servlet-name> |
||
| 154 | <servlet-class>SessionExample</servlet-class> |
||
| 155 | </servlet> |
||
| 156 | |||
| 157 | <servlet-mapping> |
||
| 158 | <servlet-name>CompressionFilterTestServlet</servlet-name> |
||
| 159 | <url-pattern>/CompressionTest</url-pattern> |
||
| 160 | </servlet-mapping> |
||
| 161 | <servlet-mapping> |
||
| 162 | <servlet-name>HelloWorldExample</servlet-name> |
||
| 163 | <url-pattern>/servlets/servlet/HelloWorldExample</url-pattern> |
||
| 164 | </servlet-mapping> |
||
| 165 | <servlet-mapping> |
||
| 166 | <servlet-name>RequestInfoExample</servlet-name> |
||
| 167 | <url-pattern>/servlets/servlet/RequestInfoExample/*</url-pattern> |
||
| 168 | </servlet-mapping> |
||
| 169 | <servlet-mapping> |
||
| 170 | <servlet-name>RequestHeaderExample</servlet-name> |
||
| 171 | <url-pattern>/servlets/servlet/RequestHeaderExample</url-pattern> |
||
| 172 | </servlet-mapping> |
||
| 173 | <servlet-mapping> |
||
| 174 | <servlet-name>RequestParamExample</servlet-name> |
||
| 175 | <url-pattern>/servlets/servlet/RequestParamExample</url-pattern> |
||
| 176 | </servlet-mapping> |
||
| 177 | <servlet-mapping> |
||
| 178 | <servlet-name>CookieExample</servlet-name> |
||
| 179 | <url-pattern>/servlets/servlet/CookieExample</url-pattern> |
||
| 180 | </servlet-mapping> |
||
| 181 | <servlet-mapping> |
||
| 182 | <servlet-name>SessionExample</servlet-name> |
||
| 183 | <url-pattern>/servlets/servlet/SessionExample</url-pattern> |
||
| 184 | </servlet-mapping> |
||
| 185 | <servlet-mapping> |
||
| 186 | <servlet-name>ServletToJsp</servlet-name> |
||
| 187 | <url-pattern>/servletToJsp</url-pattern> |
||
| 188 | </servlet-mapping> |
||
| 189 | |||
| 190 | <jsp-config> |
||
| 191 | <taglib> |
||
| 192 | <taglib-uri> |
||
| 193 | http://tomcat.apache.org/debug-taglib |
||
| 194 | </taglib-uri> |
||
| 195 | <taglib-location> |
||
| 196 | /WEB-INF/jsp/debug-taglib.tld |
||
| 197 | </taglib-location> |
||
| 198 | </taglib> |
||
| 199 | |||
| 200 | <taglib> |
||
| 201 | <taglib-uri> |
||
| 202 | http://tomcat.apache.org/example-taglib |
||
| 203 | </taglib-uri> |
||
| 204 | <taglib-location> |
||
| 205 | /WEB-INF/jsp/example-taglib.tld |
||
| 206 | </taglib-location> |
||
| 207 | </taglib> |
||
| 208 | |||
| 209 | <taglib> |
||
| 210 | <taglib-uri> |
||
| 211 | http://tomcat.apache.org/jsp2-example-taglib |
||
| 212 | </taglib-uri> |
||
| 213 | <taglib-location> |
||
| 214 | /WEB-INF/jsp/jsp2-example-taglib.tld |
||
| 215 | </taglib-location> |
||
| 216 | </taglib> |
||
| 217 | |||
| 218 | <jsp-property-group> |
||
| 219 | <description> |
||
| 220 | Special property group for JSP Configuration JSP example. |
||
| 221 | </description> |
||
| 222 | <display-name>JSPConfiguration</display-name> |
||
| 223 | <url-pattern>/jsp/jsp2/misc/config.jsp</url-pattern> |
||
| 224 | <el-ignored>true</el-ignored> |
||
| 225 | <page-encoding>ISO-8859-1</page-encoding> |
||
| 226 | <scripting-invalid>true</scripting-invalid> |
||
| 227 | <include-prelude>/jsp/jsp2/misc/prelude.jspf</include-prelude> |
||
| 228 | <include-coda>/jsp/jsp2/misc/coda.jspf</include-coda> |
||
| 229 | </jsp-property-group> |
||
| 230 | </jsp-config> |
||
| 231 | |||
| 232 | <security-constraint> |
||
| 233 | <display-name>Example Security Constraint - part 1</display-name> |
||
| 234 | <web-resource-collection> |
||
| 235 | <web-resource-name>Protected Area - Allow methods</web-resource-name> |
||
| 236 | <!-- Define the context-relative URL(s) to be protected --> |
||
| 237 | <url-pattern>/jsp/security/protected/*</url-pattern> |
||
| 238 | <!-- If you list http methods, only those methods are protected so --> |
||
| 239 | <!-- the constraint below ensures all other methods are denied --> |
||
| 240 | <http-method>DELETE</http-method> |
||
| 241 | <http-method>GET</http-method> |
||
| 242 | <http-method>POST</http-method> |
||
| 243 | <http-method>PUT</http-method> |
||
| 244 | </web-resource-collection> |
||
| 245 | <auth-constraint> |
||
| 246 | <!-- Anyone with one of the listed roles may access this area --> |
||
| 247 | <role-name>tomcat</role-name> |
||
| 248 | <role-name>role1</role-name> |
||
| 249 | </auth-constraint> |
||
| 250 | </security-constraint> |
||
| 251 | <security-constraint> |
||
| 252 | <display-name>Example Security Constraint - part 2</display-name> |
||
| 253 | <web-resource-collection> |
||
| 254 | <web-resource-name>Protected Area - Deny methods</web-resource-name> |
||
| 255 | <!-- Define the context-relative URL(s) to be protected --> |
||
| 256 | <url-pattern>/jsp/security/protected/*</url-pattern> |
||
| 257 | <http-method-omission>DELETE</http-method-omission> |
||
| 258 | <http-method-omission>GET</http-method-omission> |
||
| 259 | <http-method-omission>POST</http-method-omission> |
||
| 260 | <http-method-omission>PUT</http-method-omission> |
||
| 261 | </web-resource-collection> |
||
| 262 | <!-- An empty auth constraint denies access --> |
||
| 263 | <auth-constraint /> |
||
| 264 | </security-constraint> |
||
| 265 | |||
| 266 | <!-- Default login configuration uses form-based authentication --> |
||
| 267 | <login-config> |
||
| 268 | <auth-method>FORM</auth-method> |
||
| 269 | <realm-name>Example Form-Based Authentication Area</realm-name> |
||
| 270 | <form-login-config> |
||
| 271 | <form-login-page>/jsp/security/protected/login.jsp</form-login-page> |
||
| 272 | <form-error-page>/jsp/security/protected/error.jsp</form-error-page> |
||
| 273 | </form-login-config> |
||
| 274 | </login-config> |
||
| 275 | |||
| 276 | <!-- Security roles referenced by this web application --> |
||
| 277 | <security-role> |
||
| 278 | <role-name>role1</role-name> |
||
| 279 | </security-role> |
||
| 280 | <security-role> |
||
| 281 | <role-name>tomcat</role-name> |
||
| 282 | </security-role> |
||
| 283 | |||
| 284 | <!-- Environment entry examples --> |
||
| 285 | <!--env-entry> |
||
| 286 | <env-entry-description> |
||
| 287 | The maximum number of tax exemptions allowed to be set. |
||
| 288 | </env-entry-description> |
||
| 289 | <env-entry-name>maxExemptions</env-entry-name> |
||
| 290 | <env-entry-type>java.lang.Integer</env-entry-type> |
||
| 291 | <env-entry-value>15</env-entry-value> |
||
| 292 | </env-entry--> |
||
| 293 | <env-entry> |
||
| 294 | <env-entry-name>minExemptions</env-entry-name> |
||
| 295 | <env-entry-type>java.lang.Integer</env-entry-type> |
||
| 296 | <env-entry-value>1</env-entry-value> |
||
| 297 | </env-entry> |
||
| 298 | <env-entry> |
||
| 299 | <env-entry-name>foo/name1</env-entry-name> |
||
| 300 | <env-entry-type>java.lang.String</env-entry-type> |
||
| 301 | <env-entry-value>value1</env-entry-value> |
||
| 302 | </env-entry> |
||
| 303 | <env-entry> |
||
| 304 | <env-entry-name>foo/bar/name2</env-entry-name> |
||
| 305 | <env-entry-type>java.lang.Boolean</env-entry-type> |
||
| 306 | <env-entry-value>true</env-entry-value> |
||
| 307 | </env-entry> |
||
| 308 | <env-entry> |
||
| 309 | <env-entry-name>name3</env-entry-name> |
||
| 310 | <env-entry-type>java.lang.Integer</env-entry-type> |
||
| 311 | <env-entry-value>1</env-entry-value> |
||
| 312 | </env-entry> |
||
| 313 | <env-entry> |
||
| 314 | <env-entry-name>foo/name4</env-entry-name> |
||
| 315 | <env-entry-type>java.lang.Integer</env-entry-type> |
||
| 316 | <env-entry-value>10</env-entry-value> |
||
| 317 | </env-entry> |
||
| 318 | |||
| 319 | <!-- Async examples --> |
||
| 320 | <servlet> |
||
| 321 | <servlet-name>async0</servlet-name> |
||
| 322 | <servlet-class>async.Async0</servlet-class> |
||
| 323 | <async-supported>true</async-supported> |
||
| 324 | </servlet> |
||
| 325 | <servlet-mapping> |
||
| 326 | <servlet-name>async0</servlet-name> |
||
| 327 | <url-pattern>/async/async0</url-pattern> |
||
| 328 | </servlet-mapping> |
||
| 329 | <servlet> |
||
| 330 | <servlet-name>async1</servlet-name> |
||
| 331 | <servlet-class>async.Async1</servlet-class> |
||
| 332 | <async-supported>true</async-supported> |
||
| 333 | </servlet> |
||
| 334 | <servlet-mapping> |
||
| 335 | <servlet-name>async1</servlet-name> |
||
| 336 | <url-pattern>/async/async1</url-pattern> |
||
| 337 | </servlet-mapping> |
||
| 338 | <servlet> |
||
| 339 | <servlet-name>async2</servlet-name> |
||
| 340 | <servlet-class>async.Async2</servlet-class> |
||
| 341 | <async-supported>true</async-supported> |
||
| 342 | </servlet> |
||
| 343 | <servlet-mapping> |
||
| 344 | <servlet-name>async2</servlet-name> |
||
| 345 | <url-pattern>/async/async2</url-pattern> |
||
| 346 | </servlet-mapping> |
||
| 347 | <servlet> |
||
| 348 | <servlet-name>async3</servlet-name> |
||
| 349 | <servlet-class>async.Async3</servlet-class> |
||
| 350 | <async-supported>true</async-supported> |
||
| 351 | </servlet> |
||
| 352 | <servlet-mapping> |
||
| 353 | <servlet-name>async3</servlet-name> |
||
| 354 | <url-pattern>/async/async3</url-pattern> |
||
| 355 | </servlet-mapping> |
||
| 356 | <servlet> |
||
| 357 | <servlet-name>stock</servlet-name> |
||
| 358 | <servlet-class>async.AsyncStockServlet</servlet-class> |
||
| 359 | <async-supported>true</async-supported> |
||
| 360 | </servlet> |
||
| 361 | <servlet-mapping> |
||
| 362 | <servlet-name>stock</servlet-name> |
||
| 363 | <url-pattern>/async/stockticker</url-pattern> |
||
| 364 | </servlet-mapping> |
||
| 365 | |||
| 366 | <!-- Non-blocking IO examples --> |
||
| 367 | <servlet> |
||
| 368 | <servlet-name>bytecounter</servlet-name> |
||
| 369 | <servlet-class>nonblocking.ByteCounter</servlet-class> |
||
| 370 | <async-supported>true</async-supported> |
||
| 371 | </servlet> |
||
| 372 | <servlet-mapping> |
||
| 373 | <servlet-name>bytecounter</servlet-name> |
||
| 374 | <url-pattern>/servlets/nonblocking/bytecounter</url-pattern> |
||
| 375 | </servlet-mapping> |
||
| 376 | <servlet> |
||
| 377 | <servlet-name>numberwriter</servlet-name> |
||
| 378 | <servlet-class>nonblocking.NumberWriter</servlet-class> |
||
| 379 | <async-supported>true</async-supported> |
||
| 380 | </servlet> |
||
| 381 | <servlet-mapping> |
||
| 382 | <servlet-name>numberwriter</servlet-name> |
||
| 383 | <url-pattern>/servlets/nonblocking/numberwriter</url-pattern> |
||
| 384 | </servlet-mapping> |
||
| 385 | |||
| 386 | <!-- Server Push examples --> |
||
| 387 | <servlet> |
||
| 388 | <servlet-name>simpleimagepush</servlet-name> |
||
| 389 | <servlet-class>http2.SimpleImagePush</servlet-class> |
||
| 390 | </servlet> |
||
| 391 | <servlet-mapping> |
||
| 392 | <servlet-name>simpleimagepush</servlet-name> |
||
| 393 | <url-pattern>/servlets/serverpush/simpleimage</url-pattern> |
||
| 394 | </servlet-mapping> |
||
| 395 | |||
| 396 | <!-- Trailer examples --> |
||
| 397 | <servlet> |
||
| 398 | <servlet-name>responsetrailer</servlet-name> |
||
| 399 | <servlet-class>trailers.ResponseTrailers</servlet-class> |
||
| 400 | </servlet> |
||
| 401 | <servlet-mapping> |
||
| 402 | <servlet-name>responsetrailer</servlet-name> |
||
| 403 | <url-pattern>/servlets/trailers/response</url-pattern> |
||
| 404 | </servlet-mapping> |
||
| 405 | |||
| 406 | <welcome-file-list> |
||
| 407 | <welcome-file>index.html</welcome-file> |
||
| 408 | <welcome-file>index.xhtml</welcome-file> |
||
| 409 | <welcome-file>index.htm</welcome-file> |
||
| 410 | <welcome-file>index.jsp</welcome-file> |
||
| 411 | </welcome-file-list> |
||
| 412 | |||
| 413 | <!-- Websocket examples --> |
||
| 414 | <listener> |
||
| 415 | <listener-class>websocket.drawboard.DrawboardContextListener</listener-class> |
||
| 416 | </listener> |
||
| 417 | |||
| 418 | <error-page> |
||
| 419 | <error-code>403</error-code> |
||
| 420 | <location>/WEB-INF/jsp/403.jsp</location> |
||
| 421 | </error-page> |
||
| 422 | |||
| 423 | </web-app> |