Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

Prerequisites

  1. Procure the rice-api and rice-impl JARs and all transitive dependencies using either of the following methods:
    • Download JARs and all transitive dependencies from the Kuali Rice website
    • Download ucd-rice-standalone-server WAR from Artifactory. This WAR contains all dependencies.
    • Add rice-api and rice-impl as Maven dependencies in your project.
      pom.xml
      <repositories>
          <repository>
              <id>kuali</id>
              <name>Kuali Repository</name>
      	<url>https://test.kuali.org/maven</url>
          </repository>  
      </repositories>
      
      <dependency>
          <groupId>org.kuali.rice</groupId>
          <artifactId>rice-api</artifactId>
          <version>${rice-api.version}</version>               
      </dependency>	
      <dependency>
          <groupId>org.kuali.rice</groupId>
          <artifactId>rice-impl</artifactId>
          <version>${rice-impl.version}</version>
          <exclusions>
              <exclusion>
                  <groupId>com.oracle</groupId>
                  <artifactId>ojdbc14</artifactId>
                  </exclusion>
              </exclusions>
      </dependency>
      

      We exclude the Oracle JDBC driver since it is a commercial product and not available on any public Maven repositories.

Declaring Properties

We use a simple XML configuration to declare properties as key-value pairs. For example:

classpath:edu/ucdavis/myapp/config/client-config.xml
<config>
    <param name="datasource.ojb.platform">Oracle</param>
    <param name="datasource.platform">org.kuali.rice.core.database.platform.OraclePlatform</param>
    <param name="datasource.url">jdbc:oracle:thin:@dbhost.ucdavis.edu:1521:SID</param>
    <param name="datasource.driver.name">oracle.jdbc.driver.OracleDriver</param>
    <param name="datasource.pool.validationQuery">select 1 from duak</param>
    <param name="datasource.pool.maxWait">30000</param>
    <param name="datasource.pool.size">30</param>
    <param name="datasource.pool.maxActive">50</param>
    <param name="datasource.minIdle">7</param>
    <param name="datasource.initialSize">7</param>
    <param name="datasource.accessToUnderlyingConnectionAllowed">true</param>
    <param name="datasource.username">my_db_user</param>
    <param name="datasource.password">my_db_password</param>
<config>

Spring Property Configuration

Kuali Rice uses Spring's PropertyPlaceholderConfigurer to make properties available to Spring tokens.

classpath:edu/ucdavis/myapp/config/application-common.xml
<bean id="config" class="org.kuali.rice.core.config.spring.ConfigFactoryBean">
    <property name="configLocations">
        <list>
            <value>classpath:edu/ucdavis/myapp/config/client-config.xml</value>
        </list>
    </property>
</bean>

<bean id="configProperties" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetObject" ref="config" />
    <property name="targetMethod" value="getProperties" />
</bean>

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="properties" ref="configProperties" />
</bean>

Data Source Configuration

Kuali Rice uses Java Open Transaction Manager, so we declare the appropriate beans.

classpath:edu/ucdavis/myapp/config/application-data.xml
<bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean">
    <property name="defaultTimeout" value="${transaction.timeout}"/>
</bean>
	
<bean id="jtaTransactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
    <property name="transactionManager" ref="jotm"/>
    <property name="userTransaction" ref="jotm"/>
</bean>

We must declare three data sources:

  1. A transactional data source where the local client application's Rice tables are located. This is required by JOTM.
    classpath:edu/ucdavis/myapp/config/application-data.xml
    <bean id="dataSource" class="org.kuali.rice.core.database.XAPoolDataSource">
        <property name="transactionManager" ref="jotm" />
        <property name="driverClassName" value="${datasource.driver.name}" />
        <property name="url" value="${datasource.url}" />
        <property name="maxSize" value="${datasource.pool.size}" />
        <property name="minSize" value="${datasource.initialSize}" />
        <property name="maxWait" value="${datasource.pool.maxWait}" />
        <property name="validationQuery" value="${datasource.pool.validationQuery}" />
        <property name="username" value="${datasource.username}" />
        <property name="password" value="${datasource.password}" />
    </bean>
    
  2. A non-transactional data source pointing to those same Rice tables. This is required by Quartz.
    classpath:edu/ucdavis/myapp/config/application-data.xml
    <bean id="nonTransactionalDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${datasource.driver.name}" />
        <property name="url" value="${datasource.url}" />
        <property name="maxActive" value="${datasource.pool.maxActive}" />
        <property name="minIdle" value="${datasource.minIdle}" />
        <property name="initialSize" value="${datasource.initialSize}" />
        <property name="validationQuery" value="${datasource.pool.validationQuery}" />
        <property name="username" value="${datasource.username}" />
        <property name="password" value="${datasource.password}" />
        <property name="accessToUnderlyingConnectionAllowed" value="${datasource.accessToUnderlyingConnectionAllowed}" />
    </bean>
    
  3. A transactional data source pointing to the database of the Rice Standalone Server.
    classpath:edu/ucdavis/myapp/config/application-data.xml
    <bean id="standaloneDataSource" class="org.kuali.rice.core.database.XAPoolDataSource">
        <property name="transactionManager" ref="jotm" />
        <property name="driverClassName" value="${standalone.datasource.driver.name}" />
        <property name="url" value="${standalone.datasource.url}" />
        <property name="maxSize" value="${standalone.datasource.pool.size}" />
        <property name="minSize" value="${standalone.datasource.initialSize}" />
        <property name="maxWait" value="${standalone.datasource.pool.maxWait}" />
        <property name="validationQuery" value="${standalone.datasource.pool.validationQuery}" />
        <property name="username" value="${standalone.datasource.username}" />
        <property name="password" value="${standalone.datasource.password}" />
    </bean>
    
  • No labels