<?xml version="1.0" encoding="UTF-8"?>
<!--
 ***************************************************************************************************************************
 * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *
 * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *
 * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *
 * with the License.  You may obtain a copy of the License at                                                              *
 *                                                                                                                         *
 *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *
 *                                                                                                                         *
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an  *
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
 * specific language governing permissions and limitations under the License.                                              *
 ***************************************************************************************************************************
-->
<web-app 
	version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
		 
	<servlet>
		<servlet-name>sample</servlet-name>
		<servlet-class>org.apache.juneau.server.samples.RootResources</servlet-class>
	</servlet>
	<servlet>
		<servlet-name>test</servlet-name>
		<servlet-class>org.apache.juneau.server.samples.test.Root</servlet-class>
	</servlet>
	<servlet>
		<servlet-name>testuris</servlet-name>
		<servlet-class>org.apache.juneau.server.samples.test.TestUris</servlet-class>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>sample</servlet-name>
		<url-pattern>/*</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>test</servlet-name>
		<url-pattern>/test/*</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>testuris</servlet-name>
		<url-pattern>/testuris/*</url-pattern>
	</servlet-mapping>
</web-app>
