<?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 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"
	version="2.4">

	<description>Embedded Vysper</description>

	<listener>
		<listener-class>org.apache.vysper.xmpp.exemples.embeddedwar.VysperListener</listener-class>
	</listener>

<!-- 
	Only works when deployed on Jetty. 
	<servlet>
		<servlet-name>WebSocket Servlet</servlet-name>
		<servlet-class>org.apache.vysper.xmpp.extension.websockets.XmppWebSocketServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>WebSocket Servlet</servlet-name>
		<url-pattern>/ws</url-pattern>
	</servlet-mapping>
 -->
	<servlet>
		<servlet-name>Status</servlet-name>
		<servlet-class>org.apache.vysper.xmpp.exemples.embeddedwar.StatusServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>Status</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

</web-app>