Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Create Maven Project
    Start Eclipse
    Select C:\Development\KualiRice.workspace as your workspace
    Go to File -> New -> Project -> Maven Project
    Accept the default Workspace location and click Next
    In the list of archetypes, select maven-archetype-webapp and click Next
    For Group Id, enter edu.ucdavis.iet (or whatever)
    For ArtifactId, enter m2eclipseRice and click Finish
    This creates a directory named m2eclipseRice (after the artifactId) in C:\Development\KualiRice.workspace

  2. Add Kuali dependencies
    In the project structure, find pom.xml
    Add the following code to pom.xml:
    Code Block
    titlepom.xml
    <dependencies>
    ...
      <dependency>
        <groupId>org.kuali.rice</groupId>
        <artifactId>rice-ksb</artifactId>
        <version>0.9.3</version>
      </dependency>
    </dependencies>
    
    <repositories>
      <repository>
        <id>kuali</id>
        <name>Kuali Repository</name>
        <url>https://test.kuali.org/maven/</url>
      </repository>
    </repositories>
    

  3. Configure the Kuali Service Bus Dispatcher Servlet
    Navigate to src/main/webapp/WEB-INF and find web.xml
    Add the following code to web.xml
    Code Block
    titlesrc/main/webapp/WEB-INF/web.xml
    <web-app>
      <display-name>m2eclipseRice</display-name>
      
      <servlet>
        <servlet-name>remoting</servlet-name>
        <servlet-class>edu.iu.uis.eden.messaging.servlet.KSBDispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
      </servlet>
    
      <servlet-mapping>
        <servlet-name>remoting</servlet-name>
        <url-pattern>/remoting/*</url-pattern>
      </servlet-mapping>
    
    </web-app>
    

  4. Create Rice Runtime Configuration File
    In src/main/resources, create a new file called m2eclipseRice-config.xml
    Code Block
    titlesrc/main/resources/m2eclipseRice-config.xml
    <config>
    
        <!-- Core -->
        <param name="application.url">http://localhost:8080/M2Rice</param>
    
        <!-- Database -->
        <param name="datasource.url">jdbc:mysql://localhost:3306/kricedev</param>
        <param name="datasource.username">KRICEDEV</param>
        <param name="datasource.password">*** password ***</param>
        <param name="datasource.ojb.platform">MySQL</param>
        <param name="datasource.platform">org.kuali.rice.database.platform.MySQLPlatform</param>
        <param name="datasource.driver.name">com.mysql.jdbc.Driver</param>
        <param name="datasource.pool.validationQuery">select 1 from dual</param>
        <param name="datasource.pool.maxWait">30000</param>
        <param name="datasource.pool.minSize">2</param>
        <param name="datasource.pool.maxSize">5</param>
    
        <!-- KSB -->
        <param name="serviceServletUrl">${application.url}/remoting/</param>
        <param name="keystore.file">classpath:rice.keystore</param>
        <param name="keystore.alias">*** key alias ***</param>
        <param name="keystore.password">*** password ***</param>
    
        <!-- KEW -->
        <param name="workflow.url">${application.url}/en</param>
        <param name="client.protocol">embedded</param>
        <param name="plugin.dir">/usr/local/rice/plugins</param>
        <param name="attachment.dir.location">/usr/local/rice/kew_attachments</param>
    
    </config>
    

  5. Embed the Kuali Service Bus and Kuali Enterprise Workflow
    In src/main/resources, create a new file called m2eclipseRice-RiceSpringBeans.xml
    Configure the Spring Beans as follows:
    Code Block
    titlesrc/main/resources/m2eclipseRice-RiceSpringBeans.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
    
    <bean id="config" class="org.kuali.rice.config.spring.ConfigFactoryBean">
      <property name="configLocations">
        <list>
          <value>classpath:M2Rice-config.xml</value>
        </list>
      </property>
    </bean>
    
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
      <property name="properties" ref="configProperties" />
    </bean>
    
    <bean id="configProperties" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
      <property name="targetObject" ref="config" />
      <property name="targetMethod" value="getProperties" />
    </bean>
    
    <bean id="rice" class="org.kuali.rice.config.RiceConfigurer">
      <property name="dataSource" ref="riceDataSource" />
      <property name="transactionManager" ref="jotm" />
      <property name="userTransaction" ref="jotm" />
      <property name="properties">
        <props>
          <prop key="message.entity">M2Rice</prop>
          <prop key="message.persistence">true</prop>
    
          <prop key="message.delivery">asynchronous</prop>
          <prop key="Routing.ImmediateExceptionRouting">false</prop>
          <prop key="RouteQueue.timeIncrement">1000</prop>
          <prop key="RouteQueue.maxRetryAttempts">3</prop>
          <prop key="useQuartzDatabase">true</prop>
          <prop key="ksb.org.quartz.scheduler.instanceId">AUTO</prop>
          <prop key="ksb.org.quartz.scheduler.instanceName">KSBScheduler</prop>
          <prop key="ksb.org.quartz.jobStore.isClustered">true</prop>
          <prop key="ksb.org.quartz.jobStore.tablePrefix">KR_QRTZ_</prop>
        </props>
      </property>
      <property name="modules">
        <list>
          <bean class="edu.iu.uis.eden.messaging.config.KSBConfigurer">
            <property name="serviceServletUrl" value="${serviceServletUrl}" />
          </bean>
          <bean class="org.kuali.workflow.config.KEWConfigurer">
            <property name="dataSource" ref="riceDataSource"/>
          </bean>
        </list>
      </property>
    </bean>
    
    <bean id="ksbConfigurer" class="edu.iu.uis.eden.config.spring.KSBSpringConfigurer">
    	<property name="clientProtocol" value="embedded" />
    	<property name="messageEntity" value="M2Rice" />
    	<property name="dataSource" ref="riceDataSource" />
    	<property name="transactionManager">
    		<ref bean="jotm" />
    	</property>
    	<property name="userTransaction">
    		<ref bean="jotm" />
    	</property>
    </bean>
    
    <bean id="riceDataSource" class="org.kuali.rice.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.maxSize}" />
    	<property name="minSize" value="${datasource.pool.minSize}" />
    	<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>
    
    <bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean" />
    
    </beans>
    

  6. Build WAR File
    In the project structure, right-click on pom.xml
    Select Run As -> Maven package
    m2eclipse will build \m2eclipseRice\target\m2eclipseRice.war


  7. Deploy M2Rice Application
    Copy \m2eclipseRice\target\m2eclipseRice.war to %CATALINA_HOME%\webapps
    Start Tomcat
    Open the URL: http://localhost:8080/m2eclipseRice/index.jsp

Reference

Building Web Applications with Maven 2m2eclipse and WTP How To: http://todaydocs.javacodehaus.netorg/pubdisplay/a/today/2007/03/01/building-web-applications-with-maven-2.htmlM2ECLIPSE/WTP+mini+howto#WTPminihowto-Launchwebapplicationontheserver
Rice XML Configuration Subsystem: https://test.kuali.org/confluence/display/KULRICE/Rice+XML+Configuration+Subsystem
Advanced Configuration: https://test.kuali.org/confluence/display/KULRICE/Advanced+Installation+and+Configuration
KSB Module Configuration: https://test.kuali.org/confluence/display/KULRICE/KSB+Module+Configuration
Configuring your application to use KSB: https://test.kuali.org/confluence/display/KULRICE/Configuring+your+application+to+use+KSB
KEW Module Configuration: https://test.kuali.org/confluence/display/KULRICE/KEW+Module+Configuration#KEWModuleConfiguration-Embedded