<?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.
-->
<Server port="-1">
  <!--APR library loader. Documentation at /docs/apr.html -->
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
  <!-- Prevent memory leaks due to use of particular java/javax APIs-->
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  <Listener className="org.eclipse.virgo.web.tomcat.support.ServerLifecycleLoggingListener"/>
  <Listener className="org.apache.catalina.security.SecurityListener" />

  <Service name="Catalina">
    <Connector address="127.0.0.1" port="8080"
               protocol="org.apache.coyote.http11.Http11NioProtocol"
               connectionTimeout="20000" enableLookups="false" redirectPort="8443" />

<!--    <Connector address="0.0.0.0" port="8443"-->
<!--               protocol="org.apache.coyote.http11.Http11NioProtocol"-->
<!--               sslImplementationName="org.apache.tomcat.util.net.jsse.JSSEImplementation"-->
<!--               SSLEnabled="true" scheme="https" secure="true" -->
<!--               enableLookups="false" maxThreads="150">-->

<!--      <SSLHostConfig hostName="_default_"-->
<!--                     protocols="TLSv1.2" sslProtocol="TLSv1.2"-->
<!--                     honorCipherOrder="true"-->
<!--                     ciphers="EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA:EECDH:EDH+AESGCM:EDH:ECDH+AESGCM:ECDH+AES:ECDH:HIGH:MEDIUM:!RC4:!3DES:!CAMELLIA:!SEED:!aNULL:!MD5:!eNULL:!LOW:!EXP:!DSS:!PSK:!SRP"-->
<!--                     certificateVerification="none">-->
<!--        <Certificate type="RSA"-->
<!--                     certificateKeystoreFile="configuration/keystore"-->
<!--                     certificateKeystorePassword="changeit"-->
<!--                     certificateKeystoreType="JKS"/>-->
<!--      </SSLHostConfig>-->

<!--    </Connector>-->

    <!-- 
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" enableLookups="false" />
    -->

    <Engine name="Catalina" defaultHost="localhost">
<!--      <Realm className="org.apache.catalina.realm.JAASRealm" appName="virgo-kernel"-->
<!--             userClassNames="org.eclipse.virgo.nano.authentication.User"-->
<!--             roleClassNames="org.eclipse.virgo.nano.authentication.Role"/>-->

      <Host name="localhost" appBase="work"
            unpackWARs="false" autoDeploy="false"
            deployOnStartup="false" createDirs="false">

        <Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false"/>
        
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="serviceability/logs/access"
               prefix="localhost_access" suffix=".log" 
               pattern="%t %h %u %H %m %U %s %D %b"/>

        <Valve className="org.eclipse.virgo.web.tomcat.support.ApplicationNameTrackingValve"/>
      </Host>
    </Engine>
  </Service>
</Server>
