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 35 Next »

Overview

Use this recipe to build a skeleton web application named M2Rice which has the Rice KEW and Rice KSB Services embedded in it.

Development Environment

Operating System

Windows XP


JDK

1.5.0_12


Maven

2.0.9

M2_HOME

C:\apache-maven-2.0.9

M2_OPTS

-Xms256m -Xmx512m

M2_REPO

C:\JavaLib\mvnrepository


Application Server

localhost

Application Container

Tomcat 5.5.23

CATALINA_HOME

C:\Tomcat 5.5


IDE

Eclipse Ganymede 3.4.0

Workspace

C:\Development\KualiRice.workspace

Rice Source Directory

C:\Development\KualiRice.workspace\KualiRice0.9.3

Build Sheet

  1. Create Maven Project
    Open a command prompt
    Navigate to C:\Development\KualiRice.workspace
    Create a web application project using the maven-archetype-webapp archetype (aka project template)
    C:\Development\KualiRice.workspace\M2Rice> mvn archetype:create -DgroupId=edu.ucdavis.iet -DartifactId=M2Rice -DarchetypeArtifactId=maven-archetype-webapp
    
    This creates a directory named M2Rice (after the artifactId) in C:\Development\KualiRice.workspace

  2. Add Kuali dependencies
    In Windows Explorer, navigate to C:\Development\KualiRice.workspace\M2Rice and find pom.xml
    Add the following code to pom.xml:
    /M2Rice/pom.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 \M2Rice\src\main\webapp\WEB-INF and find web.xml
    Add the following code to web.xml
    /M2Rice/src/main/webapp/WEB-INF/web.xml
    <web-app>
      <display-name>M2Rice</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 \M2Rice\src\main\resources, create a new file called M2Rice-config.xml
    /M2Rice/src/main/resources/M2Rice-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. Generate an Eclipse Project
    At the command prompt, navigate to C:\Development\KualiRice.workspace\M2Rice
    Generate the Eclipse project:
    C:\Development\KualiRice.workspace\M2Rice> mvn eclipse:eclipse
    

  6. Import M2Rice as an Eclipse project
    Start Eclipse
    Select C:\Development\KualiRice.workspace as your workspace
    Go to File -> Import -> Existing projects into Workspace
    Select C:\Development\KualiRice.workspace\M2Rice as the root directory and click Finish


  7. Embed the Kuali Service Bus and Kuali Enterprise Workflow
    In the project structure, right-click on src/main/resources, then New -> File
    Name the file M2Rice-RiceSpringBeans.xml
    Configure the Spring Beans as follows:
    /M2Rice/src/main/resources/M2Rice-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>
    

  8. Build WAR File
    Back at the command prompt, navigate to C:\Development\KualiRice.workspace\M2Rice
    Generate the WAR file:
    C:\Development\KualiRice.workspace\M2Rice> mvn package
    
    

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

Reference

Building Web Applications with Maven 2: http://today.java.net/pub/a/today/2007/03/01/building-web-applications-with-maven-2.html
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

  • No labels