JasperReports Server v6.x Configuration File - ApplicationContext.xml

 
Table of Contents 
<beans xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                           http://www.springframework.org/schema/tx
                           http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
                           http://www.springframework.org/schema/context
                           http://www.springframework.org/schema/context/spring-context-3.1.xsd
                           http://www.springframework.org/schema/util
                           http://www.springframework.org/schema/util/spring-util-3.1.xsd
                           http://www.springframework.org/schema/aop
                           http://www.springframework.org/schema/aop/spring-aop-3.1.xsd"
 
       xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:util="http://www.springframework.org/schema/util"
>
  <!--Enable the configuration of transactional behavior based on annotations-->
  <tx:annotation-driven transaction-manager="transactionManager"/>
  <!--Enable annotation-based wiring-->
  <context:annotation-config/>
  <context:component-scan base-package="com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl,com.jaspersoft.jasperserver.api.metadata.security"/>
  <alias name="${bean.securityContextProvider}" alias="concreteSecurityContextProvider"/>
  <alias name="${bean.engineService}" alias="concreteEngineService"/>
  <alias name="${bean.navigationActionModelSupport}" alias="concreteNavigationActionModelSupport"/>
  <alias name="fileVirtualizerFactory" alias="concreteVirtualizerFactory"/>
  <alias name="${bean.instanceProductTypeResolver}" alias="instanceProductTypeResolverBean"/>
  <util:properties id="springConfiguration" location="${resource.root}/js.spring.properties"/>
  <alias name="${bean.jasperReportsContext}" alias="concreteJasperReportsContext"/>
  <bean id="contextApplicationContextProvider" class="com.jaspersoft.jasperserver.api.common.util.spring.ApplicationContextProvider"/>
  <!--Service beans-->
  <!--Hibernate SessionFactory-->
  <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="mappingResources">
      <list>
        <value>/com/jaspersoft/jasperserver/api/metadata/common/service/impl/hibernate/persistent/RepoResourceItemBase.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/common/service/impl/hibernate/persistent/CachedItem.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/common/service/impl/hibernate/persistent/ContentRepoFileResource.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/common/service/impl/hibernate/persistent/RepoBeanDataSource.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/common/service/impl/hibernate/persistent/RepoCustomDataSource.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/common/service/impl/hibernate/persistent/RepoDataType.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/common/service/impl/hibernate/persistent/RepoFileResource.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/common/service/impl/hibernate/util/BasicPersistentFileResource.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/common/service/impl/hibernate/persistent/RepoFolder.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/common/service/impl/hibernate/persistent/RepoInputControl.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/common/service/impl/hibernate/persistent/RepoJdbcDataSource.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/common/service/impl/hibernate/persistent/RepoJndiJdbcDataSource.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/common/service/impl/hibernate/persistent/RepoVirtualDataSource.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/common/service/impl/hibernate/persistent/RepoAwsDataSource.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/common/service/impl/hibernate/persistent/RepoListOfValues.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/common/service/impl/hibernate/persistent/RepoOlapClientConnection.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/common/service/impl/hibernate/persistent/RepoOlapUnit.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/common/service/impl/hibernate/persistent/RepoQuery.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/common/service/impl/hibernate/persistent/RepoReportUnit.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/common/service/impl/hibernate/persistent/RepoResource.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/common/service/impl/hibernate/persistent/RepoXMLAConnection.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/user/domain/impl/hibernate/RepoUser.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/user/domain/impl/hibernate/RepoRole.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/user/domain/impl/hibernate/RepoTenant.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/user/domain/impl/hibernate/RepoObjectPermission.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/user/domain/impl/hibernate/RepoProfileAttribute.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/engine/scheduling/hibernate/PersistentReportJob.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/engine/scheduling/hibernate/PersistentReportJobTrigger.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/engine/scheduling/hibernate/PersistentReportJobRepositoryDestination.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/engine/scheduling/hibernate/PersistentReportJobMailNotification.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/engine/scheduling/hibernate/PersistentReportJobAlert.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/common/domain/impl/LogEvent.hbm.xml</value>
        <value>${property.hbm.RepoMondrianConnection}</value>
        <value>${property.hbm.RepoMondrianXMLADefinition}</value>
        <value>/com/jaspersoft/jasperserver/api/logging/access/domain/hibernate/RepoAccessEvent.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/data/snapshot/hibernate/DataSnapshot.hbm.xml</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/data/snapshot/hibernate/DataSnapshotContents.hbm.xml</value>
        <value>${property.hbm.NamedQueries}</value>
        <value>/com/jaspersoft/jasperserver/api/metadata/common/service/impl/hibernate/persistent/RepoReportThumbnail.hbm.xml</value>
      </list>
    </property>
    <property name="hibernateProperties">
      <props>
        <prop key="hibernate.dialect">${metadata.hibernate.dialect}</prop>
        <prop key="hibernate.show_sql">false</prop>
        <prop key="hibernate.generate_statistics">true</prop>
        <!--uncomment property below if a default schema should be specified such as for DB2-->
        <!--<prop key="hibernate.default_schema">${metadata.hibernate.default_schema}</prop>-->
        <!--Cache Configurations-->
        <prop key="hibernate.cache.region.factory_class">${hibernate.cache.region.factory_class}</prop>
        <prop key="net.sf.ehcache.configurationResourceName">/ehcache_hibernate.xml</prop>
        <prop key="hibernate.cache.use_minimal_puts">false</prop>
        <prop key="hibernate.cache.use_query_cache">true</prop>
        <prop key="hibernate.cache.use_second_level_cache">true</prop>
        <prop key="hibernate.cache.use_structured_entries">true</prop>
      </props>
    </property>
    <!--configure caching for each persistent class
            this is equivalent to adding <cache> element to each mapping file,
            but centralizing this is probably preferable-->
    <property name="entityCacheStrategies">
      <props>
        <prop key="com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.persistent.RepoResource">read-write,defaultRepoCache</prop>
        <prop key="com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.persistent.RepoFolder">read-write,defaultRepoCache</prop>
        <prop key="com.jaspersoft.jasperserver.api.metadata.user.domain.impl.hibernate.RepoUser">read-write,defaultRepoCache</prop>
        <prop key="com.jaspersoft.jasperserver.api.metadata.user.domain.impl.hibernate.RepoRole">read-write,defaultRepoCache</prop>
        <prop key="com.jaspersoft.jasperserver.api.metadata.user.domain.impl.hibernate.RepoTenant">read-write,defaultRepoCache</prop>
        <prop key="com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.persistent.CachedItem">read-write,defaultRepoCache</prop>
      </props>
    </property>
    <property name="eventListeners">
      <map>
        <entry key="merge">
          <bean class="org.springframework.orm.hibernate3.support.IdTransferringMergeEventListener"/>
        </entry>
        <entry key="delete">
          <ref bean="hibernateCompositeDeleteListener"/>
        </entry>
        <entry key="save-update">
          <ref bean="hibernateCompositeSaveOrUpdateListener"/>
        </entry>
        <entry key="post-update">
          <ref bean="hibernateCompositePostUpdateListener"/>
        </entry>
        <entry key="post-commit-update">
          <ref bean="propertiesSaveOrUpdateListener"/>
        </entry>
        <entry key="post-commit-insert">
          <ref bean="propertiesSaveOrUpdateListener"/>
        </entry>
        <entry key="post-commit-delete">
          <ref bean="driverDeleteListener"/>
        </entry>
      </map>
    </property>
    <property name="entityInterceptor">
      <ref local="hibernateCompositeInterceptor"/>
    </property>
  </bean>
  <bean id="themeHibernateListener" class="com.jaspersoft.jasperserver.war.themes.ThemeHibernateListener">
    <property name="themeCacheBeanName" value="themeCache"/>
  </bean>
  <!--Hibernate 3.0's JMX statistics service (uncomment this and the next bean if you wish to access Hibernate statistics via JMX)
    <bean name="jasperserver:type=HibernateStatistics" class="org.hibernate.jmx.StatisticsService">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>-->
  <!--Exporter that exposes Hibernate 3.0's statistics service via JMX.
    <bean id="jmxExporter" class="org.springframework.jmx.export.MBeanExporter">
        <property name="autodetect" value="true"/>
    </bean>-->
  <bean id="hibernateCompositeDeleteListener" class="com.jaspersoft.jasperserver.api.metadata.common.service.impl.HibernateCompositeDeleteListener">
    <property name="listeners" ref="${bean.hibernateCompositeDeleteListenerListeners}"/>
  </bean>
  <bean id="hibernateCompositeInterceptor" class="com.jaspersoft.jasperserver.api.metadata.common.service.impl.HibernateCompositeInterceptor">
    <property name="listeners" ref="${bean.hibernateCompositeInterceptorListeners}"/>
  </bean>
  <bean id="hibernateCompositeInterceptorListeners" class="java.util.ArrayList">
    <constructor-arg>
      <list>
        <ref bean="metadataRepositoryDeleteListener"/>
        <ref bean="userAuthorityDeleteListener"/>
        <ref bean="objectPermissionsUserAuthorityDeleteListener"/>
        <ref bean="dataSnapshotReportUnitListener"/>
      </list>
    </constructor-arg>
  </bean>
  <bean id="hibernateCompositeSaveOrUpdateListener" class="com.jaspersoft.jasperserver.api.metadata.common.service.impl.HibernateCompositeSaveOrUpdateListener">
    <property name="listeners" ref="${bean.hibernateCompositeSaveOrUpdateListeners}"/>
  </bean>
  <bean id="hibernateCompositePostUpdateListener" class="com.jaspersoft.jasperserver.api.metadata.common.service.impl.HibernateCompositePostUpdateListener">
    <property name="listeners" ref="hibernateCompositePostUpdateListeners"/>
  </bean>
  <bean id="metadataRepositoryDeleteListener" class="com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateResourceDeleteListener">
    <property name="persistentClassMappings" ref="persistentMappings"/>
  </bean>
  <bean id="olapConnectionRepositoryPostUpdateListener" class="com.jaspersoft.jasperserver.api.metadata.olap.service.impl.OlapConnectionHibernatePostUpdateListener">
    <property name="resourceFactory" ref="mappingResourceFactory"/>
    <property name="olapManagementServiceBean" value="olapManagementService"/>
  </bean>
  <bean id="ehcacheEngineServicePostUpdateListener" class="com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EhcacheEngineServiceListener">
    <property name="ehcacheEngineServiceName" value="ehcacheEngineService"/>
  </bean>
  <bean id="userAuthorityDeleteListener" class="com.jaspersoft.jasperserver.api.metadata.user.service.impl.HibernateUserAuthorityDeleteListener"></bean>
  <bean id="hibernateRoleDeleteListener" class="com.jaspersoft.jasperserver.api.metadata.user.service.impl.HibernateRoleDeleteListener"/>
  <bean id="driverDeleteListener" class="com.jaspersoft.jasperserver.api.metadata.common.service.impl.DriverDeleteListener" depends-on="configurationBean">
    <!--the listener is not wired to the propertiesManagementService yet, because we dont want to use the service in the import/export context-->
    <property name="propertiesManagementServiceName" value="propertiesManagementService"/>
    <property name="jdbcDriversFolder" value="#{configurationBean.jdbcDriversFolderUri}"/>
  </bean>
  <!--Transaction manager for a single Hibernate SessionFactory (alternative to JTA)-->
  <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"/>
  </bean>
  <bean id="objectFactory" class="com.jaspersoft.jasperserver.api.common.service.impl.ObjectFactoryImpl"/>
  <bean id="mappingResourceFactory" class="com.jaspersoft.jasperserver.api.metadata.common.service.impl.ResourceFactoryImpl">
    <property name="objectFactory" ref="objectFactory"/>
    <property name="implementationClassMappings">
      <map>
        <entry key="com.jaspersoft.jasperserver.api.common.domain.LogEvent" value="com.jaspersoft.jasperserver.api.common.domain.client.LogEventImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.common.domain.FileResource" value="com.jaspersoft.jasperserver.api.metadata.common.domain.client.FileResourceImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.common.domain.ContentResource" value="com.jaspersoft.jasperserver.api.metadata.common.domain.client.ContentResourceImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.JdbcReportDataSource" value="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.client.JdbcReportDataSourceImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.AwsReportDataSource" value="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.client.AwsReportDataSourceImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.JndiJdbcReportDataSource" value="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.client.JndiJdbcReportDataSourceImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.VirtualReportDataSource" value="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.client.VirtualReportDataSourceImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.BeanReportDataSource" value="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.client.BeanReportDataSourceImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.CustomReportDataSource" value="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.client.CustomReportDataSourceImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.ReportUnit" value="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.client.ReportUnitImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.common.domain.Query" value="com.jaspersoft.jasperserver.api.metadata.common.domain.client.QueryImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.common.domain.InputControl" value="com.jaspersoft.jasperserver.api.metadata.common.domain.client.InputControlImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.common.domain.ListOfValues" value="com.jaspersoft.jasperserver.api.metadata.common.domain.client.ListOfValuesImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.common.domain.DataType" value="com.jaspersoft.jasperserver.api.metadata.common.domain.client.DataTypeImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.common.domain.Folder" value="com.jaspersoft.jasperserver.api.metadata.common.domain.client.FolderImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.user.domain.User" value="com.jaspersoft.jasperserver.api.metadata.user.domain.client.UserImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.user.domain.Role" value="com.jaspersoft.jasperserver.api.metadata.user.domain.client.RoleImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.user.domain.Tenant" value="com.jaspersoft.jasperserver.api.metadata.user.domain.client.TenantImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.user.domain.ObjectPermission" value="com.jaspersoft.jasperserver.api.metadata.user.domain.client.ObjectPermissionImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.user.domain.ProfileAttribute" value="com.jaspersoft.jasperserver.api.metadata.user.domain.client.ProfileAttributeImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.olap.domain.MondrianXMLADefinition" value="com.jaspersoft.jasperserver.api.metadata.olap.domain.client.MondrianXMLADefinitionImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.olap.domain.OlapUnit" value="com.jaspersoft.jasperserver.api.metadata.olap.domain.client.OlapUnitImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.olap.domain.OlapClientConnection" value="com.jaspersoft.jasperserver.api.metadata.olap.domain.client.OlapClientConnectionImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.olap.domain.XMLAConnection" value="com.jaspersoft.jasperserver.api.metadata.olap.domain.client.XMLAConnectionImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.olap.domain.JdbcOlapDataSource" value="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.client.JdbcReportDataSourceImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.olap.domain.JndiJdbcOlapDataSource" value="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.client.JndiJdbcReportDataSourceImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.olap.domain.MondrianConnection" value="com.jaspersoft.jasperserver.api.metadata.olap.domain.client.MondrianConnectionImpl"/>
        <entry key="com.jaspersoft.jasperserver.api.logging.access.domain.AccessEvent" value="com.jaspersoft.jasperserver.api.logging.access.domain.AccessEventImpl"/>
      </map>
    </property>
  </bean>
  <bean id="addMappingResourceFactory" class="com.jaspersoft.jasperserver.api.common.util.spring.GenericBeanUpdaterDefinition">
    <property name="order" value="10"/>
    <property name="beanName" value="persistentMappings"/>
    <property name="propertyName" value="implementationClassMappings"/>
    <property name="operation" value="append"/>
  </bean>
  <bean id="persistentMappings" class="com.jaspersoft.jasperserver.api.metadata.common.service.impl.ResourceFactoryImpl">
    <property name="objectFactory" ref="objectFactory"/>
    <property name="implementationClassMappings">
      <map>
        <entry key="com.jaspersoft.jasperserver.api.metadata.common.domain.ResourceLookup" value="com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.persistent.RepoResourceItemBase"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.common.domain.Resource" value="com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.persistent.RepoResource"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.common.domain.FileResource" value="com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.persistent.RepoFileResource"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.common.domain.ContentResource" value="com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.persistent.ContentRepoFileResource"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.common.domain.DataSource" value="com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.persistent.RepoDataSource"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.ReportDataSource" value="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.impl.datasource.RepoReportDataSource"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.JdbcReportDataSource" value="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.impl.datasource.RepoJdbcDataSource"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.AwsReportDataSource" value="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.impl.datasource.RepoAwsDataSource"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.JndiJdbcReportDataSource" value="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.impl.datasource.RepoJndiJdbcDataSource"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.VirtualReportDataSource" value="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.impl.datasource.RepoVirtualDataSource"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.BeanReportDataSource" value="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.impl.datasource.RepoBeanDataSource"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.CustomReportDataSource" value="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.impl.datasource.RepoCustomDataSource"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.ReportUnit" value="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.impl.RepoReportUnit"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.common.domain.Query" value="com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.persistent.RepoQuery"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.common.domain.InputControl" value="com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.persistent.RepoInputControl"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.common.domain.ListOfValues" value="com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.persistent.RepoListOfValues"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.common.domain.Folder" value="com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.persistent.RepoFolder"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.common.domain.ListOfValuesItem" value="com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.persistent.RepoListOfValuesItem"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.common.domain.DataType" value="com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.persistent.RepoDataType"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.user.domain.ProfileAttribute" value="com.jaspersoft.jasperserver.api.metadata.user.domain.impl.hibernate.RepoProfileAttribute"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.user.domain.ObjectPermission" value="com.jaspersoft.jasperserver.api.metadata.user.domain.impl.hibernate.RepoObjectPermission"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.user.domain.User" value="com.jaspersoft.jasperserver.api.metadata.user.domain.impl.hibernate.RepoUser"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.user.domain.Role" value="com.jaspersoft.jasperserver.api.metadata.user.domain.impl.hibernate.RepoRole"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.user.domain.Tenant" value="com.jaspersoft.jasperserver.api.metadata.user.domain.impl.hibernate.RepoTenant"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.olap.domain.OlapUnit" value="com.jaspersoft.jasperserver.api.metadata.olap.domain.impl.hibernate.RepoOlapUnit"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.olap.domain.OlapClientConnection" value="com.jaspersoft.jasperserver.api.metadata.olap.domain.impl.hibernate.RepoOlapClientConnection"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.olap.domain.XMLAConnection" value="com.jaspersoft.jasperserver.api.metadata.olap.domain.impl.hibernate.RepoXMLAConnection"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.olap.domain.OlapDataSource" value="com.jaspersoft.jasperserver.api.metadata.olap.domain.impl.hibernate.RepoOlapDataSource"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.olap.domain.JdbcOlapDataSource" value="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.impl.datasource.RepoJdbcDataSource"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.olap.domain.JndiJdbcOlapDataSource" value="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.impl.datasource.RepoJndiJdbcDataSource"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.olap.domain.MondrianConnection" value="com.jaspersoft.jasperserver.api.metadata.olap.domain.impl.hibernate.RepoMondrianConnection"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.olap.domain.MondrianXMLADefinition" value="com.jaspersoft.jasperserver.api.metadata.olap.domain.impl.hibernate.RepoMondrianXMLADefinition"/>
        <entry key="com.jaspersoft.jasperserver.api.logging.access.domain.AccessEvent" value="com.jaspersoft.jasperserver.api.logging.access.domain.hibernate.RepoAccessEvent"/>
      </map>
    </property>
  </bean>
  <bean id="addPersistentMappings" class="com.jaspersoft.jasperserver.api.common.util.spring.GenericBeanUpdaterDefinition">
    <property name="order" value="10"/>
    <property name="beanName" value="persistentMappings"/>
    <property name="propertyName" value="implementationClassMappings"/>
    <property name="operation" value="append"/>
  </bean>
  <bean id="hibernateRepositoryService" class="com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryServiceImpl">
    <property name="auditContext" ref="${bean.auditContext}"/>
    <property name="accessContext" ref="${bean.accessContext}"/>
    <property name="sessionFactory" ref="sessionFactory"/>
    <property name="resourceFactory" ref="mappingResourceFactory"/>
    <property name="persistentClassMappings" ref="persistentMappings"/>
    <property name="validatorMappings" ref="validatorMappings"/>
    <property name="collatorFactory" ref="collatorFactory"/>
    <property name="repositoryListeners" ref="${bean.hibernateRepositoryListeners}"/>
    <property name="securityChecker" ref="repositoryServiceSecurityChecker"/>
    <property name="lockFoldersOnPathChange" value="true"/>
    <property name="queryModificationEvaluator" ref="queryModificationEvaluator"/>
    <property name="hibernateSaveUpdateDeleteListener" ref="${bean.themeHibernateListener}"/>
  </bean>
  <bean id="queryModificationEvaluator" class="com.jaspersoft.jasperserver.search.common.QueryModificationEvaluatorImpl"/>
  <bean id="hibernateRepositoryListeners" class="java.util.ArrayList">
    <constructor-arg>
      <list>
        <ref bean="schedulingReportDeleteListener"/>
        <ref bean="objectPermissionsRepositoryListener"/>
        <ref bean="engineCacheDeleteListener"/>
        <ref bean="dataSnapshotReportUnitCopyListener"/>
        <ref bean="mondrianXMLADefinitionListener"/>
      </list>
    </constructor-arg>
  </bean>
  <bean id="validatorMappings" class="com.jaspersoft.jasperserver.api.common.service.impl.SimpleClassMappObjectFactory">
    <property name="mappings">
      <map>
        <entry key="com.jaspersoft.jasperserver.api.metadata.common.domain.Resource" value-ref="defaultResourceValidator"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.VirtualReportDataSource" value-ref="virtualDataSourceValidator"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.common.domain.Folder" value-ref="folderValidator"/>
        <entry key="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.ReportUnit" value-ref="reportUnitValidator"/>
      </map>
    </property>
  </bean>
  <bean id="baseResourceValidator" class="com.jaspersoft.jasperserver.api.metadata.common.service.impl.BaseResourceValidator" abstract="true">
    <property name="repositoryService">
      <ref bean="${bean.internalRepositoryService}"/>
    </property>
  </bean>
  <bean id="reportUnitValidator" class="com.jaspersoft.jasperserver.api.metadata.common.service.impl.ReportUnitValidator" parent="baseResourceValidator">
    <property name="servletContextInformation" ref="servletContextInformation"/>
  </bean>
  <bean id="defaultResourceValidator" class="com.jaspersoft.jasperserver.api.metadata.common.service.impl.DefaultResourceValidator" parent="baseResourceValidator"></bean>
  <bean id="virtualDataSourceValidator" class="com.jaspersoft.jasperserver.api.metadata.common.service.impl.VirtualDataSourceValidator" parent="baseResourceValidator"></bean>
  <bean id="folderValidator" class="com.jaspersoft.jasperserver.api.metadata.common.service.impl.FolderValidator" parent="baseResourceValidator"></bean>
  <bean id="servletContextInformation" class="com.jaspersoft.jasperserver.war.util.ServletContextWrapper">
    <property name="jspPathPrefix" value="/WEB-INF/jsp/"/>
  </bean>
  <!--repositoryService bean: bean was moved into sub-folder specific locations.-->
  <!--this is because import-export needs a different definition than js-war and unit-test-->
  <!--this bean is for a repository service connection without object level security-->
  <alias name="hibernateRepositoryService" alias="unsecureRepositoryService"/>
  <bean id="dataSourceServiceFactories" class="com.jaspersoft.jasperserver.api.engine.jasperreports.util.DataSourceServiceFactoryImpl">
    <property name="factory">
      <bean class="com.jaspersoft.jasperserver.api.common.service.impl.BeanForInterfaceFactoryImpl"/>
    </property>
  </bean>
  <bean class="com.jaspersoft.jasperserver.api.engine.jasperreports.util.DataSourceServiceDefinition">
    <property name="dataSourceInterface" value="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.JdbcReportDataSource"/>
    <property name="serviceBeanName" value="jdbcDataSourceServiceFactory"/>
    <property name="supportedQueryLanguages">
      <set>
        <value>sql</value>
        <value>SQL</value>
      </set>
    </property>
  </bean>
  <bean class="com.jaspersoft.jasperserver.api.engine.jasperreports.util.DataSourceServiceDefinition">
    <property name="dataSourceInterface" value="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.AwsReportDataSource"/>
    <property name="serviceBeanName" value="awsDataSourceServiceFactory"/>
    <property name="supportedQueryLanguages">
      <set>
        <value>sql</value>
        <value>SQL</value>
      </set>
    </property>
  </bean>
  <bean class="com.jaspersoft.jasperserver.api.engine.jasperreports.util.DataSourceServiceDefinition">
    <property name="dataSourceInterface" value="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.JndiJdbcReportDataSource"/>
    <property name="serviceBeanName" value="jndiJdbcDataSourceServiceFactory"/>
    <property name="supportedQueryLanguages">
      <set>
        <value>sql</value>
        <value>SQL</value>
      </set>
    </property>
  </bean>
  <bean class="com.jaspersoft.jasperserver.api.engine.jasperreports.util.DataSourceServiceDefinition">
    <property name="dataSourceInterface" value="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.VirtualReportDataSource"/>
    <property name="serviceBeanName" value="virtualDataSourceServiceFactory"/>
    <property name="supportedQueryLanguages">
      <set>
        <value>sql</value>
        <value>SQL</value>
      </set>
    </property>
  </bean>
  <bean class="com.jaspersoft.jasperserver.api.engine.jasperreports.util.DataSourceServiceDefinition">
    <property name="dataSourceInterface" value="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.BeanReportDataSource"/>
    <property name="serviceBeanName" value="beanDataSourceServiceFactory"/>
    <property name="anyLanguage" value="true"/>
  </bean>
  <bean class="com.jaspersoft.jasperserver.api.engine.jasperreports.util.DataSourceServiceDefinition">
    <property name="dataSourceInterface" value="com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.CustomReportDataSource"/>
    <property name="serviceBeanName" value="customDataSourceServiceFactory"/>
    <property name="anyLanguage" value="true"/>
  </bean>
  <bean class="com.jaspersoft.jasperserver.api.engine.jasperreports.util.DataSourceServiceDefinition">
    <property name="dataSourceInterface" value="com.jaspersoft.jasperserver.api.metadata.olap.domain.MondrianConnection"/>
    <property name="serviceBeanName" value="olapConnectionService"/>
    <property name="supportedQueryLanguages">
      <set>
        <value>mdx</value>
        <value>MDX</value>
      </set>
    </property>
  </bean>
  <bean class="com.jaspersoft.jasperserver.api.engine.jasperreports.util.DataSourceServiceDefinition">
    <property name="dataSourceInterface" value="com.jaspersoft.jasperserver.api.metadata.olap.domain.XMLAConnection"/>
    <property name="serviceBeanName" value="olapConnectionService"/>
    <property name="supportedQueryLanguages">
      <set>
        <value>mdx</value>
        <value>MDX</value>
      </set>
    </property>
  </bean>
  <bean id="dataSourceObjectPoolFactory" class="org.apache.commons.pool.impl.GenericObjectPoolFactory">
    <constructor-arg type="org.apache.commons.pool.PoolableObjectFactory">
      <null/>
    </constructor-arg>
    <constructor-arg type="int" value="20"/>
  </bean>
  <bean id="dbcpJdbcDataSourceFactory" class="com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.DbcpDataSourceFactory">
    <property name="objectPoolFactory">
      <ref bean="dataSourceObjectPoolFactory"/>
    </property>
    <property name="jdbcDriverService" ref="jdbcDriverService"/>
  </bean>
  <bean id="jdbcDataSourceServiceFactory" class="com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.JdbcReportDataSourceServiceFactory">
    <property name="pooledJdbcDataSourceFactory">
      <ref bean="dbcpJdbcDataSourceFactory"/>
    </property>
    <property name="poolTimeout" value="900"/>
  </bean>
  <bean id="awsDataSourceServiceFactory" class="com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.AwsReportDataSourceServiceFactory" parent="jdbcDataSourceServiceFactory">
    <property name="awsDataSourceRecovery" ref="awsDataSourceRecovery"/>
  </bean>
  <bean id="virtualDataSourceServiceFactory" class="com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.VirtualReportDataSourceServiceFactory" parent="jdbcDataSourceServiceFactory">
    <property name="virtualDataSourceHandler" ref="virtualDataSourceHandler"/>
    <property name="awsDataSourceServiceFactory" ref="awsDataSourceServiceFactory"/>
  </bean>
  <bean id="jndiFallbackResolver" class="com.jaspersoft.jasperserver.api.metadata.common.util.JndiFallbackResolver"/>
  <bean id="jndiJdbcDataSourceServiceFactory" class="com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.JndiJdbcReportDataSourceServiceFactory" parent="jdbcDataSourceServiceFactory">
    <!--in the absence of a JNDI service, use jndiFallbackResolver look up the properties in the file.-->
    <property name="jndiFallbackResolver" ref="jndiFallbackResolver"/>
    <property name="jndiAppServerConnectionFunctionMap">
      <map>
        <entry key="org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6" value="getUnderlyingConnection"/>
        <entry key="org.jboss.jca.adapters.jdbc.WrappedConnection" value="getUnderlyingConnection"/>
        <entry key="com.sun.gjc.spi.jdbc40.ConnectionWrapper40" value="getConnection"/>
        <entry key="com.sun.gjc.spi.base.ConnectionHolder" value="getConnection"/>
        <entry key="org.jboss.resource.adapter.jdbc.jdk6.WrappedConnectionJDK6" value="getUnderlyingConnection"/>
        <entry key="org.apache.tomcat.dbcp.dbcp.DelegatingConnection" value="getInnermostDelegate"/>
        <entry key="org.apache.commons.dbcp.DelegatingConnection" value="getInnermostDelegate"/>
      </map>
    </property>
  </bean>
  <bean id="beanDataSourceServiceFactory" class="com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.BeanReportDataSourceServiceFactory">
    <property name="messageSource" ref="messageSource"/>
  </bean>
  <bean id="customDataSourceServiceFactory" class="com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.CustomReportDataSourceServiceFactory">
    <aop:scoped-proxy/>
    <property name="mappingResourceFactory" ref="mappingResourceFactory"/>
  </bean>
  <bean id="hibernateRepositoryCacheBean" class="com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryCache">
    <property name="hibernateTemplate">
      <bean class="com.jaspersoft.jasperserver.api.metadata.common.service.impl.HibernateDaoTemplate">
        <property name="sessionFactory" ref="sessionFactory"/>
        <property name="flushModeName" value="FLUSH_EAGER"/>
      </bean>
    </property>
    <property name="repository">
      <ref bean="${bean.internalRepositoryService}"/>
    </property>
    <!--set 'false' to run findByCriteria() in normal mode, 'true ' to run in read-only mode [NO SQL UPDATE ALLOWED WHEN CALLING findByCriteria()-->
    <property name="findByCriteriaToReadOnly" value="false"/>
    <property name="transactionManager" ref="transactionManager"/>
  </bean>
  <!--FIXME remove this once locking is implemented (see Bugzilla 10218)-->
  <bean id="hibernateRepositoryCacheReattemptInterceptor" class="com.jaspersoft.jasperserver.api.common.util.spring.ReattemptMethodInterceptor">
    <property name="reattemptAttributes">
      <bean class="com.jaspersoft.jasperserver.api.common.util.spring.MapNameMethodAttributes">
        <property name="methodAttributes">
          <map>
            <entry key="cache">
              <bean class="com.jaspersoft.jasperserver.api.common.util.spring.ExceptionTypesReattemptAttributes">
                <property name="exceptionTypes">
                  <list>
                    <value>org.springframework.dao.DataIntegrityViolationException</value>
                  </list>
                </property>
                <property name="attemptCount" value="3"/>
              </bean>
            </entry>
          </map>
        </property>
      </bean>
    </property>
  </bean>
  <bean id="hibernateRepositoryCache" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="interceptorNames">
      <list>
        <idref local="hibernateRepositoryCacheReattemptInterceptor"/>
        <idref local="hibernateRepositoryCacheBean"/>
      </list>
    </property>
  </bean>
  <bean id="thumbnailGenerationService" class="com.jaspersoft.jasperserver.api.metadata.common.service.impl.ThumbnailGenerationServiceImpl">
    <property name="longestEdge" value="300"/>
    <property name="jpgQuality" value="0.8"/>
    <!--a value between 0 and 1-->
  </bean>
  <bean id="reportThumbnailService" class="com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.ReportThumbnailServiceImpl">
    <property name="userAuthorityService" ref="${bean.userAuthorityService}"/>
    <property name="repositoryService" ref="hibernateRepositoryService"/>
    <property name="sessionFactory" ref="sessionFactory"/>
    <property name="defaultThumbnailPath" value="${property.defaultThumbnailPath}"/>
  </bean>
  <bean id="asyncThumbnailCreator" class="com.jaspersoft.jasperserver.api.metadata.common.service.impl.AsyncThumbnailCreatorImpl">
    <property name="generatorService" ref="thumbnailGenerationService"/>
    <property name="storageService" ref="${bean.thumbnailService}"/>
    <property name="threadsMax" value="2"/>
  </bean>
  <util:map id="engineExecutions" key-type="java.lang.String" value-type="com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.ReportExecutionStatus" map-class="java.util.concurrent.ConcurrentHashMap"/>
  <bean id="engineService" class="${bean.class.engineService}" destroy-method="release">
    <property name="auditContext" ref="${bean.auditContext}"/>
    <property name="repositoryService">
      <ref bean="${bean.repositoryService}"/>
    </property>
    <property name="dataSourceServiceFactories">
      <ref bean="dataSourceServiceFactories"/>
    </property>
    <property name="compiledReportsCache">
      <ref bean="${bean.engineService.compiledReportsCache}"/>
    </property>
    <property name="queryManipulator">
      <ref bean="CascadeQueryManipulator"/>
    </property>
    <property name="securityContextProvider" ref="${bean.securityContextProvider}"/>
    <property name="builtInParameterProviders" ref="builtInParameterProviders"/>
    <property name="reportParameterLabelKeyPrefix" value="net.sf.jasperreports.prompt.label."/>
    <property name="repositoryContextManager" ref="${bean.repositoryContextManager}"/>
    <property name="cacheableCompiledReports" ref="${bean.cacheableCompiledReports}"/>
    <property name="reportJarsProtectionDomainProvider" ref="reportsProtectionDomainProvider"/>
    <property name="inputControlsInfoExtractor" ref="inputControlsInfoRoutingExtractor"/>
    <property name="dataCacheProvider" ref="engineServiceDataCacheProvider"/>
    <property name="unsecureRepository" ref="unsecureRepositoryService"/>
    <property name="autoUpdateJRXMLs" value="false"/>
    <!--required for data snapshot persistence, which is turned off by default-->
    <property name="reportExecutionListenerFactories" ref="${bean.reportExecutionListenerFactories}"/>
    <property name="jasperReportsContext" ref="${bean.jasperReportsContext}"/>
    <property name="dataParameterContributors" ref="${bean.engineServiceDataParameterContributors}"/>
    <property name="recordSizeof" value="${audit.sizeof.enabled}"/>
    <property name="jrxmlFixerList">
      <list/>
    </property>
    <property name="reportThumbnailServiceEnabled" value="${property.reportThumbnailServiceEnabled}"/>
    <property name="asyncThumbnailCreator" ref="asyncThumbnailCreator"/>
  </bean>
  <bean id="engineCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean" lazy-init="true">
    <property name="cacheManager" ref="engineCacheManager"/>
    <property name="cacheName" value="engineCache"/>
  </bean>
  <bean id="engineCacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" depends-on="sysProperties">
    <property name="configLocation">
      <value>${resource.root}/engine-ehcache.xml</value>
    </property>
  </bean>
  <bean id="ehcacheEngineService" class="com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EhcacheEngineService">
    <property name="engineService" ref="engineService"/>
    <property name="cache" ref="engineCache"/>
  </bean>
  <util:list id="engineServiceDataParameterContributors">
    <ref bean="reportInputDataParameterContributors"/>
  </util:list>
  <bean name="reportInputDataParameterContributors" class="com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.ReportInputDataParameterContributors">
    <property name="reportLoadingService" ref="reportLoadingService"/>
  </bean>
  <util:list id="reportExecutionListenerFactories">
    <ref local="localeContextReportExecutionListenerFactory"/>
    <ref local="securityContextReportExecutionListenerFactory"/>
    <ref local="reportExecutionAuditListenerFactory"/>
  </util:list>
  <bean name="localeContextReportExecutionListenerFactory" class="com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.LocaleContextReportExecutionListenerFactory"/>
  <bean name="securityContextReportExecutionListenerFactory" class="com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.SecurityContextReportExecutionListenerFactory"/>
  <bean name="reportExecutionAuditListenerFactory" class="com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.ReportExecutionAuditListenerFactory">
    <property name="loggingContextProvider" ref="${bean.loggingContextProvider}"/>
    <property name="auditContext" ref="${bean.auditContext}"/>
  </bean>
  <bean id="reportLoadingService" class="com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.ReportLoadingService">
    <property name="repositoryService" ref="${bean.repositoryService}"/>
    <property name="cacheableCompiledReports" ref="${bean.cacheableCompiledReports}"/>
    <property name="compiledReportsCache" ref="${bean.engineService.compiledReportsCache}"/>
    <property name="repositoryContextManager" ref="${bean.repositoryContextManager}"/>
    <property name="builtInParameterProviders" ref="builtInParameterProviders"/>
    <property name="reportParameterLabelKeyPrefix" value="net.sf.jasperreports.prompt.label."/>
  </bean>
  <bean name="inputControlsInfoRoutingExtractor" class="com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.InputControlsInfoRoutingExtractor"></bean>
  <bean id="reportsProtectionDomainProvider" class="com.jaspersoft.jasperserver.api.engine.jasperreports.util.PermissionsListProtectionDomainProvider">
    <property name="permissions">
      <list>
        <!--no permissions by default-->
        <!--sample permission: read and write to temp folder-->
        <!--<bean class="java.io.FilePermission">
                    <constructor-arg value="${java.io.tmpdir}${file.separator}*"/>
                    <constructor-arg value="read,write"/>
                </bean>-->
        <!--all permissions can be granted if desired-->
        <!--<bean class="java.security.AllPermission"/>-->
      </list>
    </property>
  </bean>
  <bean class="com.jaspersoft.jasperserver.api.engine.jasperreports.util.ProtectionDomainJRAdapter" lazy-init="false" init-method="setJRProtectionDomain">
    <property name="provider" ref="reportsProtectionDomainProvider"/>
  </bean>
  <bean id="builtInParameterProviders" class="java.util.ArrayList">
    <constructor-arg>
      <list>
        <bean class="com.jaspersoft.jasperserver.api.engine.jasperreports.util.UserProfileBuiltInParameterProvider">
          <property name="profileAttributeService" ref="profileAttributeServiceTarget"/>
          <property name="profileAttributeCategories" ref="${bean.profileAttributeCategories}"/>
        </bean>
      </list>
    </constructor-arg>
  </bean>
  <bean id="cacheableCompiledReports" class="com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.CacheableCompiledReports">
    <property name="compiler">
      <ref local="engineService"/>
    </property>
  </bean>
  <bean id="profileAttributeServiceTarget" class="com.jaspersoft.jasperserver.api.metadata.user.service.impl.ProfileAttributeServiceImpl">
    <property name="sessionFactory" ref="sessionFactory"/>
    <property name="objectMappingFactory" ref="mappingResourceFactory"/>
    <property name="persistentClassFactory" ref="persistentMappings"/>
    <property name="repositoryService" ref="unsecureRepositoryService"/>
    <property name="userAuthorityService" ref="${bean.internalUserAuthorityService}"/>
    <property name="propertiesManagementService" ref="propertiesManagementService"/>
    <property name="tenantPersistenceResolver" ref="${bean.hibernateTenantService}"/>
    <property name="profileAttributeCategories" ref="${bean.profileAttributeCategories}"/>
  </bean>
  <bean id="profileAttributesResolver" class="com.jaspersoft.jasperserver.api.metadata.user.service.impl.ProfileAttributesResolverImpl">
    <property name="attributePlaceholderPattern" ref="attributePlaceholderPattern"/>
    <property name="profileAttributeService" ref="profileAttributeService"/>
    <property name="messageSource" ref="messageSource"/>
    <property name="profileAttributeCategories" ref="${bean.profileAttributeCategories}"/>
    <property name="excludedResourcesFromAttrResolving" ref="${bean.excludedResourcesFromAttrResolving}"/>
    <property name="enabledResolving" value="true"/>
  </bean>
  <bean id="attributePlaceholderPattern" class="java.lang.String">
    <constructor-arg value="\{\s*attribute\s*\(\s*'([^\\/']+)'\s*(,\s*'([^\\/']+)'\s*)?\)\s*\}"/>
  </bean>
  <!--Without capturing groups-->
  <bean id="attributePlaceholderPatternUI" class="java.lang.String">
    <constructor-arg value="[{]\s*attribute\s*[(]\s*'[^\\/']+'\s*(?:,\s*'[^\\/']+'\s*)?[)]\s*[}]"/>
  </bean>
  <util:list id="profileAttributeCategoriesCe" list-class="java.util.ArrayList" value-type="com.jaspersoft.jasperserver.api.metadata.user.service.ProfileAttributeCategory">
    <value>USER</value>
    <value>SERVER</value>
  </util:list>
  <bean id="profileAttributeService" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="interceptorNames">
      <list>
        <idref bean="profileAttributeServiceMethodSecurityInterceptor"/>
        <idref bean="profileAttributeServiceTarget"/>
      </list>
    </property>
  </bean>
  <bean id="profileAttributeServiceMethodSecurityInterceptor" class="org.springframework.security.intercept.method.aopalliance.MethodSecurityInterceptor">
    <property name="authenticationManager">
      <ref local="authenticationManager"/>
    </property>
    <property name="accessDecisionManager">
      <bean class="org.springframework.security.vote.AffirmativeBased">
        <property name="decisionVoters">
          <list>
            <ref local="roleVoter"/>
          </list>
        </property>
      </bean>
    </property>
    <property name="objectDefinitionSource">
      <value>com.jaspersoft.jasperserver.api.metadata.user.service.ProfileAttributeService.putProfileAttribute=ROLE_ADMINISTRATOR,ROLE_SUPERUSER</value>
    </property>
  </bean>
  <bean id="userAuthorityService" class="com.jaspersoft.jasperserver.api.metadata.user.service.impl.UserAuthorityServiceImpl">
    <property name="sessionFactory" ref="sessionFactory"/>
    <property name="objectMappingFactory" ref="mappingResourceFactory"/>
    <property name="persistentClassFactory" ref="persistentMappings"/>
    <property name="profileAttributeService" ref="profileAttributeService"/>
    <property name="defaultInternalRoles">
      <list>
        <value>ROLE_USER</value>
      </list>
    </property>
    <property name="tenantPersistenceResolver">
      <ref bean="${bean.hibernateTenantService}"/>
    </property>
    <property name="auditContext" ref="${bean.auditContext}"/>
    <property name="databaseCharactersEscapeResolver" ref="databaseCharactersEscapeResolver"/>
    <property name="usernameCaseSensitive" value="false"/>
    <!--Allows to change regular expression, which validates password complexity.
             You should also change "exception.remote.weak.password" message in
             jsexeptions_messages.properties file according to your password policy-->
    <property name="allowedPasswordPattern" value="^.*$"/>
  </bean>
  <bean id="tenantService" class="com.jaspersoft.jasperserver.api.metadata.tenant.service.impl.TenantServiceImpl">
    <property name="sessionFactory" ref="sessionFactory"/>
    <property name="objectMappingFactory" ref="mappingResourceFactory"/>
    <property name="persistentClassFactory" ref="persistentMappings"/>
    <property name="userOrgIdDelimiter">
      <value>|</value>
    </property>
    <property name="databaseCharactersEscapeResolver" ref="databaseCharactersEscapeResolver"/>
    <property name="profileAttributeService" ref="profileAttributeService"/>
    <property name="tenantCaseSensitive" value="false"/>
  </bean>
  <bean id="objectPermissionServiceTarget" class="com.jaspersoft.jasperserver.api.metadata.user.service.impl.ObjectPermissionServiceImpl">
    <property name="sessionFactory" ref="sessionFactory"/>
    <property name="objectMappingFactory" ref="mappingResourceFactory"/>
    <property name="persistentClassFactory" ref="persistentMappings"/>
    <property name="repositoryService" ref="unsecureRepositoryService"/>
    <property name="userAuthorityService" ref="${bean.internalUserAuthorityService}"/>
    <property name="effectiveAclsResolver">
      <bean class="com.jaspersoft.jasperserver.api.metadata.user.service.impl.ObjectPermissionEffectiveAclsResolver"/>
    </property>
    <property name="basicAclEntryCache">
      <bean class="org.springframework.security.acl.basic.cache.EhCacheBasedAclEntryCache">
        <property name="cache">
          <ref local="aclCache"/>
        </property>
      </bean>
    </property>
    <property name="auditContext" ref="${bean.auditContext}"/>
  </bean>
  <bean id="permissionsPrefetcher" class="com.jaspersoft.jasperserver.api.metadata.user.service.impl.PermissionsPrefetcher">
    <property name="sessionFactory" ref="sessionFactory"/>
    <property name="objectMappingFactory" ref="mappingResourceFactory"/>
    <property name="persistentClassFactory" ref="persistentMappings"/>
    <property name="repositoryService" ref="${bean.internalRepositoryService}"/>
    <property name="objectPermissionService" ref="objectPermissionServiceTarget"/>
  </bean>
  <!--Setup a cache for ACLs-->
  <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" depends-on="sysProperties">
    <property name="configLocation">
      <value>${resource.root}/ehcache.xml</value>
    </property>
  </bean>
  <bean id="aclCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean">
    <property name="cacheManager">
      <ref local="cacheManager"/>
    </property>
    <property name="cacheName">
      <value>aclCache</value>
    </property>
  </bean>
  <bean id="objectPermissionServiceTransactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
    <property name="transactionManager" ref="transactionManager"/>
    <property name="transactionAttributes">
      <props>
        <prop key="update*">PROPAGATION_REQUIRED</prop>
        <prop key="get*">PROPAGATION_REQUIRED</prop>
        <prop key="find*">PROPAGATION_REQUIRED</prop>
        <prop key="load*">PROPAGATION_REQUIRED</prop>
        <prop key="put*">PROPAGATION_REQUIRED</prop>
        <prop key="delete*">PROPAGATION_REQUIRED</prop>
        <prop key="*">PROPAGATION_SUPPORTS</prop>
      </props>
    </property>
  </bean>
  <bean id="objectPermissionServiceUnsecure" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="targetName" value="objectPermissionServiceTarget"/>
    <property name="interceptorNames" ref="${bean.objectPermissionServiceInterceptorNames}"/>
  </bean>
  <bean id="objectPermissionServiceInternal" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="targetName" value="objectPermissionServiceTarget"/>
    <property name="interceptorNames" ref="objectPermissionServiceInterceptorNames"/>
  </bean>
  <bean id="objectPermissionService" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="targetName" value="objectPermissionServiceTarget"/>
    <property name="interceptorNames" ref="objectPermissionServiceInterceptorNamesSecured"/>
  </bean>
  <bean id="objectPermissionServiceInterceptorNames" class="java.util.ArrayList">
    <constructor-arg index="0">
      <list>
        <idref local="objectPermissionServiceTransactionInterceptor"/>
      </list>
    </constructor-arg>
  </bean>
  <bean id="objectPermissionsRepositoryListener" class="com.jaspersoft.jasperserver.api.metadata.user.service.impl.ObjectPermissionsRepositoryListener">
    <property name="permissionsService" ref="${bean.objectPermissionServiceInternal}"/>
  </bean>
  <bean class="com.jaspersoft.jasperserver.api.metadata.common.service.ResourceEventListenerProcessor" lazy-init="false">
    <property name="registry" ref="metadataRepositoryDeleteListener"/>
    <property name="listenerBeanName" value="objectPermissionsRepositoryListener"/>
  </bean>
  <bean id="objectPermissionsUserAuthorityDeleteListener" class="com.jaspersoft.jasperserver.api.metadata.user.service.impl.HibernateObjectPermissionUserAuthorityDeleteListener">
    <property name="objectPermissionsServiceBeanName" value="${bean.objectPermissionServiceInternal}"/>
  </bean>
  <!--i18n-->
  <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="useCodeAsDefaultMessage" value="true"/>
    <!--Uncomment this line in order to enable runtime bundle loading-->
    <!--Warning : this cause performance impact-->
    <!--<property name="cacheSeconds" value="1"/>-->
    <property name="fallbackToSystemLocale" value="false"/>
    <property name="basenames" ref="bundlePathsList"/>
  </bean>
  <alias name="${bean.bundlePathsList}" alias="bundlePathsList"/>
  <bean id="bundlePathsListCe" class="com.jaspersoft.jasperserver.api.common.util.spring.ArrayFactoryBean">
    <property name="sourceList">
      <list>
        <value>${resource.root}/bundles/jasperserver_messages</value>
        <value>${resource.root}/bundles/jasperserver_config</value>
        <value>${resource.root}/bundles/jpivot_messages</value>
        <value>${resource.root}/bundles/calendar</value>
        <value>${resource.root}/bundles/jsexceptions_messages</value>
        <value>${resource.root}/bundles/scheduling_ws</value>
        <value>${resource.root}/bundles/ja-pro_messages</value>
        <value>${resource.root}/bundles/ja_mondrian_messages</value>
        <value>${resource.root}/bundles/mondrian_exception_messages</value>
        <value>${resource.root}/bundles/security</value>
        <value>${resource.root}/bundles/logger_descriptions</value>
        <value>${resource.root}/bundles/jasperreports_messages</value>
        <value>${resource.root}/internal/jpivot_internal_messages</value>
        <value>${resource.root}/internal/jasperserver</value>
        <value>${resource.root}/internal/ja-pro_internal_messages</value>
        <value>${resource.root}/bundles/ScalableInputControlsBundle</value>
      </list>
    </property>
  </bean>
  <!--JasperReportsContext-->
  <bean id="jasperReportsContext" class="net.sf.jasperreports.engine.SimpleJasperReportsContext">
    <property name="extensions">
      <map>
        <entry key="net.sf.jasperreports.engine.util.MessageProviderFactory">
          <list>
            <ref bean="messageProviderFactory"/>
          </list>
        </entry>
        <entry key="net.sf.jasperreports.repo.RepositoryService">
          <list>
            <ref bean="repoRepositoryService"/>
          </list>
        </entry>
        <entry key="net.sf.jasperreports.web.WebLocaleResolver">
          <list>
            <bean class="com.jaspersoft.jasperserver.war.common.ServerLocaleResolver"/>
          </list>
        </entry>
        <entry key="net.sf.jasperreports.web.util.RequirejsModuleMapping">
          <list>
            <!--overwrite jr modules-->
            <bean class="net.sf.jasperreports.web.util.RequirejsModuleMapping">
              <constructor-arg value="jasperreports-loader"/>
              <constructor-arg value="reportViewer/jasperreports-loader"/>
              <constructor-arg value="false"/>
            </bean>
            <bean class="net.sf.jasperreports.web.util.RequirejsModuleMapping">
              <constructor-arg value="jr.LocalAnchor"/>
              <constructor-arg value="reportViewer/hyperlinkHandler/jr.LocalAnchor"/>
              <constructor-arg value="false"/>
            </bean>
            <bean class="net.sf.jasperreports.web.util.RequirejsModuleMapping">
              <constructor-arg value="jr.LocalPage"/>
              <constructor-arg value="reportViewer/hyperlinkHandler/jr.LocalPage"/>
              <constructor-arg value="false"/>
            </bean>
            <bean class="net.sf.jasperreports.web.util.RequirejsModuleMapping">
              <constructor-arg value="jr.Reference"/>
              <constructor-arg value="reportViewer/hyperlinkHandler/jr.Reference"/>
              <constructor-arg value="false"/>
            </bean>
            <bean class="net.sf.jasperreports.web.util.RequirejsModuleMapping">
              <constructor-arg value="jr.RemoteAnchor"/>
              <constructor-arg value="reportViewer/hyperlinkHandler/jr.RemoteAnchor"/>
              <constructor-arg value="false"/>
            </bean>
            <bean class="net.sf.jasperreports.web.util.RequirejsModuleMapping">
              <constructor-arg value="jr.ReportExecution"/>
              <constructor-arg value="reportViewer/hyperlinkHandler/jr.ReportExecution"/>
              <constructor-arg value="false"/>
            </bean>
          </list>
        </entry>
        <entry key="net.sf.jasperreports.engine.ParameterContributorFactory">
          <list>
            <ref bean="dsWrapperParamContribFactory"/>
          </list>
        </entry>
      </map>
    </property>
  </bean>
  <bean id="dsWrapperParamContribFactory" class="com.jaspersoft.jasperserver.api.engine.jasperreports.util.DataSourceWrapperParameterContributorFactory">
    <property name="repositoryService">
      <ref bean="${bean.repositoryService}"/>
    </property>
    <property name="engineService" ref="engineService"/>
  </bean>
  <bean id="repoRepositoryService" class="com.jaspersoft.jasperserver.api.engine.jasperreports.util.RepoRepositoryService">
    <property name="persistenceServices">
      <map>
        <entry key="net.sf.jasperreports.repo.InputStreamResource">
          <bean class="net.sf.jasperreports.repo.InputStreamPersistenceService"/>
        </entry>
        <entry key="net.sf.jasperreports.repo.ReportResource">
          <bean class="net.sf.jasperreports.repo.SerializedReportPersistenceService"/>
        </entry>
        <entry key="net.sf.jasperreports.repo.DataAdapterResource">
          <bean class="net.sf.jasperreports.repo.CastorDataAdapterPersistenceService">
            <constructor-arg ref="${bean.jasperReportsContext}"/>
          </bean>
        </entry>
      </map>
    </property>
  </bean>
  <bean id="messageProviderFactory" class="com.jaspersoft.jasperserver.api.engine.jasperreports.util.MessageSourceMessageProviderFactory">
    <property name="messageSource">
      <ref bean="messageSource"/>
    </property>
    <property name="baseNames">
      <set>
        <value>net.sf.jasperreports.components.sort.FilterTypeTextOperatorsEnum</value>
        <value>net.sf.jasperreports.components.sort.FilterTypeDateOperatorsEnum</value>
        <value>net.sf.jasperreports.components.sort.FilterTypeNumericOperatorsEnum</value>
        <value>net.sf.jasperreports.components.sort.FilterTypeBooleanOperatorsEnum</value>
        <value>net.sf.jasperreports.components.headertoolbar.actions.messages</value>
        <value>net.sf.jasperreports.components.headertoolbar.messages</value>
        <value>net.sf.jasperreports.components.messages</value>
        <value>jasperreports_messages</value>
        <!--<value>net.sf.jasperreports.web.actions.messages</value>-->
      </set>
    </property>
  </bean>
  <bean id="messagesCalendarFormatProvider" class="com.jaspersoft.jasperserver.war.util.MessagesCalendarFormatProvider">
    <property name="datePatternKey" value="date.format"/>
    <property name="calendarDatePatternKey" value="calendar.date.format"/>
    <property name="datetimePatternKey" value="datetime.format"/>
    <property name="timePatternKey" value="time.format"/>
    <!--<property name="calendarDatetimePatternKey" value="calendar.datetime.format"/>-->
    <property name="calendarDatetimeSeparatorKey" value="calendar.datetime.separator"/>
    <property name="calendarTimePatternKey" value="calendar.time.format"/>
    <property name="lenientFormats" value="false"/>
  </bean>
  <bean id="isoCalendarFormatProvider" class="com.jaspersoft.jasperserver.war.util.IsoCalendarFormatProvider"/>
  <!--handle file uploads using commons-fileupload
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>-->
  <bean id="engineCacheDeleteListener" class="com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineCacheDeleteListener">
    <property name="engine" ref="${bean.engineCacheDeleteListener.engine}"/>
  </bean>
  <bean id="mondrianXMLADefinitionListener" class="com.jaspersoft.jasperserver.api.metadata.olap.service.impl.MondrianXMLADefinitionListener"/>
  <bean class="com.jaspersoft.jasperserver.api.metadata.common.service.ResourceEventListenerProcessor" lazy-init="false">
    <property name="registry" ref="metadataRepositoryDeleteListener"/>
    <property name="listenerBeanName" value="engineCacheDeleteListener"/>
  </bean>
  <bean id="securityContextProviderTarget" class="com.jaspersoft.jasperserver.api.engine.common.service.impl.AcegiSecurityContextProvider">
    <property name="userDetailsService" ref="${bean.internalUserAuthorityService}"/>
    <property name="userAuthorityService" ref="${bean.internalUserAuthorityService}"/>
    <property name="anonymousUserDescriptor" ref="anonymousUserDescriptor"/>
  </bean>
  <bean id="securityContextProvider" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="interceptorNames">
      <list>
        <idref local="securityContextProviderTarget"/>
        <!--<ref bean="${bean.securityContextProviderTarget}"/>-->
      </list>
    </property>
  </bean>
  <bean id="hyperlinkDateParameterFormatter" class="com.jaspersoft.jasperserver.war.util.HyperlinkDateParameterFormatter">
    <property name="dateConverter" ref="dateDataConverter"/>
    <property name="timestampConverter" ref="timestampDataConverter"/>
    <property name="timeConverter" ref="timeDataConverter"/>
  </bean>
  <bean id="encodingProvider" class="com.jaspersoft.jasperserver.api.common.util.StaticCharacterEncodingProvider">
    <constructor-arg value="UTF-8"/>
  </bean>
  <bean id="characterEncodingFilter" class="com.jaspersoft.jasperserver.war.util.CharacterEncodingFilter">
    <property name="encodingProvider" ref="encodingProvider"/>
    <property name="encodingRequestAttrName" value="com.jaspersoft.ji.characterEncoding"/>
  </bean>
  <bean id="sessionDecoratorFilter" class="com.jaspersoft.jasperserver.war.util.SessionDecoratorFilter"></bean>
  <!--Make maxSize bigger if you are displaying dashboards with 10+ frames and you are getting image loading problems-->
  <bean id="jasperPrintAccessor" class="com.jaspersoft.jasperserver.war.util.LRUSessionObjectAccessor">
    <property name="listSessionName" value="jasperPrintSerie"/>
    <property name="maxSize" value="10"/>
    <property name="listener">
      <bean class="com.jaspersoft.jasperserver.war.util.SessionReportListener">
        <property name="virtualizerFactory">
          <ref local="fileVirtualizerFactory"/>
        </property>
      </bean>
    </property>
  </bean>
  <bean id="reportContextWebSessionAccessor" class="com.jaspersoft.jasperserver.war.util.LRUSessionObjectAccessor">
    <property name="listSessionName" value="jrReportContextSerie"/>
    <property name="maxSize" value="10"/>
  </bean>
  <bean id="reportContextWebAccessor" class="com.jaspersoft.jasperserver.war.action.WebflowReportContextAccessor">
    <property name="sessionAccessor" ref="reportContextWebSessionAccessor"/>
  </bean>
  <bean id="baseReportExecutionHyperlinkProducer" class="com.jaspersoft.jasperserver.api.engine.jasperreports.util.BaseReportExecutionHyperlinkProducerFactory" abstract="true">
    <property name="flowControllerMapping" value="/flow.html"/>
    <property name="reportExecutionFlowId" value="viewReportFlow"/>
    <property name="hyperlinkParameterReportUnit" value="_report"/>
    <property name="urlParameterReportUnit" value="reportUnit"/>
    <property name="hyperlinkParameterOutputChannel" value="_output"/>
    <property name="urlParameterOutputChannel" value="output"/>
    <property name="hyperlinkParameterPageIndex" value="_page"/>
    <property name="urlParameterPageIndex" value="pageIndex"/>
    <property name="hyperlinkParameterAnchor" value="_anchor"/>
    <property name="urlParameterAnchor" value="anchor"/>
    <property name="dateFormatter" ref="hyperlinkDateParameterFormatter"/>
    <property name="encodingProvider" ref="encodingProvider"/>
  </bean>
  <bean id="reportExecutionHyperlinkProducer" class="com.jaspersoft.jasperserver.war.action.hyperlinks.ReportExecutionHyperlinkProducerFactory" parent="baseReportExecutionHyperlinkProducer">
    <property name="attributeReportLocale" value="reportExecutionLocale"/>
    <property name="urlParameterReportLocale" value="reportLocale"/>
  </bean>
  <bean id="localAnchorHyperlinkProducerFactory" class="com.jaspersoft.jasperserver.war.action.hyperlinks.LocalAnchorHyperlinkProducerFactory">
    <property name="jasperPrintNameRequestAttribute" value="jasperPrintName"/>
    <property name="flowControllerMapping" value="/flow.html"/>
    <property name="navigateEventID" value="navigate"/>
    <property name="pageIndexParameter" value="pageIndex"/>
    <property name="jasperPrintAccessor" ref="jasperPrintAccessor"/>
  </bean>
  <bean id="viewReportHyperlinkProducerFactory" class="com.jaspersoft.jasperserver.war.action.hyperlinks.MapHyperlinkProducerFactoryFlowFactory">
    <property name="flowHyperlinkProducers">
      <map>
        <entry key="ReportExecution" value-ref="${bean.reportExecutionHyperlinkProducer}"/>
        <entry key="ReportInteraction" value-ref="${bean.reportExecutionHyperlinkProducer}"/>
        <entry key="LocalPage" value-ref="localAnchorHyperlinkProducerFactory"/>
        <entry key="LocalAnchor" value-ref="localAnchorHyperlinkProducerFactory"/>
      </map>
    </property>
  </bean>
  <bean id="swfReportExecutionHyperlinkProducer" class="com.jaspersoft.jasperserver.war.action.hyperlinks.ReportExecutionHyperlinkProducerFactory" parent="reportExecutionHyperlinkProducer">
    <property name="defaultOutputChannel" value="swf"/>
  </bean>
  <bean id="swfReportHyperlinkProducerFactory" class="com.jaspersoft.jasperserver.war.action.hyperlinks.MapHyperlinkProducerFactoryFlowFactory">
    <property name="flowHyperlinkProducers">
      <map>
        <entry key="ReportExecution" value-ref="${bean.swfReportExecutionHyperlinkProducer}"/>
      </map>
    </property>
  </bean>
  <bean id="collatorFactory" class="com.jaspersoft.jasperserver.api.common.util.DefaultCollatorFactory"/>
  <bean id="configurationBean" class="com.jaspersoft.jasperserver.war.common.ConfigurationBean">
    <!--constants-->
    <property name="paginatorItemsPerPage" value="20"/>
    <property name="paginatorPagesRange" value="3"/>
    <property name="reportLevelConfigurable" value="false"/>
    <property name="paginationForSinglePageReport" value="false"/>
    <property name="userItemsPerPage" value="45"/>
    <property name="roleItemsPerPage" value="45"/>
    <property name="tenantItemsPerPage" value="45"/>
    <property name="calendarInputJsp" value="/WEB-INF/jsp/modules/CalendarInput.jsp"/>
    <property name="userNameSeparator" value="|"/>
    <!--Must contain userNameSeparator as well-->
    <property name="userNameNotSupportedSymbols">
      <value>[\\\|\s`"'~!#\u0024%\^&amp;,*\+=;:?\&lt;\>}{)(\]\[/]</value>
    </property>
    <property name="roleNameNotSupportedSymbols">
      <value>[\|\s`"'~!#\u0024%\^&amp;,*\+=;:?\&lt;\>}{)(\]\[/\\]</value>
    </property>
    <property name="emailRegExpPattern">
      <value>^([\p{L}\p{M}\p{N}!#$%&amp;'*+-/=?^_`{}|~]+|"[\p{L}\p{M}\p{N}_%'-+\s\(\)&lt;>\[\]:,;@!#$%&amp;'*+-/=?^_`{}|\s~\.]+")(\.([\p{L}\p{M}\p{N}_%'-+]+|"[\p{L}\p{M}\p{N}_%'-+\s\(\)&lt;>\[\]:,;@!#$%&amp;'*+-/=?^_`{}|\s~\.]+]*"))*@((\[(\d{1,3}\.){3,3}\d{1,3}\])|(([\p{L}\p{M}\p{N}-]+\.)*[\p{L}\p{M}\p{N}-]+))$</value>
    </property>
    <property name="defaultRole" value="ROLE_USER"/>
    <property name="passwordMask" value="*"/>
    <property name="viewReportsFilterList">
      <list>
        <value>^(/organizations/[^/]+)*(/temp/|/adhoc/topics/)</value>
        <value>^/public/adhoc/topics/</value>
        <value>^(/organizations/[^/]+)*(/organizations/org_template/)</value>
      </list>
    </property>
    <property name="outputFolderFilterList">
      <list>
        <value>(/organizations/[^/]+)*/temp(/[^/]+)*</value>
      </list>
    </property>
    <property name="tenantNameNotSupportedSymbols">
      <value>[\|&amp;+*?\&lt;\>/\\]</value>
    </property>
    <property name="tenantIdNotSupportedSymbols">
      <value>[~!\+\-#\$%\^\|\s]</value>
    </property>
    <property name="resourceIdNotSupportedSymbols">
      <value>[~!#\$%^|\s`@&amp;*()\-+={}\[\]:;"'\&lt;\>,?/\|\\]</value>
    </property>
    <property name="publicFolderUri">
      <value>/public</value>
    </property>
    <!--Application Themes-->
    <property name="themeDefaultName" value="default"/>
    <property name="themeFolderName" value="/themes"/>
    <property name="themeServletPrefix" value="_themes"/>
    <!--Date formats-->
    <property name="dateFormat" value="M/d/yyyy"/>
    <property name="currentYearDateFormat" value="MMMMM d"/>
    <property name="timestampFormat" value="M/d/yyyy hh:mmaaa"/>
    <property name="timeFormat" value="hh:mmaaa"/>
    <property name="entitiesPerPage" value="20"/>
    <property name="tempFolderUri" value="/temp"/>
    <property name="organizationsFolderUri" value="/organizations"/>
    <property name="jdbcDriversFolderUri" value="/jdbc"/>
    <property name="enableSaveToHostFS" value="false"/>
    <property name="optimizeJavaScript" value="${javascript.optimize}"/>
    <property name="defaultAddToDomainDependents" value="true"/>
    <property name="defaultDomainDependentsBlockAndUpdate" value="true"/>
  </bean>
</pre>

Virtualizers

By default we use the File virtualizer, com.jaspersoft.jasperserver.api.engine.common.service.impl.FileVirtualizerFactory, when you expect a lot of concurrency we recommend the Shared virtualizer, com.jaspersoft.jasperserver.api.engine.common.service.impl.SharedVirtualizerStoreFactory.

For report execution the File Virtualizer will limit the number of pages stored in the RAM to the default value defined in WEB-INF/applicationContext.xml. By default this is 300.

  <!--report virtualizers-->
  <bean id="fileVirtualizerFactory" class="com.jaspersoft.jasperserver.api.engine.common.service.impl.FileVirtualizerFactory">
    <property name="maxSize" value="300"/>
    <property name="directory" value="${java.io.tmpdir}"/>
  </bean>
 
  <!--comment the above bean and uncomment this one to use a shared virtualizer-->
  <!--<bean id="fileVirtualizerFactory" class="com.jaspersoft.jasperserver.api.engine.common.service.impl.SharedVirtualizerStoreFactory">
        <property name="maxSize" value="5000"></property>
        <property name="storeFactory">
            <bean class="net.sf.jasperreports.engine.util.SwapFileVirtualizerStoreFactory">
                <property name="directory" value="${java.io.tmpdir}"/>
                <property name="blockSize" value="4096"/>
                <property name="minGrowCount" value="64"/>
            </bean>
        </property>
    </bean>-->

Using the Share Virtualizer is more robust than the FileVirtualizer in a concurrent report generation scenario.

The performance will be greater if you avoid swapping so we recommend that you set the maxSize of the shared Virtualizer as high as possible depending on your RAM allocation

  <!--resources bean for jpivot-->
  <bean id="jpivot-resources" class="com.tonbeller.tbutils.res.Resources">
    <property name="resourceBundle">
      <ref bean="messageSource"/>
    </property>
    <property name="encodingProvider">
      <ref bean="encodingProvider"/>
    </property>
  </bean>
  <!--updater definitions so other bean files can add items to beans defined here,
         instead of running tweakWar.js or manually hacking-->
  <!--add hibernate hbm.xml-->
  <bean id="addHibernateConfig" class="com.jaspersoft.jasperserver.api.common.util.spring.GenericBeanUpdaterDefinition">
    <property name="order" value="10"/>
    <property name="beanName" value="sessionFactory"/>
    <property name="propertyName" value="mappingResources"/>
    <property name="operation" value="append"/>
  </bean>
  <!--map an interface to a client impl-->
  <bean id="mapClientClass" class="com.jaspersoft.jasperserver.api.common.util.spring.GenericBeanUpdaterDefinition">
    <property name="order" value="10"/>
    <property name="beanName" value="mappingResourceFactory"/>
    <property name="propertyName" value="implementationClassMappings"/>
    <property name="operation" value="append"/>
  </bean>
  <!--map an interface to a repo impl-->
  <bean id="mapRepoClass" class="com.jaspersoft.jasperserver.api.common.util.spring.GenericBeanUpdaterDefinition">
    <property name="order" value="10"/>
    <property name="beanName" value="persistentMappings"/>
    <property name="propertyName" value="implementationClassMappings"/>
    <property name="operation" value="append"/>
  </bean>
  <!--add a message catalog-->
  <bean id="addMessageCatalog" class="com.jaspersoft.jasperserver.api.common.util.spring.GenericBeanUpdaterDefinition">
    <property name="order" value="10"/>
    <property name="beanName" value="bundlePathsListCe"/>
    <property name="propertyName" value="sourceList"/>
    <property name="operation" value="append"/>
  </bean>
  <!--add a JRXMLFixer-->
  <bean id="addJRXMLFixer" class="com.jaspersoft.jasperserver.api.common.util.spring.GenericBeanUpdaterDefinition">
    <property name="order" value="10"/>
    <property name="beanName" value="engineService"/>
    <property name="propertyName" value="jrxmlFixerList"/>
    <property name="operation" value="append"/>
  </bean>
  <!--export parameters-->
  <bean id="xlsExportParameters" class="com.jaspersoft.jasperserver.api.engine.jasperreports.common.XlsExportParametersBean">
    <property name="detectCellType" value="true"/>
    <property name="onePagePerSheet" value="false"/>
    <property name="removeEmptySpaceBetweenRows" value="true"/>
    <property name="removeEmptySpaceBetweenColumns" value="true"/>
    <property name="whitePageBackground" value="false"/>
    <property name="ignoreGraphics" value="true"/>
    <property name="collapseRowSpan" value="true"/>
    <property name="ignoreCellBorder" value="true"/>
    <property name="fontSizeFixEnabled" value="true"/>
    <property name="maximumRowsPerSheet" value="0"/>
    <property name="xlsFormatPatternsMap" ref="formatPatternsMap"/>
  </bean>
  <bean id="odsExportParameters" class="com.jaspersoft.jasperserver.api.engine.jasperreports.common.OdsExportParametersBean" parent="xlsExportParameters"></bean>
  <bean id="csvExportParameters" class="com.jaspersoft.jasperserver.api.engine.jasperreports.common.CsvExportParametersBean">
    <property name="fieldDelimiter" value=","/>
  </bean>
  <bean id="pdfExportParameters" class="com.jaspersoft.jasperserver.api.engine.jasperreports.common.PdfExportParametersBean"></bean>
  <bean id="txtExportParameters" class="com.jaspersoft.jasperserver.api.engine.jasperreports.common.TxtExportParametersBean">
    <property name="characterWidth" value="10"/>
    <property name="characterHeight" value="10"/>
    <property name="pageHeight" value="100"/>
    <property name="pageWidth" value="80"/>
  </bean>
  <bean id="pptxExportParameters" class="com.jaspersoft.jasperserver.api.engine.jasperreports.common.PptxExportParametersBean">
    <property name="ignoreHyperlink" value="false"/>
  </bean>
  <bean id="jsonMetadataExportParameters" class="com.jaspersoft.jasperserver.api.engine.jasperreports.common.JsonMetadataExportParametersBean"></bean>
  <util:map id="formatPatternsMap">
    <!--entry key="$ #,##0.00" value="$ #,##0.00"/-->
  </util:map>
  <!--end export parameters-->
  <bean id="userTimeZonesList" class="com.jaspersoft.jasperserver.war.common.JdkTimeZonesList">
    <property name="timeZonesIds">
      <list>
        <value>America/Los_Angeles</value>
        <value>America/Denver</value>
        <value>America/Chicago</value>
        <value>America/New_York</value>
        <value>Europe/London</value>
        <value>Europe/Berlin</value>
        <value>Europe/Bucharest</value>
      </list>
    </property>
  </bean>
  <bean id="roleManagerService" class="com.jaspersoft.jasperserver.api.metadata.user.service.impl.RoleManagerServiceImpl">
    <property name="sessionFactory" ref="sessionFactory"/>
    <property name="transactionManager" ref="transactionManager"/>
    <property name="userService">
      <ref bean="${bean.userAuthorityService}"/>
    </property>
  </bean>
  <bean id="standardUserPersistenceHandler" class="com.jaspersoft.jasperserver.api.engine.common.user.StandardUserPersistenceHandler">
    <property name="securityContextProvider" ref="${bean.securityContextProvider}"/>
    <property name="userPersistenceService" ref="${bean.internalUserAuthorityService}"/>
  </bean>
  <!--bean definition for action model service-->
  <bean id="actionModelService" class="com.jaspersoft.jasperserver.api.engine.common.service.impl.ActionModelServiceImpl" lazy-init="false">
    <property name="actionModelXmlURIStub" value="${resource.root}/actionModel"/>
    <property name="actionModelTypes">
      <list>
        <value>adhocIntelligentChart</value>
        <value>adhocChart</value>
        <value>adhocCrosstab</value>
        <value>adhocTable</value>
        <value>navigation</value>
        <value>dashboard</value>
        <value>search</value>
        <value>viewReport</value>
      </list>
    </property>
  </bean>
  <!--bean definition for primary navigation-->
  <bean id="navigationActionModelSupport" class="com.jaspersoft.jasperserver.api.engine.common.service.impl.NavigationActionModelSupport" lazy-init="false" scope="singleton">
    <property name="proVersion" value="${isProVersion}"/>
  </bean>
  <bean id="genericActionModelBuilder" class="com.jaspersoft.jasperserver.war.action.GenericActionModelBuilder" lazy-init="false" scope="singleton">
    <property name="proVersion" value="${isProVersion}"/>
  </bean>
  <bean id="userManagerService" class="com.jaspersoft.jasperserver.api.metadata.user.service.impl.UserManagerServiceImpl">
    <property name="sessionFactory" ref="sessionFactory"/>
    <property name="userService">
      <ref bean="${bean.userAuthorityService}"/>
    </property>
  </bean>
  <bean id="databaseCharactersEscapeResolver" class="com.jaspersoft.jasperserver.api.metadata.common.util.DatabaseCharactersEscapeResolver">
    <property name="charactersEscapeMaps">
      <util:map>
        <entry key="default" value-ref="defaultCharacterEscape"/>
      </util:map>
    </property>
    <property name="dialect">
      <value>${metadata.hibernate.dialect}</value>
    </property>
  </bean>
  <util:map id="defaultCharacterEscape" key-type="java.lang.String" value-type="java.lang.String">
    <entry key="\" value="!\"/>
    <entry key="!" value="!!"/>
    <entry key="%" value="!%"/>
  </util:map>
  <util:list id="roleAccessUrisList">
    <bean class="com.jaspersoft.jasperserver.war.common.RoleAccessUris">
      <property name="roleName" value="ROLE_ADMINISTRATOR"/>
      <property name="uris">
        <list>
          <bean class="com.jaspersoft.jasperserver.war.common.UriDescriptor">
            <property name="uri" value="/temp"/>
            <property name="absolute" value="false"/>
          </bean>
        </list>
      </property>
    </bean>
  </util:list>
  <bean id="roleAccessUrisResolver" class="com.jaspersoft.jasperserver.war.common.RoleAccessUrisResolver">
    <property name="roleAccessUrisList" ref="${bean.roleAccessUrisList}"/>
  </bean>
  <bean id="mailSenderService" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="host" value="${report.scheduler.mail.sender.host}"/>
    <property name="username" value="${report.scheduler.mail.sender.username}"/>
    <property name="password" value="${report.scheduler.mail.sender.password}"/>
    <property name="protocol" value="${report.scheduler.mail.sender.protocol}"/>
    <property name="port" value="${report.scheduler.mail.sender.port}"/>
    <property name="javaMailProperties">
      <props>
        <prop key="mail.smtp.auth">false</prop>
      </props>
    </property>
  </bean>
  <bean id="mailService" class="com.jaspersoft.jasperserver.war.mail.impl.MailServiceImpl">
    <property name="javaMailSender" ref="mailSenderService"/>
    <property name="mailFromAddress" value="${report.scheduler.mail.sender.from}"/>
    <property name="userAuthorityService" ref="${bean.internalUserAuthorityService}"/>
    <property name="encodingProvider" ref="encodingProvider"/>
  </bean>
  <bean id="uiExceptionRouter" class="com.jaspersoft.jasperserver.war.action.UIExceptionRouterImpl"/>
  <bean id="emailInputValidator" class="com.jaspersoft.jasperserver.core.util.validators.EmailInputValidator">
    <property name="pattern">
      <bean class="java.util.regex.Pattern" factory-method="compile">
        <constructor-arg>
          <util:property-path path="configurationBean.emailRegExpPattern"/>
        </constructor-arg>
      </bean>
    </property>
  </bean>
  <!--a hibernate listener to cactch updates to Global Properties resource-->
  <bean id="propertiesSaveOrUpdateListener" class="com.jaspersoft.jasperserver.api.metadata.common.service.impl.PropertiesSaveOrUpdateListener">
    <!--the listener is not wired to the propertiesManagementService yet, because we dont want to use the service in the import/export context-->
    <!--property name="propertiesManagementServiceName" value="propertiesManagementService"/-->
  </bean>
  <!--setting system properties needed for EHCache (or anything else)
         EHCache can use prop placeholders like ${blah.blah} in its conf files; these are replaced
         with the value of the corresponding system property.
         That means that the sys property has to be set before you init the EhCacheManagerFactoryBean.
         To ensure this gets done in the right order, add depends-on="sysProperties" to your bean definition.
         See the cacheManager bean in this file for an example.-->
  <bean id="sysProperties" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetObject" value="#{@systemProperties}"/>
    <property name="targetMethod" value="putAll"/>
    <property name="arguments">
      <util:properties>
        <prop key="ehcache.disk.store.dir">#{ systemProperties['java.io.tmpdir'] }</prop>
        <prop key="net.sf.ehcache.disabled">${property.ehcache.disabled}</prop>
      </util:properties>
    </property>
  </bean>
  <bean id="diagnosticAttributeBuilder" class="com.jaspersoft.jasperserver.api.logging.diagnostic.helper.DiagnosticAttributeBuilder">
    <property name="messageSource" ref="messageSource"/>
  </bean>
  <util:map id="applyClientTimezoneFormatting" key-type="java.lang.String" value-type="java.lang.Boolean">
    <entry key="java.util.Date" value="false"/>
    <entry key="java.sql.Date" value="false"/>
    <entry key="java.sql.Timestamp" value="true"/>
    <entry key="java.sql.Time" value="true"/>
  </util:map>
  <bean id="jdbcDriverService" class="com.jaspersoft.jasperserver.api.common.service.impl.JdbcDriverServiceImpl">
    <!--<property name="repository" ref="${bean.internalRepositoryService}"/>-->
    <property name="repository" ref="hibernateRepositoryService"/>
    <property name="systemClassLoaderFirst" value="false"/>
    <property name="jdbcDriversFolder" value="#{configurationBean.jdbcDriversFolderUri}"/>
  </bean>
  <bean id="awsDataSourceRecovery" class="com.jaspersoft.jasperserver.api.engine.jasperreports.util.AwsDataSourceRecovery">
    <property name="awsRegions" ref="awsRegions"/>
    <property name="awsDataSourceActiveStatus" value="available"/>
    <property name="awsProperties" ref="awsProperties"/>
    <property name="messageSource" ref="messageSource"/>
    <property name="awsEc2MetadataClient" ref="awsEc2MetadataClient"/>
    <property name="awsCredentialUtil" ref="awsCredentialUtil"/>
  </bean>
  <bean id="awsEc2MetadataClient" class="com.jaspersoft.jasperserver.api.engine.jasperreports.util.AwsEc2MetadataClient">
    <property name="awsRegions" ref="awsRegions"/>
  </bean>
  <bean id="awsCredentialUtil" class="com.jaspersoft.jasperserver.api.engine.jasperreports.util.AwsCredentialUtil">
    <aop:scoped-proxy/>
    <property name="messageSource" ref="messageSource"/>
  </bean>
  <bean id="awsProperties" class="com.jaspersoft.jasperserver.api.engine.jasperreports.util.AwsProperties">
    <property name="securityGroupChangesEnabled" value="${aws.db.security.group.changes.enabled}"/>
    <property name="securityGroupName" value="${aws.db.security.group.name}"/>
    <property name="securityGroupDescription" value="${aws.db.security.group.description}"/>
    <property name="securityGroupIngressPublicIp" value="${aws.db.security.group.ingressPublicIp}"/>
    <property name="suppressEc2CredentialsWarnings" value="${aws.db.security.group.suppressEc2CredentialsWarnings}"/>
    <property name="awsEc2MetadataClient" ref="awsEc2MetadataClient"/>
    <property name="messageSource" ref="messageSource"/>
  </bean>
  <bean id="instanceProductTypeResolverCe" class="com.jaspersoft.jasperserver.api.engine.jasperreports.util.InstanceProductTypeResolver" factory-method="getInstance" lazy-init="false"/>
  <util:list id="awsRegions">
    <value>us-east-1.amazonaws.com</value>
    <value>us-west-2.amazonaws.com</value>
    <value>us-west-1.amazonaws.com</value>
    <value>eu-west-1.amazonaws.com</value>
    <value>ap-southeast-1.amazonaws.com</value>
    <value>ap-southeast-2.amazonaws.com</value>
    <value>ap-northeast-1.amazonaws.com</value>
    <value>sa-east-1.amazonaws.com</value>
  </util:list>
  <bean id="javascriptOptimizationSettings" class="com.jaspersoft.jasperserver.war.common.JavascriptOptimizationSettings" depends-on="configurationBean">
    <property name="useOptimizedJavascript" value="#{configurationBean.optimizeJavaScript}"/>
    <property name="optimizedJavascriptPath" value="optimized-scripts"/>
  </bean>
  <bean id="profileAttributesResolverAspect" class="com.jaspersoft.jasperserver.api.metadata.user.service.impl.ProfileAttributesResolverAspect">
    <property name="profileAttributesResolver" ref="profileAttributesResolver"/>
  </bean>
  <bean id="excludedResourcesFromAttrResolvingCe" class="java.util.HashSet">
    <constructor-arg index="0" type="java.util.Collection">
      <set>
        <!--Add Resource Classes that should not resolve profile attributes-->
      </set>
    </constructor-arg>
  </bean>
  <aop:config>
    <aop:aspect ref="profileAttributesResolverAspect">
      <aop:pointcut id="dataSourceResolver" expression="execution(com.jaspersoft.jasperserver.api.metadata.jasperreports.service.ReportDataSourceService                            com.jaspersoft.jasperserver.api.metadata.jasperreports.service.ReportDataSourceServiceFactory.createService(com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.ReportDataSource)))"/>
      <aop:around pointcut-ref="dataSourceResolver" method="resolveDataSourceAttributes"/>
      <aop:pointcut id="awsCredentialsResolver" expression="execution(com.amazonaws.auth.AWSCredentials com.jaspersoft.jasperserver.api.engine.jasperreports.util.AwsCredentialUtil.getAWSCredentials(java.lang.String, java.lang.String, java.lang.String)))"/>
      <aop:around pointcut-ref="awsCredentialsResolver" method="resolveAwsCredentialAttributes"/>
    </aop:aspect>
  </aop:config>
</beans>

Feedback
randomness