<?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://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:ctx="http://www.springframework.org/schema/context"
       xmlns:osgi="http://www.springframework.org/schema/osgi"
       xmlns:osgix="http://www.springframework.org/schema/osgi-compendium"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="
  http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans.xsd
  http://www.springframework.org/schema/context
  http://www.springframework.org/schema/context/spring-context.xsd
  http://www.springframework.org/schema/util
  http://www.springframework.org/schema/util/spring-util.xsd
  http://www.springframework.org/schema/osgi
  http://www.springframework.org/schema/osgi/spring-osgi.xsd
  http://www.springframework.org/schema/osgi-compendium
  http://www.springframework.org/schema/osgi-compendium/spring-osgi-compendium.xsd">

    <!-- MBeanServer bean -->
    <bean id="mbeanServerFactory" class="org.apache.felix.karaf.management.MBeanServerFactory" init-method="init" destroy-method="destroy">
        <property name="locateExistingServerIfPossible" value="true"/>
    </bean>
    <bean id="mbeanServer" factory-bean="mbeanServerFactory" factory-method="getServer">
    </bean>

    <!-- Export the MBeanServer as an OSGi service -->
    <osgi:service ref="mbeanServer">
        <osgi:interfaces>
            <value>javax.management.MBeanServer</value>
        </osgi:interfaces>
    </osgi:service>

    <!-- Create a RMI registry -->
    <bean id="rmiRegistryFactory" class="org.apache.felix.karaf.management.RmiRegistryFactory" init-method="init" destroy-method="destroy">
        <property name="create" value="true" />
        <property name="locate" value="true" />
        <property name="port" value="${rmiRegistryPort}" />
    </bean>
    <bean id="rmiRegistry" factory-bean="rmiRegistryFactory" factory-method="getObject"/>

    <!-- Create a JMX connector ServiceFactory -->
    <bean id="jmxConnectorServiceFactory" class="org.apache.felix.karaf.management.ConnectorServerFactory" init-method="init" destroy-method="destroy">
        <property name="server" ref="mbeanServer" />
        <property name="serviceUrl" value="${serviceUrl}" />
        <property name="daemon" value="${daemon}" />
        <property name="threaded" value="${threaded}" />
        <property name="objectName">
            <bean class="javax.management.ObjectName" factory-method="getInstance">
                <constructor-arg value="${objectName}"/>
            </bean>
        </property>
        <property name="environment">
            <map>
                <entry key="jmx.remote.authenticator" value-ref="jaasAuthenticator" />
            </map>
        </property>
    </bean>

    <!-- JAAS authenticator -->
    <bean id="jaasAuthenticator" class="org.apache.felix.karaf.management.JaasAuthenticator">
        <property name="realm" value="${jmxRealm}" />
    </bean>

    <!-- Property place holder -->
    <osgix:cm-properties id="cmProps" persistent-id="org.apache.felix.karaf.management">
        <prop key="rmiRegistryPort">1099</prop>
        <prop key="jmxRealm">karaf</prop>
        <prop key="serviceUrl">service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi</prop>
        <prop key="daemon">true</prop>
        <prop key="threaded">true</prop>
        <prop key="objectName">connector:name=rmi</prop>
    </osgix:cm-properties>

    <ctx:property-placeholder properties-ref="cmProps" />

</beans>

