You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dw...@apache.org on 2009/03/12 14:51:26 UTC

svn commit: r752865 - in /geronimo/daytrader/branches/2.1.3: ./ modules/ear/ modules/ear/src/main/resources/META-INF/ modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/ modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/ejb3/...

Author: dwoods
Date: Thu Mar 12 13:51:25 2009
New Revision: 752865

URL: http://svn.apache.org/viewvc?rev=752865&view=rev
Log:
DAYTRADER-65 Enable daytrader works with JBoss 5.  Applied patch from Forrest Xia.

Added:
    geronimo/daytrader/branches/2.1.3/README.jboss5
    geronimo/daytrader/branches/2.1.3/modules/ear/src/main/resources/META-INF/persistence.xml.jboss5
    geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/dbscripts/other/
    geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/dbscripts/other/Table.ddl
Removed:
    geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/resources/META-INF/jboss.xml
    geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/resources/META-INF/jbosscmp-jdbc.xml
    geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/WEB-INF/jboss-web.xml
Modified:
    geronimo/daytrader/branches/2.1.3/modules/ear/pom.xml
    geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/TradeConfig.java
    geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/ejb3/TradeSLSBBean.java
    geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/resources/META-INF/persistence.xml
    geronimo/daytrader/branches/2.1.3/modules/web/src/main/java/org/apache/geronimo/samples/daytrader/web/TradeConfigServlet.java
    geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/config.jsp
    geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/dbscripts/db2/Table.ddl

Added: geronimo/daytrader/branches/2.1.3/README.jboss5
URL: http://svn.apache.org/viewvc/geronimo/daytrader/branches/2.1.3/README.jboss5?rev=752865&view=auto
==============================================================================
--- geronimo/daytrader/branches/2.1.3/README.jboss5 (added)
+++ geronimo/daytrader/branches/2.1.3/README.jboss5 Thu Mar 12 13:51:25 2009
@@ -0,0 +1,177 @@
+(C) Copyright 2009 The Apache Software Foundation.
+----------------------------------------------------------------------
+
+These are instructions for building and using daytrader with JBoss 5 standard configuration:
+
+1. Create a JMS definition file "daytrader-jboss5-destinations-service.xml", and copy to
+$JBOSS_INST_HOME/server/standard/deploy/ directory. The file has the fiollowing contents:
+
+<?xml version="1.0" encoding="UTF-8"?>
+<server>
+  <mbean code="org.jboss.jms.server.destination.TopicService"
+      name="jboss.messaging.destination:service=Topic,name=jms/TradeStreamerTopic"
+      xmbean-dd="xmdesc/Topic-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+      <attribute name="JNDIName">TradeStreamerTopic</attribute>
+   </mbean>
+   <mbean code="org.jboss.jms.server.destination.QueueService"
+      name="jboss.messaging.destination:service=Queue,name=jms/TradeBrokerQueue"
+      xmbean-dd="xmdesc/Queue-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+      <attribute name="JNDIName">TradeBrokerQueue</attribute>
+   </mbean>
+</server>
+
+
+
+
+2. Create a datasource for daytrader. 
+For example, If using MySQL, create a mysql database called tradedb and load it with 
+the derby.sql.  Create a user named daytrader and grant the proper privileges as follows:
+
+    grant all on tradedb.* to daytrader identified by 'daytrader';
+    grant all on tradedb.* to daytrader@localhost identified by 'daytrader';
+
+Then create a JBoss mysql datasource file "daytrader-jboss5-mysql-ds.xml" with the following contents:
+
+<!-- mySQL datasource -->
+<?xml version="1.0" encoding="UTF-8"?>
+<datasources>
+  <local-tx-datasource>
+    <!-- Don't change this datasource jndi name -->
+    <jndi-name>jdbc/TradeDataSource</jndi-name>
+    <connection-url>jdbc:mysql://localhost:3306/tradedb</connection-url>
+    <driver-class>com.mysql.jdbc.Driver</driver-class>
+    <user-name>daytrader</user-name>
+    <password>daytrader</password>
+    <exception-sorter-class-name>
+        org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
+    </exception-sorter-class-name>    
+    <metadata>
+       <type-mapping>mySQL</type-mapping>
+    </metadata>
+  </local-tx-datasource>
+</datasources>
+
+then copy to $JBOSS_INST_HOME/server/standard/deploy/ directory.
+
+Sample of DB2 datasource:
+<?xml version="1.0" encoding="UTF-8"?>
+<datasources>
+  <local-tx-datasource>
+    <jndi-name>jdbc/TradeDataSource</jndi-name>
+    <use-java-context>false</use-java-context>
+    <connection-url>jdbc:db2://localhost:50000/tradedb</connection-url>
+    <driver-class>com.ibm.db2.jcc.DB2Driver</driver-class>
+    <user-name>trade</user-name>
+    <password>trade</password>
+    <check-valid-connection-sql>select * from sysibm.tables</check-valid-connection-sql>
+    <metadata>
+            <type-mapping>DB2</type-mapping>
+    </metadata>
+  </local-tx-datasource>
+</datasources>
+
+Sample of Oracle datasource:
+<?xml version="1.0" encoding="UTF-8"?>
+<datasources>
+  <local-tx-datasource>
+    <jndi-name>jdbc/TradeDataSource</jndi-name>
+    <connection-url>jdbc:oracle:thin:@localhost:1521:tradedb</connection-url>
+	 <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
+    <user-name>trade</user-name>
+    <password>trade</password>
+    <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
+      <metadata>
+         <type-mapping>Oracle10g</type-mapping>
+      </metadata>
+  </local-tx-datasource>
+</datasources>
+
+
+
+
+3. Rename these files manually:
+    # $DAYTRADER_SRC_HOME/modules/ejb/src/main/resources/META-INF/persistence.xml
+    --> $DAYTRADER_SRC_HOME/modules/ejb/src/main/resources/META-INF/persistence.xml.bak
+    
+    # $DAYTRADER_SRC_HOME/modules/ear/src/main/resources/META-INF/persistence.xml.jboss5
+    --> $DAYTRADER_SRC_HOME/modules/ear/src/main/resources/META-INF/persistence.xml
+    
+    
+    
+
+4. Use proper datasource jndi name according to your database vendor. Modify these files:
+    $DAYTRADER_SRC_HOME/modules/ear/src/main/resources/META-INF/persistence.xml
+    $DAYTRADER_SRC_HOME/modules/ejb/src/main/resources/META-INF/jboss.xml
+    $DAYTRADER_SRC_HOME/modules/web/src/main/webapp/WEB-INF/jboss-web.xml
+    
+
+
+
+5. Modify $DAYTRADER_SRC_HOME/modules/ejb/pom.xml to comment out OpenJPA PCEnhancer Ant task:
+        <!--<plugin>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>compile</phase>
+                        <configuration>
+                            <tasks>
+                                <path id="enhance.path.ref">
+                                    <fileset dir="${project.build.outputDirectory}">
+                                        <include name="**/*.class"/>
+                                    </fileset>
+                                </path>
+                                <pathconvert property="enhance.files"
+                                             refid="enhance.path.ref"
+                                             pathsep=" "/>
+                                <java classname="org.apache.openjpa.enhance.PCEnhancer">
+                                    <arg line="-p persistence.xml"/>
+                                    <arg line="${enhance.files}"/>
+                                    <classpath>
+                                        <path refid="maven.dependency.classpath"/>
+                                        <path refid="maven.compile.classpath"/>
+                                    </classpath>
+                                </java>
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>-->
+
+
+
+
+6. Modify $DAYTRADER_SRC_HOME/modules/ear/pom.xml to comment out daytrader streamer client module
+Since not figure out how to make it work in jboss 5 :-/
+
+        <!--<dependency>
+            <groupId>org.apache.geronimo.daytrader</groupId>
+            <artifactId>daytrader-streamer</artifactId>
+            <version>${pom.version}</version>
+        </dependency>-->
+        
+        
+            <!--<javaModule>
+                <groupId>org.apache.geronimo.daytrader</groupId>
+                <artifactId>daytrader-streamer</artifactId>
+                <bundleFileName>streamer.jar</bundleFileName>
+                <includeInApplicationXml>true</includeInApplicationXml>
+            </javaModule>-->                             
+
+
+
+7. Build it to ear ball:
+    mvn clean install
+
+
+
+8. Finally, copy the $DAYTRADER_SRC_HOME/modules/ear/target/daytrader-ear-2.2-SNAPSHOT.ear
+to your $JBOSS_INST_HOME/server/standard/deploy/ directory.
+
+Good luck!

Modified: geronimo/daytrader/branches/2.1.3/modules/ear/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/daytrader/branches/2.1.3/modules/ear/pom.xml?rev=752865&r1=752864&r2=752865&view=diff
==============================================================================
--- geronimo/daytrader/branches/2.1.3/modules/ear/pom.xml (original)
+++ geronimo/daytrader/branches/2.1.3/modules/ear/pom.xml Thu Mar 12 13:51:25 2009
@@ -98,6 +98,7 @@
                     HACK: Include legal muck from maven-remote-resources-plugin
                     -->
                     <resourcesDir>${project.build.outputDirectory}</resourcesDir>
+                    <earSourceDirectory>${basedir}/src/main/resources</earSourceDirectory>
                 </configuration>
             </plugin>
         </plugins>

Added: geronimo/daytrader/branches/2.1.3/modules/ear/src/main/resources/META-INF/persistence.xml.jboss5
URL: http://svn.apache.org/viewvc/geronimo/daytrader/branches/2.1.3/modules/ear/src/main/resources/META-INF/persistence.xml.jboss5?rev=752865&view=auto
==============================================================================
--- geronimo/daytrader/branches/2.1.3/modules/ear/src/main/resources/META-INF/persistence.xml.jboss5 (added)
+++ geronimo/daytrader/branches/2.1.3/modules/ear/src/main/resources/META-INF/persistence.xml.jboss5 Thu Mar 12 13:51:25 2009
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
+   version="1.0">
+
+
+    <persistence-unit transaction-type="JTA" name="daytrader">
+        <provider>org.hibernate.ejb.HibernatePersistence</provider>
+        <!-- If using DB2, comment out this line -->
+        <!--<jta-data-source>jdbc/TradeDataSource</jta-data-source>  -->
+        <!-- If using mySQL or Oracle, comment out this line -->
+        <jta-data-source>java:jdbc/TradeDataSource</jta-data-source>
+        
+        
+        <class>org.apache.geronimo.samples.daytrader.AccountDataBean</class>
+        <class>org.apache.geronimo.samples.daytrader.AccountProfileDataBean</class>
+        <class>org.apache.geronimo.samples.daytrader.HoldingDataBean</class>
+        <class>org.apache.geronimo.samples.daytrader.OrderDataBean</class>
+        <class>org.apache.geronimo.samples.daytrader.QuoteDataBean</class>
+        <exclude-unlisted-classes>true</exclude-unlisted-classes>
+        
+        <properties>
+            <!-- According to your database type, you can set dialect properly -->            
+            <!--<property name="hibernate.dialect" value="org.hibernate.dialect.DB2Dialect"/>-->
+            <!--<property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/>-->
+            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
+            <!-- This Hibernate property will update database schema according to EJB3 annotation definitions
+            Possible value: validate, update, create, create-drop -->
+            <!--<property name="hibernate.hbm2ddl.auto" value="update"/>-->
+        </properties>
+    </persistence-unit>
+</persistence>

Modified: geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/TradeConfig.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/TradeConfig.java?rev=752865&r1=752864&r2=752865&view=diff
==============================================================================
--- geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/TradeConfig.java (original)
+++ geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/TradeConfig.java Thu Mar 12 13:51:25 2009
@@ -39,6 +39,12 @@
     public static final int DIRECT = 1;
     public static final int SESSION3 = 2;
 	public static int runTimeMode = DIRECT;
+	
+    /* Trade JPA Layer parameters */
+	public static String[] jpaLayerNames = {"OpenJPA", "Hibernate"};
+	public static final int OPENJPA = 0;
+	public static final int HIBERNATE = 1;
+	public static int jpaLayer = OPENJPA;
 
 	public static String[] orderProcessingModeNames =
 		{ "Synchronous", "Asynchronous_2-Phase" };
@@ -876,6 +882,14 @@
     public static  int getMarketSummaryInterval() {
         return TradeConfig.marketSummaryInterval;
     }
-
+    
+    /**
+	 * Return the list of JPA Layer names
+	 * Creation date: (01/10/2009)
+	 * @return java.lang.String[]
+	 */
+	public static java.lang.String[] getJPALayerNames() {
+		return jpaLayerNames;
+    }
 
 }

Modified: geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/ejb3/TradeSLSBBean.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/ejb3/TradeSLSBBean.java?rev=752865&r1=752864&r2=752865&view=diff
==============================================================================
--- geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/ejb3/TradeSLSBBean.java (original)
+++ geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/ejb3/TradeSLSBBean.java Thu Mar 12 13:51:25 2009
@@ -367,9 +367,35 @@
                 thisOrder.getQuote();
             }
             
-            Query updateStatus = entityManager.createNamedQuery("orderejb.completeClosedOrders");
-            updateStatus.setParameter("userID", userID);
-            updateStatus.executeUpdate();
+            /* Add logic to do update orders operation, because JBoss5' Hibernate 3.3.1GA DB2Dialect 
+             * and MySQL5Dialect do not work with annotated query "orderejb.completeClosedOrders"
+             * defined in OrderDatabean 
+             */
+            if (TradeConfig.jpaLayer == TradeConfig.OPENJPA) {
+                Query updateStatus = entityManager.createNamedQuery("orderejb.completeClosedOrders");
+                updateStatus.setParameter("userID", userID);
+                updateStatus.executeUpdate();
+                }
+                
+            if (TradeConfig.jpaLayer == TradeConfig.HIBERNATE) {
+                Query findaccountid = entityManager.createNativeQuery("select "+
+                                                                          "a.ACCOUNTID, "+
+                                                                          "a.LOGINCOUNT, "+
+                                                                          "a.LOGOUTCOUNT, "+
+                                                                          "a.LASTLOGIN, "+
+                                                                          "a.CREATIONDATE, "+
+                                                                          "a.BALANCE, "+
+                                                                          "a.OPENBALANCE, "+
+                                                                          "a.PROFILE_USERID "+
+                                                                          "from accountejb a where a.profile_userid = ?", org.apache.geronimo.samples.daytrader.AccountDataBean.class);
+                findaccountid.setParameter(1, userID);
+                AccountDataBean account = (AccountDataBean)findaccountid.getSingleResult();                
+                Integer accountid = account.getAccountID();
+                Query updateStatus = entityManager.createNativeQuery("UPDATE orderejb o SET o.orderStatus = 'completed' WHERE o.orderStatus = 'closed' AND o.ACCOUNT_ACCOUNTID  = ?");
+                updateStatus.setParameter(1, accountid.intValue());
+                updateStatus.executeUpdate();
+                }
+                
             return results;
         } catch (Exception e) {
             Log.error("TradeSLSBBean.getClosedOrders", e);
@@ -412,10 +438,20 @@
         if (Log.doTrace())
             Log.trace("TradeSLSBBean:updateQuote", symbol, changeFactor);
 
-        // QuoteDataBean quote = entityManager.find(QuoteDataBean.class, symbol);
-        Query q = entityManager.createNamedQuery("quoteejb.quoteForUpdate");
-        q.setParameter(1, symbol);
-        QuoteDataBean quote = (QuoteDataBean) q.getSingleResult();
+        /* Add logic to determine JPA layer, because JBoss5' Hibernate 3.3.1GA DB2Dialect 
+         * and MySQL5Dialect do not work with annotated query "quoteejb.quoteForUpdate"
+         * defined in QuoteDatabean 
+          */    
+        QuoteDataBean quote = new QuoteDataBean();
+        if (TradeConfig.jpaLayer == TradeConfig.HIBERNATE) {
+            quote = entityManager.find(QuoteDataBean.class, symbol);
+           }
+           
+        if (TradeConfig.jpaLayer == TradeConfig.OPENJPA) {
+            Query q = entityManager.createNamedQuery("quoteejb.quoteForUpdate");
+            q.setParameter(1, symbol);
+            quote = (QuoteDataBean) q.getSingleResult();
+           }       
 
         BigDecimal oldPrice = quote.getPrice();
 

Modified: geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/resources/META-INF/persistence.xml
URL: http://svn.apache.org/viewvc/geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/resources/META-INF/persistence.xml?rev=752865&r1=752864&r2=752865&view=diff
==============================================================================
--- geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/resources/META-INF/persistence.xml (original)
+++ geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/resources/META-INF/persistence.xml Thu Mar 12 13:51:25 2009
@@ -32,6 +32,8 @@
         <properties>
             <property name="openjpa.jdbc.DBDictionary" value="derby" /> 
             <property name="openjpa.BrokerImpl" value="non-finalizing" />
+            <!-- To enable OpenJPA to generate foreign key constraints, comment out this line -->
+            <!-- <property name="openjpa.jdbc.MappingDefaults" value="ForeignKeyDeleteAction=restrict,JoinForeignKeyDeleteAction=restrict"/> -->
             <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
             <property name="openjpa.Sequence" value="table(Table=OPENJPASEQ, Increment=100)"/>
         </properties>

Modified: geronimo/daytrader/branches/2.1.3/modules/web/src/main/java/org/apache/geronimo/samples/daytrader/web/TradeConfigServlet.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/branches/2.1.3/modules/web/src/main/java/org/apache/geronimo/samples/daytrader/web/TradeConfigServlet.java?rev=752865&r1=752864&r2=752865&view=diff
==============================================================================
--- geronimo/daytrader/branches/2.1.3/modules/web/src/main/java/org/apache/geronimo/samples/daytrader/web/TradeConfigServlet.java (original)
+++ geronimo/daytrader/branches/2.1.3/modules/web/src/main/java/org/apache/geronimo/samples/daytrader/web/TradeConfigServlet.java Thu Mar 12 13:51:25 2009
@@ -125,6 +125,28 @@
 		}
 		currentConfigStr += "\t\tRunTimeMode:\t\t" + TradeConfig.runTimeModeNames[TradeConfig.runTimeMode] + "\n";
 		
+		/* Add JPA layer choice to avoid some ugly Hibernate bugs */
+		String jpaLayerStr = req.getParameter("JPALayer");
+		if (jpaLayerStr != null)
+		{
+			try
+			{
+				int i = Integer.parseInt(jpaLayerStr);
+				if ((i >= 0)
+					&& (i < TradeConfig.jpaLayerNames.length)) //Input validation
+					TradeConfig.jpaLayer = i;
+			}
+			catch (Exception e)
+			{				
+				Log.error(
+					e, 
+					"TradeConfigServlet.doConfigUpdate(..): minor exception caught", 
+					"trying to set JPALayer to " + jpaLayerStr, 
+					"reverting to current value");
+
+			} // If the value is bad, simply revert to current
+		}
+		currentConfigStr += "\t\tJPALayer:\t\t" + TradeConfig.jpaLayerNames[TradeConfig.jpaLayer] + "\n";
 
 		String orderProcessingModeStr = req.getParameter("OrderProcessingMode");
 		if (orderProcessingModeStr != null)

Modified: geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/config.jsp
URL: http://svn.apache.org/viewvc/geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/config.jsp?rev=752865&r1=752864&r2=752865&view=diff
==============================================================================
--- geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/config.jsp (original)
+++ geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/config.jsp Thu Mar 12 13:51:25 2009
@@ -105,6 +105,32 @@
 			FAQ</A> for details.<BR>
 			</TD>
 		</TR>
+		
+		
+		<TR>
+			<TD align="left"><B>JPA Layer</B>
+			<P align="left"><%configParm = "JPALayer";
+names = TradeConfig.jpaLayerNames;
+index = TradeConfig.jpaLayer;
+for (int i = 0; i < names.length; i++) {
+	out.print(
+		"<INPUT type=\"radio\" name=\""
+			+ configParm
+			+ "\" value=\""
+			+ i
+			+ "\" ");
+	if (index == i)
+		out.print("checked");
+	out.print("> " + names[i] + "<BR>");
+}
+%></P>
+			</TD>
+			<TD><BR>
+			JPA Layer determines what kind of JPA Implementation Daytrader 
+			EJB classes use. Typically, Apache Geronimo uses OpenJPA, and RedHat
+			JBoss 5 uses Hibernate.<BR>
+			</TD>
+		</TR>
 
 
 		<TR>

Modified: geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/dbscripts/db2/Table.ddl
URL: http://svn.apache.org/viewvc/geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/dbscripts/db2/Table.ddl?rev=752865&r1=752864&r2=752865&view=diff
==============================================================================
--- geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/dbscripts/db2/Table.ddl (original)
+++ geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/dbscripts/db2/Table.ddl Thu Mar 12 13:51:25 2009
@@ -28,18 +28,18 @@
    QUANTITY DOUBLE NOT NULL,
    PURCHASEDATE TIMESTAMP,
    ACCOUNT_ACCOUNTID INTEGER,
-   QUOTE_SYMBOL VARCHAR(250));
+   QUOTE_SYMBOL VARCHAR(254));
 
 ALTER TABLE HOLDINGEJB
   ADD CONSTRAINT PK_HOLDINGEJB PRIMARY KEY (HOLDINGID);
 
 CREATE TABLE ACCOUNTPROFILEEJB
-  (ADDRESS VARCHAR(250),
-   PASSWD VARCHAR(250),
-   USERID VARCHAR(250) NOT NULL,
-   EMAIL VARCHAR(250),
-   CREDITCARD VARCHAR(250),
-   FULLNAME VARCHAR(250));
+  (ADDRESS VARCHAR(254),
+   PASSWD VARCHAR(254),
+   USERID VARCHAR(254) NOT NULL,
+   EMAIL VARCHAR(254),
+   CREDITCARD VARCHAR(254),
+   FULLNAME VARCHAR(254));
 
 ALTER TABLE ACCOUNTPROFILEEJB
   ADD CONSTRAINT PK_ACCOUNTPROFILE2 PRIMARY KEY (USERID);
@@ -50,8 +50,8 @@
    VOLUME DOUBLE NOT NULL,
    PRICE DECIMAL(14, 2),
    HIGH DECIMAL(14, 2),
-   COMPANYNAME VARCHAR(250),
-   SYMBOL VARCHAR(250) NOT NULL,
+   COMPANYNAME VARCHAR(254),
+   SYMBOL VARCHAR(254) NOT NULL,
    CHANGE1 DOUBLE NOT NULL);
 
 ALTER TABLE QUOTEEJB
@@ -59,7 +59,7 @@
 
 CREATE TABLE KEYGENEJB
   (KEYVAL INTEGER NOT NULL,
-   KEYNAME VARCHAR(250) NOT NULL);
+   KEYNAME VARCHAR(254) NOT NULL);
 
 ALTER TABLE KEYGENEJB
   ADD CONSTRAINT PK_KEYGENEJB PRIMARY KEY (KEYNAME);
@@ -72,7 +72,7 @@
    ACCOUNTID INTEGER NOT NULL,
    LASTLOGIN TIMESTAMP,
    LOGINCOUNT INTEGER NOT NULL,
-   PROFILE_USERID VARCHAR(250));
+   PROFILE_USERID VARCHAR(254));
 
 ALTER TABLE ACCOUNTEJB
   ADD CONSTRAINT PK_ACCOUNTEJB PRIMARY KEY (ACCOUNTID);
@@ -80,14 +80,14 @@
 CREATE TABLE ORDEREJB
   (ORDERFEE DECIMAL(14, 2),
    COMPLETIONDATE TIMESTAMP,
-   ORDERTYPE VARCHAR(250),
-   ORDERSTATUS VARCHAR(250),
+   ORDERTYPE VARCHAR(254),
+   ORDERSTATUS VARCHAR(254),
    PRICE DECIMAL(14, 2),
    QUANTITY DOUBLE NOT NULL,
    OPENDATE TIMESTAMP,
    ORDERID INTEGER NOT NULL,
    ACCOUNT_ACCOUNTID INTEGER,
-   QUOTE_SYMBOL VARCHAR(250),
+   QUOTE_SYMBOL VARCHAR(254),
    HOLDING_HOLDINGID INTEGER);
 
 ALTER TABLE ORDEREJB

Added: geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/dbscripts/other/Table.ddl
URL: http://svn.apache.org/viewvc/geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/dbscripts/other/Table.ddl?rev=752865&view=auto
==============================================================================
--- geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/dbscripts/other/Table.ddl (added)
+++ geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/dbscripts/other/Table.ddl Thu Mar 12 13:51:25 2009
@@ -0,0 +1,107 @@
+##    Licensed to the Apache Software Foundation (ASF) under one or more
+##    contributor license agreements.  See the NOTICE file distributed with
+##    this work for additional information regarding copyright ownership.
+##    The ASF licenses this file to You under the Apache License, Version 2.0
+##    (the "License"); you may not use this file except in compliance with
+##    the License.  You may obtain a copy of the License at
+##
+##       http://www.apache.org/licenses/LICENSE-2.0
+##
+##    Unless required by applicable law or agreed to in writing, software
+##    distributed under the License is distributed on an "AS IS" BASIS,
+##    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+##    See the License for the specific language governing permissions and
+##    limitations under the License.
+
+# Each SQL statement in this file should terminate with a semicolon (;)
+# Lines starting with the pound character (#) are considered as comments
+DROP TABLE HOLDINGEJB;
+DROP TABLE ACCOUNTPROFILEEJB;
+DROP TABLE QUOTEEJB;
+DROP TABLE KEYGENEJB;
+DROP TABLE ACCOUNTEJB;
+DROP TABLE ORDEREJB;
+
+CREATE TABLE HOLDINGEJB
+  (PURCHASEPRICE DECIMAL(14, 2),
+   HOLDINGID INTEGER NOT NULL,
+   QUANTITY DOUBLE NOT NULL,
+   PURCHASEDATE TIMESTAMP,
+   ACCOUNT_ACCOUNTID INTEGER,
+   QUOTE_SYMBOL VARCHAR(250));
+
+ALTER TABLE HOLDINGEJB
+  ADD CONSTRAINT PK_HOLDINGEJB PRIMARY KEY (HOLDINGID);
+
+CREATE TABLE ACCOUNTPROFILEEJB
+  (ADDRESS VARCHAR(250),
+   PASSWD VARCHAR(250),
+   USERID VARCHAR(250) NOT NULL,
+   EMAIL VARCHAR(250),
+   CREDITCARD VARCHAR(250),
+   FULLNAME VARCHAR(250));
+
+ALTER TABLE ACCOUNTPROFILEEJB
+  ADD CONSTRAINT PK_ACCOUNTPROFILE2 PRIMARY KEY (USERID);
+
+CREATE TABLE QUOTEEJB
+  (LOW DECIMAL(14, 2),
+   OPEN1 DECIMAL(14, 2),
+   VOLUME DOUBLE NOT NULL,
+   PRICE DECIMAL(14, 2),
+   HIGH DECIMAL(14, 2),
+   COMPANYNAME VARCHAR(250),
+   SYMBOL VARCHAR(250) NOT NULL,
+   CHANGE1 DOUBLE NOT NULL);
+
+ALTER TABLE QUOTEEJB
+  ADD CONSTRAINT PK_QUOTEEJB PRIMARY KEY (SYMBOL);
+
+CREATE TABLE KEYGENEJB
+  (KEYVAL INTEGER NOT NULL,
+   KEYNAME VARCHAR(250) NOT NULL);
+
+ALTER TABLE KEYGENEJB
+  ADD CONSTRAINT PK_KEYGENEJB PRIMARY KEY (KEYNAME);
+
+CREATE TABLE ACCOUNTEJB
+  (CREATIONDATE TIMESTAMP,
+   OPENBALANCE DECIMAL(14, 2),
+   LOGOUTCOUNT INTEGER NOT NULL,
+   BALANCE DECIMAL(14, 2),
+   ACCOUNTID INTEGER NOT NULL,
+   LASTLOGIN TIMESTAMP,
+   LOGINCOUNT INTEGER NOT NULL,
+   PROFILE_USERID VARCHAR(250));
+
+ALTER TABLE ACCOUNTEJB
+  ADD CONSTRAINT PK_ACCOUNTEJB PRIMARY KEY (ACCOUNTID);
+
+CREATE TABLE ORDEREJB
+  (ORDERFEE DECIMAL(14, 2),
+   COMPLETIONDATE TIMESTAMP,
+   ORDERTYPE VARCHAR(250),
+   ORDERSTATUS VARCHAR(250),
+   PRICE DECIMAL(14, 2),
+   QUANTITY DOUBLE NOT NULL,
+   OPENDATE TIMESTAMP,
+   ORDERID INTEGER NOT NULL,
+   ACCOUNT_ACCOUNTID INTEGER,
+   QUOTE_SYMBOL VARCHAR(250),
+   HOLDING_HOLDINGID INTEGER);
+
+ALTER TABLE ORDEREJB
+  ADD CONSTRAINT PK_ORDEREJB PRIMARY KEY (ORDERID);
+
+ALTER TABLE HOLDINGEJB VOLATILE;
+ALTER TABLE ACCOUNTPROFILEEJB VOLATILE;
+ALTER TABLE QUOTEEJB VOLATILE;
+ALTER TABLE KEYGENEJB VOLATILE;
+ALTER TABLE ACCOUNTEJB VOLATILE;
+ALTER TABLE ORDEREJB VOLATILE;
+
+CREATE INDEX ACCOUNT_USERID ON ACCOUNTEJB(PROFILE_USERID);
+CREATE INDEX HOLDING_ACCOUNTID ON HOLDINGEJB(ACCOUNT_ACCOUNTID);
+CREATE INDEX ORDER_ACCOUNTID ON ORDEREJB(ACCOUNT_ACCOUNTID);
+CREATE INDEX ORDER_HOLDINGID ON ORDEREJB(HOLDING_HOLDINGID);
+CREATE INDEX CLOSED_ORDERS ON ORDEREJB(ACCOUNT_ACCOUNTID,ORDERSTATUS);