<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<!--
        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>
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/classes/log4j.properties</param-value>
    </context-param>
    <listener>
        <!-- this class setups the encryption key for the session-->
        <listener-class>org.apache.juddi.adminconsole.StartupServlet</listener-class>
    
    </listener>
    <servlet>
        <servlet-name>RegistryServlet</servlet-name>
        <display-name>Registry Servlet</display-name>
        <servlet-class>org.apache.juddi.servlets.RegistryServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
 
 
    <servlet>
        <servlet-name>UDDIReplicationWS</servlet-name>

        <servlet-class>org.jboss.wsf.stack.cxf.CXFServletExt</servlet-class>
        <init-param>
            <param-name>jboss.ws.endpoint</param-name>
            <param-value>org.apache.juddi.api.impl.UDDIReplicationImpl</param-value>

        </init-param>
    </servlet>

  
    <servlet-mapping>
        <servlet-name>UDDIReplicationWS</servlet-name>
        <url-pattern>/services/replication/*</url-pattern>
    </servlet-mapping>
  
  
    <security-constraint>
        <display-name>jUDDI Replication content</display-name>
        <web-resource-collection>
            <web-resource-name>admin</web-resource-name>
            <url-pattern>/*</url-pattern>
          
          
        </web-resource-collection>
        <auth-constraint>
            <role-name>replication</role-name>
        </auth-constraint>
        <!-- uncomment to require SSL -->
        <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
      
    </security-constraint>
    <login-config> 
        <auth-method>CLIENT-CERT</auth-method> 
        <!-- you should consider NOT using BASIC is favor of something more secure, see your web app servers documentation for details -->
        <realm-name>Apache jUDDI - Make sure you're using HTTPS!</realm-name> 
    </login-config> 
    <security-role>
        <role-name>replication</role-name>
    </security-role>
</web-app>
  
