<?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.
-->
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
       version="1.1" bean-discovery-mode="all">
   
   <scan>
      <exclude name="org.apache.container.impl.*"></exclude>
      <exclude name="org.apache.container.util.*"></exclude>
      <exclude name="org.apache.container.om.portlet.impl.*"></exclude>
      <exclude name="org.apache.container.om.portlet10.impl.*"></exclude>
      <exclude name="org.apache.container.om.portlet20.impl.*"></exclude>
      <exclude name="org.apache.container.om.portlet30.impl.*"></exclude>
      <exclude name="org.apache.pluto.tags.*"></exclude>
   </scan>
</beans>