<?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.
-->
<!-- edited with XMLSPY v5 rel. 4 U (http://www.xmlspy.com) by peter lin (consultant) -->
<!--W3C Schema generated by XMLSPY v5 rel. 4 U (http://www.xmlspy.com)-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
	<xs:complexType name="connector">
		<xs:sequence>
			<xs:element name="threadInfo" type="threadInfo"/>
			<xs:element name="requestInfo" type="requestInfo"/>
			<xs:element name="workers" type="workers"/>
		</xs:sequence>
		<xs:attribute name="name" type="xs:string" use="required"/>
	</xs:complexType>
	<xs:complexType name="jvm">
		<xs:sequence>
			<xs:element name="memory" type="memory"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="memory">
		<xs:attribute name="free" type="xs:long" use="required"/>
		<xs:attribute name="total" type="xs:long" use="required"/>
		<xs:attribute name="max" type="xs:long" use="required"/>
	</xs:complexType>
	<xs:complexType name="requestInfo">
		<xs:attribute name="maxTime" type="xs:long" use="required"/>
		<xs:attribute name="processingTime" type="xs:int" use="required"/>
		<xs:attribute name="requestCount" type="xs:long" use="required"/>
		<xs:attribute name="errorCount" type="xs:long" use="required"/>
		<xs:attribute name="bytesReceived" type="xs:long" use="required"/>
		<xs:attribute name="bytesSent" type="xs:long" use="required"/>
	</xs:complexType>
	<xs:element name="status">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="jvm" type="jvm"/>
				<xs:element name="connector" type="connector"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="threadInfo">
		<xs:attribute name="maxThreads" type="xs:int" use="required"/>
		<xs:attribute name="minSpareThreads" type="xs:int" use="required"/>
		<xs:attribute name="maxSpareThreads" type="xs:int" use="required"/>
		<xs:attribute name="currentThreadCount" type="xs:int" use="required"/>
		<xs:attribute name="currentThreadsBusy" type="xs:int" use="required"/>
	</xs:complexType>
	<xs:complexType name="worker">
		<xs:attribute name="stage" type="xs:string" use="required"/>
		<xs:attribute name="requestProcessingTime" type="xs:int" use="required"/>
		<xs:attribute name="requestBytesSent" type="xs:long" use="required"/>
		<xs:attribute name="requestBytesRecieved" type="xs:long" use="required"/>
		<xs:attribute name="remoteAddr" type="xs:string" use="required"/>
		<xs:attribute name="virtualHost" type="xs:string" use="required"/>
		<xs:attribute name="method" type="xs:string" use="required"/>
		<xs:attribute name="currentUri" type="xs:string" use="required"/>
		<xs:attribute name="currentQueryString" type="xs:string" use="required"/>
		<xs:attribute name="protocol" type="xs:string" use="required"/>
	</xs:complexType>
	<xs:complexType name="workers">
		<xs:sequence>
			<xs:element name="worker" type="worker"/>
		</xs:sequence>
	</xs:complexType>
</xs:schema>
