<?xml version="1.0" encoding="UTF-8"?>
<!--
  The JBoss service configuration file for the EJB deployer service.
  
  $Id: ejb-deployer.xml 62317 2007-04-13 10:39:22Z dimitris@jboss.org $
-->
<server>

  <!-- ==================================================================== -->
  <!-- J2EE Timer Service                                                   -->
  <!-- ==================================================================== -->

  <!-- An EJB Timer Service that is Tx aware -->
  <mbean code="org.jboss.ejb.txtimer.EJBTimerServiceImpl"
    name="jboss.ejb:service=EJBTimerService">
    <attribute name="RetryPolicy">jboss.ejb:service=EJBTimerService,retryPolicy=fixedDelay</attribute>
    <attribute name="PersistencePolicy">jboss.ejb:service=EJBTimerService,persistencePolicy=database</attribute>
    <attribute name="TimerIdGeneratorClassName">org.jboss.ejb.txtimer.BigIntegerTimerIdGenerator</attribute>
    <attribute name="TimedObjectInvokerClassName">org.jboss.ejb.txtimer.TimedObjectInvokerImpl</attribute>
    <depends optional-attribute-name="TransactionManagerFactory" proxy-type="org.jboss.tm.TransactionManagerFactory">
      jboss:service=TransactionManager
    </depends>
  </mbean>

  <!-- A retry policy that uses a fixed interval in milli seconds -->
  <mbean code="org.jboss.ejb.txtimer.FixedDelayRetryPolicy" name="jboss.ejb:service=EJBTimerService,retryPolicy=fixedDelay">
    <attribute name="Delay">100</attribute>
  </mbean>

  <!-- A persistence policy that does not persist the timers
  <mbean code="org.jboss.ejb.txtimer.NoopPersistencePolicy" name="jboss.ejb:service=EJBTimerService,persistencePolicy=noop"/>
  -->

  <!--
    A persistence policy that persists timers to a database.
    
    The 2 supported db persistence plugins are:
      org.jboss.ejb.txtimer.GeneralPurposeDatabasePersistencePlugin
      org.jboss.ejb.txtimer.OracleDatabasePersistencePlugin
      
    The table name defaults to "TIMERS". It can be overriden using the
    'TimersTable' attribute if the persistence plugin supports it.
    When overriding the timers table, an optional schema can be specified
    using the syntax [schema.]table
  -->
  <mbean code="org.jboss.ejb.txtimer.DatabasePersistencePolicy" name="jboss.ejb:service=EJBTimerService,persistencePolicy=database">
    <!-- DataSourceBinding ObjectName -->
    <depends optional-attribute-name="DataSource">jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
    <!-- The plugin that handles database persistence -->
    <attribute name="DatabasePersistencePlugin">org.jboss.ejb.txtimer.GeneralPurposeDatabasePersistencePlugin</attribute>
    <!-- The timers table name -->
    <attribute name="TimersTable">TIMERS</attribute>
  </mbean>

  <!-- ==================================================================== -->
  <!-- EJB Deployer                                                         -->
  <!-- ==================================================================== -->

  <!-- EJB deployer, remove to disable EJB behavior-->
  <mbean code="org.jboss.ejb.EJBDeployer" name="jboss.ejb:service=EJBDeployer" xmbean-dd="">
  
    <!-- Inline XMBean Descriptor BEGIN -->
    <xmbean>
      <description>The EJBDeployer responsible for ejb jar deployment</description>
      <descriptors>
        <interceptors>
          <!-- comment out DynamicInterceptor to disable dynamic addition of interceptors -->
          <interceptor code="org.jboss.mx.interceptor.DynamicInterceptor"/>
        </interceptors>
      </descriptors>
      <class>org.jboss.ejb.EJBDeployer</class>

      <!-- ServiceMBean attributes -->
      <attribute access="read-only" getMethod="getName">
        <description>The class name of the MBean</description>
        <name>Name</name>
        <type>java.lang.String</type>
      </attribute>

      <attribute access="read-only" getMethod="getState">
        <description>The status of the MBean</description>
        <name>State</name>
        <type>int</type>
      </attribute>

      <attribute access="read-only" getMethod="getStateString">
        <description>The status of the MBean in text form</description>
        <name>StateString</name>
        <type>java.lang.String</type>
      </attribute>

      <!-- SubDeployerMBean attributes -->
      <attribute access="read-only" getMethod="getServiceName">
         <description>The JMX ObjectName of the service that provides the SubDeployer</description>
         <name>ServiceName</name>
         <type>javax.management.ObjectName</type>
      </attribute>
      
      <attribute access="read-only" getMethod="getSuffixes">
         <description>An array of suffixes of interest to this subdeployer</description>
         <name>Suffixes</name>
         <type>[Ljava.lang.String;</type>
      </attribute>
      
      <attribute access="read-only" getMethod="getRelativeOrder">
         <description>The relative order of the specified suffixes</description>
         <name>RelativeOrder</name>
         <type>int</type>
      </attribute>

      <!-- SubDeployerExtMBean attribute -->
      <attribute access="read-write" getMethod="getEnhancedSuffixes" setMethod="setEnhancedSuffixes">
         <description>Allow the override of supported suffixes and relative order</description>
         <name>EnhancedSuffixes</name>
         <type>[Ljava.lang.String;</type>
      </attribute>
      
      <!-- EJBDeployerMBean attributes -->
      <attribute access="read-write" getMethod="getWebServiceName" setMethod="setWebServiceName">
        <description>The dynamic class loading simple web server</description>
        <name>WebServiceName</name>
        <type>javax.management.ObjectName</type>
      </attribute>

      <attribute access="read-write" getMethod="getVerifyDeployments" setMethod="setVerifyDeployments">
        <description>Control the bean verifier (on/off)</description>
        <name>VerifyDeployments</name>
        <type>boolean</type>
      </attribute>

      <attribute access="read-write" getMethod="getVerifierVerbose" setMethod="setVerifierVerbose">
        <description>Control the verbose mode of the bean verifier</description>
        <name>VerifierVerbose</name>
        <type>boolean</type>
      </attribute>

      <attribute access="read-write" getMethod="getStrictVerifier" setMethod="setStrictVerifier">
        <description>Control the strictness of the bean verifier</description>
        <name>StrictVerifier</name>
        <type>boolean</type>
      </attribute>

      <attribute access="read-write" getMethod="isCallByValue" setMethod="setCallByValue">
        <description>Enable/disable call-by-value semantics</description>
        <name>CallByValue</name>
        <type>boolean</type>
      </attribute>

      <attribute access="read-write" getMethod="getValidateDTDs" setMethod="setValidateDTDs">
        <description>Enable/disable the validation of deployment descriptors</description>
        <name>ValidateDTDs</name>
        <type>boolean</type>
      </attribute>

      <attribute access="read-write" getMethod="isMetricsEnabled" setMethod="setMetricsEnabled">
        <description>Enable/disable the metrics interceptor for containers</description>
        <name>MetricsEnabled</name>
        <type>boolean</type>
      </attribute>

      <attribute access="read-write" getMethod="getTransactionManagerServiceName" setMethod="setTransactionManagerServiceName">
        <description>The transaction manager service to use</description>
        <name>TransactionManagerServiceName</name>
        <type>javax.management.ObjectName</type>
      </attribute>

      <!-- EJBDeployerMBean operations -->
      <operation>
        <description>List the deployed applications</description>
        <name>listDeployedApplications</name>
        <return-type>java.util.Iterator</return-type>
      </operation>

      <!-- ServiceMBean operations -->
      <operation>
        <description>Standard MBean lifecycle method</description>
        <name>create</name>
      </operation>

      <operation>
        <description>The start lifecycle operation</description>
        <name>start</name>
      </operation>

      <operation>
        <description>The stop lifecycle operation</description>
        <name>stop</name>
      </operation>

      <operation>
        <description>The destroy lifecycle operation</description>
        <name>destroy</name>
      </operation>

      <operation>
        <description>The detyped lifecycle operation (for internal use only)</description>
        <name>jbossInternalLifecycle</name>
        <parameter>
          <description>The lifecycle operation</description>
          <name>method</name>
          <type>java.lang.String</type>
        </parameter>
        <return-type>void</return-type>
      </operation>

      <!-- SubDeployerMBean operations -->
      <operation>
        <description>Accept a module for deployment</description>
        <name>accepts</name>
        <parameter>
          <name>info</name>
          <type>org.jboss.deployment.DeploymentInfo</type>
        </parameter>
        <return-type>boolean</return-type>
      </operation>

      <operation>
        <description>Initialize deployment step</description>
        <name>init</name>
        <parameter>
          <name>info</name>
          <type>org.jboss.deployment.DeploymentInfo</type>
        </parameter>
      </operation>

      <operation>
        <description>Create deployment step</description>
        <name>create</name>
        <parameter>
          <name>info</name>
          <type>org.jboss.deployment.DeploymentInfo</type>
        </parameter>
      </operation>

      <operation>
        <description>Start deployment step</description>
        <name>start</name>
        <parameter>
          <name>info</name>
          <type>org.jboss.deployment.DeploymentInfo</type>
        </parameter>
      </operation>

      <operation>
        <description>Stop deployment step</description>
        <name>stop</name>
        <parameter>
          <name>info</name>
          <type>org.jboss.deployment.DeploymentInfo</type>
        </parameter>
      </operation>

      <operation>
        <description>Destroy deployment step</description>
        <name>destroy</name>
        <parameter>
          <name>info</name>
          <type>org.jboss.deployment.DeploymentInfo</type>
        </parameter>
      </operation>

      <!-- Interceptable operations -->
      <operation>
        <description>Add dynamically an operation interceptor</description>
        <name>addOperationInterceptor</name>
        <parameter>
          <description>The Interceptor</description>
          <name>interceptor</name>
          <type>org.jboss.mx.interceptor.Interceptor</type>
        </parameter>
      </operation>

      <operation>
        <description>Remove dynamically an operation interceptor</description>
        <name>removeOperationInterceptor</name>
        <parameter>
          <description>The Interceptor</description>
          <name>interceptor</name>
          <type>org.jboss.mx.interceptor.Interceptor</type>
        </parameter>
      </operation>      
    </xmbean>
    <!-- Inline XMBean Descriptor END -->
      
    <!-- A flag indicating if the deployer should validate the
    ejb-jar.xml/jboss.xml descriptors and components
    -->
    <attribute name="VerifyDeployments">true</attribute>
    <!-- A flag indicating if the xml parser should validate the descriptor
    DTDs
    -->
    <attribute name="ValidateDTDs">false</attribute>
    <!-- A flag indicating if the verifier should be verbose about its
    operation
    -->
    <attribute name="VerifierVerbose">true</attribute>
    <!-- Setting this to 'true' will cause all deployments
     to fail when the Verifier detected a problem with the contained
     Beans. If false, warnings/errors will be logged but the deployment
     will not fail.
    -->
    <attribute name="StrictVerifier">true</attribute>

    <!-- The EJBDeployer needs the JTA transaction manager service -->
    <depends optional-attribute-name="TransactionManagerServiceName">jboss:service=TransactionManager</depends>
    <!-- The dynamic class loading simple web server -->
    <depends optional-attribute-name="WebServiceName">jboss:service=WebService</depends>
    
  </mbean>

</server>
