geronimo-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jb...@apache.org
Subject svn commit: r775187 [5/10] - in /geronimo/daytrader/trunk: ./ daytrader-webonly/ daytrader-webonly/src/ daytrader-webonly/src/main/ daytrader-webonly/src/main/java/ daytrader-webonly/src/main/java/org/ daytrader-webonly/src/main/java/org/apache/ daytra...
Date Fri, 15 May 2009 15:17:45 GMT
Added: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/TradeServletAction.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/TradeServletAction.java?rev=775187&view=auto
==============================================================================
--- geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/TradeServletAction.java (added)
+++ geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/TradeServletAction.java Fri May 15 15:17:36 2009
@@ -0,0 +1,718 @@
+/**
+ *  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.
+ */
+package org.apache.geronimo.samples.daytrader.web;
+
+import javax.servlet.*;
+import javax.servlet.http.*;
+
+import org.apache.geronimo.samples.daytrader.util.*;
+
+import java.io.IOException;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.ArrayList;
+import java.math.BigDecimal;
+import org.apache.geronimo.samples.daytrader.*;
+
+/**
+ * TradeServletAction provides servlet specific client side access to each of
+ * the Trade brokerage user operations. These include login, logout, buy, sell,
+ * getQuote, etc. TradeServletAction manages a web interface to Trade handling
+ * HttpRequests/HttpResponse objects and forwarding results to the appropriate
+ * JSP page for the web interface. TradeServletAction invokes
+ * {@link TradeAction} methods to actually perform each trading operation.
+ * 
+ */
+public class TradeServletAction {
+
+    private TradeServices tAction = null;
+
+    TradeServletAction() {
+        if (TradeConfig.getAccessMode() == TradeConfig.STANDARD)
+            tAction = new TradeAction();
+        
+    }
+
+    /**
+     * Display User Profile information such as address, email, etc. for the
+     * given Trader Dispatch to the Trade Account JSP for display
+     * 
+     * @param userID
+     *            The User to display profile info
+     * @param ctx
+     *            the servlet context
+     * @param req
+     *            the HttpRequest object
+     * @param resp
+     *            the HttpResponse object
+     * @param results
+     *            A short description of the results/success of this web request
+     *            provided on the web page
+     * @exception javax.servlet.ServletException
+     *                If a servlet specific exception is encountered
+     * @exception javax.io.IOException
+     *                If an exception occurs while writing results back to the
+     *                user
+     * 
+     */
+    void doAccount(ServletContext ctx, HttpServletRequest req,
+            HttpServletResponse resp, String userID, String results)
+            throws javax.servlet.ServletException, java.io.IOException {
+        try {
+
+            AccountDataBean accountData = tAction.getAccountData(userID);
+            AccountProfileDataBean accountProfileData = tAction
+                    .getAccountProfileData(userID);
+            ArrayList orderDataBeans = (TradeConfig.getLongRun() ? new ArrayList() : (ArrayList) tAction.getOrders(userID));
+            
+            req.setAttribute("accountData", accountData);
+            req.setAttribute("accountProfileData", accountProfileData);
+            req.setAttribute("orderDataBeans", orderDataBeans);
+            req.setAttribute("results", results);
+            requestDispatch(ctx, req, resp, userID, TradeConfig
+                    .getPage(TradeConfig.ACCOUNT_PAGE));
+        } catch (java.lang.IllegalArgumentException e) { // this is a user
+                                                            // error so I will
+            // forward them to another page rather than throw a 500
+            req.setAttribute("results", results
+                    + "could not find account for userID = " + userID);
+            requestDispatch(ctx, req, resp, userID, TradeConfig
+                    .getPage(TradeConfig.HOME_PAGE));
+            // log the exception with an error level of 3 which means, handled
+            // exception but would invalidate a automation run
+            Log
+                    .error(
+                            "TradeServletAction.doAccount(...)",
+                            "illegal argument, information should be in exception string",
+                            e);
+        } catch (Exception e) {
+            // log the exception with error page
+            throw new ServletException("TradeServletAction.doAccount(...)"
+                    + " exception user =" + userID, e);
+        }
+
+    }
+
+    /**
+     * Update User Profile information such as address, email, etc. for the
+     * given Trader Dispatch to the Trade Account JSP for display If any in put
+     * is incorrect revert back to the account page w/ an appropriate message
+     * 
+     * @param userID
+     *            The User to upddate profile info
+     * @param password
+     *            The new User password
+     * @param cpassword
+     *            Confirm password
+     * @param fullname
+     *            The new User fullname info
+     * @param address
+     *            The new User address info
+     * @param cc
+     *            The new User credit card info
+     * @param email
+     *            The new User email info
+     * @param ctx
+     *            the servlet context
+     * @param req
+     *            the HttpRequest object
+     * @param resp
+     *            the HttpResponse object
+     * @exception javax.servlet.ServletException
+     *                If a servlet specific exception is encountered
+     * @exception javax.io.IOException
+     *                If an exception occurs while writing results back to the
+     *                user
+     * 
+     */
+    void doAccountUpdate(ServletContext ctx, HttpServletRequest req,
+            HttpServletResponse resp, String userID, String password,
+            String cpassword, String fullName, String address,
+            String creditcard, String email)
+            throws javax.servlet.ServletException, java.io.IOException {
+        String results = "";
+
+        // First verify input data
+        boolean doUpdate = true;
+        if (password.equals(cpassword) == false) {
+            results = "Update profile error: passwords do not match";
+            doUpdate = false;
+        } else if (password.length() <= 0 || fullName.length() <= 0
+                || address.length() <= 0 || creditcard.length() <= 0
+                || email.length() <= 0) {
+            results = "Update profile error: please fill in all profile information fields";
+            doUpdate = false;
+        }
+        AccountProfileDataBean accountProfileData = new AccountProfileDataBean(
+                userID, password, fullName, address, email, creditcard);
+        try {
+            if (doUpdate) {
+                accountProfileData = tAction
+                        .updateAccountProfile(accountProfileData);
+                results = "Account profile update successful";
+            }
+
+        } catch (java.lang.IllegalArgumentException e) { // this is a user
+                                                            // error so I will
+            // forward them to another page rather than throw a 500
+            req
+                    .setAttribute(
+                            "results",
+                            results
+                                    + "invalid argument, check userID is correct, and the database is populated"
+                                    + userID);
+            Log
+                    .error(
+                            e,
+                            "TradeServletAction.doAccount(...)",
+                            "illegal argument, information should be in exception string",
+                            "treating this as a user error and forwarding on to a new page");
+        } catch (Exception e) {
+            // log the exception with error page
+            throw new ServletException(
+                    "TradeServletAction.doAccountUpdate(...)"
+                            + " exception user =" + userID, e);
+        }
+        doAccount(ctx, req, resp, userID, results);
+    }
+
+    /**
+     * Buy a new holding of shares for the given trader Dispatch to the Trade
+     * Portfolio JSP for display
+     * 
+     * @param userID
+     *            The User buying shares
+     * @param symbol
+     *            The stock to purchase
+     * @param amount
+     *            The quantity of shares to purchase
+     * @param ctx
+     *            the servlet context
+     * @param req
+     *            the HttpRequest object
+     * @param resp
+     *            the HttpResponse object
+     * @exception javax.servlet.ServletException
+     *                If a servlet specific exception is encountered
+     * @exception javax.io.IOException
+     *                If an exception occurs while writing results back to the
+     *                user
+     * 
+     */
+    void doBuy(ServletContext ctx, HttpServletRequest req,
+            HttpServletResponse resp, String userID, String symbol,
+            String quantity) throws ServletException, IOException {
+
+        String results = "";
+
+        try {
+            OrderDataBean orderData = tAction.buy(userID, symbol, new Double(
+                    quantity).doubleValue(), TradeConfig.orderProcessingMode);
+
+            req.setAttribute("orderData", orderData);
+            req.setAttribute("results", results);
+        } catch (java.lang.IllegalArgumentException e) { // this is a user
+                                                            // error so I will
+            // forward them to another page rather than throw a 500
+            req.setAttribute("results", results + "illegal argument:");
+            requestDispatch(ctx, req, resp, userID, TradeConfig
+                    .getPage(TradeConfig.HOME_PAGE));
+            // log the exception with an error level of 3 which means, handled
+            // exception but would invalidate a automation run
+            Log.error(e, "TradeServletAction.doBuy(...)",
+                    "illegal argument. userID = " + userID, "symbol = "
+                            + symbol);
+        } catch (Exception e) {
+            // log the exception with error page
+            throw new ServletException("TradeServletAction.buy(...)"
+                    + " exception buying stock " + symbol + " for user "
+                    + userID, e);
+        }
+        requestDispatch(ctx, req, resp, userID, TradeConfig
+                .getPage(TradeConfig.ORDER_PAGE));
+    }
+
+    /**
+     * Create the Trade Home page with personalized information such as the
+     * traders account balance Dispatch to the Trade Home JSP for display
+     * 
+     * @param ctx
+     *            the servlet context
+     * @param req
+     *            the HttpRequest object
+     * @param resp
+     *            the HttpResponse object
+     * @param results
+     *            A short description of the results/success of this web request
+     *            provided on the web page
+     * @exception javax.servlet.ServletException
+     *                If a servlet specific exception is encountered
+     * @exception javax.io.IOException
+     *                If an exception occurs while writing results back to the
+     *                user
+     * 
+     */
+    void doHome(ServletContext ctx, HttpServletRequest req,
+            HttpServletResponse resp, String userID, String results)
+            throws javax.servlet.ServletException, java.io.IOException {
+        BigDecimal balance;
+        String result = "";
+        try {
+            AccountDataBean accountData = tAction.getAccountData(userID);
+            Collection holdingDataBeans = tAction.getHoldings(userID);
+
+            // Edge Caching:
+            // Getting the MarketSummary has been moved to the JSP
+            // MarketSummary.jsp. This makes the MarketSummary a
+            // standalone "fragment", and thus is a candidate for
+            // Edge caching.
+            // marketSummaryData = tAction.getMarketSummary();
+
+            req.setAttribute("accountData", accountData);
+            req.setAttribute("holdingDataBeans", holdingDataBeans);
+            // See Edge Caching above
+            // req.setAttribute("marketSummaryData", marketSummaryData);
+            req.setAttribute("results", results);
+        } catch (java.lang.IllegalArgumentException e) { // this is a user
+                                                            // error so I will
+            // forward them to another page rather than throw a 500
+            req.setAttribute("results", results + "check userID = " + userID
+                    + " and that the database is populated");
+            requestDispatch(ctx, req, resp, userID, TradeConfig
+                    .getPage(TradeConfig.HOME_PAGE));
+            // log the exception with an error level of 3 which means, handled
+            // exception but would invalidate a automation run
+            Log
+                    .error(
+                            "TradeServletAction.doHome(...)"
+                                    + "illegal argument, information should be in exception string"
+                                    + "treating this as a user error and forwarding on to a new page",
+                            e);
+        }  catch (Exception e) {
+            // log the exception with error page
+            throw new ServletException("TradeServletAction.doHome(...)"
+                    + " exception user =" + userID, e);
+        }
+
+        requestDispatch(ctx, req, resp, userID, TradeConfig
+                .getPage(TradeConfig.HOME_PAGE));
+    }
+
+    /**
+     * Login a Trade User. Dispatch to the Trade Home JSP for display
+     * 
+     * @param userID
+     *            The User to login
+     * @param passwd
+     *            The password supplied by the trader used to authenticate
+     * @param ctx
+     *            the servlet context
+     * @param req
+     *            the HttpRequest object
+     * @param resp
+     *            the HttpResponse object
+     * @param results
+     *            A short description of the results/success of this web request
+     *            provided on the web page
+     * @exception javax.servlet.ServletException
+     *                If a servlet specific exception is encountered
+     * @exception javax.io.IOException
+     *                If an exception occurs while writing results back to the
+     *                user
+     * 
+     */
+    void doLogin(ServletContext ctx, HttpServletRequest req,
+            HttpServletResponse resp, String userID, String passwd)
+            throws javax.servlet.ServletException, java.io.IOException {
+
+        String results = "";
+        try {
+            // Got a valid userID and passwd, attempt login
+
+            AccountDataBean accountData = tAction.login(userID, passwd);
+
+            if (accountData != null) {
+                HttpSession session = req.getSession(true);
+                session.setAttribute("uidBean", userID);
+                session.setAttribute("sessionCreationDate",
+                        new java.util.Date());
+                results = "Ready to Trade";
+                doHome(ctx, req, resp, userID, results);
+                return;
+            } else {
+                req.setAttribute("results", results
+                        + "\nCould not find account for + " + userID);
+                // log the exception with an error level of 3 which means,
+                // handled exception but would invalidate a automation run
+                Log.log(
+                                "TradeServletAction.doLogin(...)",
+                                "Error finding account for user " + userID + "",
+                                "user entered a bad username or the database is not populated");
+            }
+        } catch (java.lang.IllegalArgumentException e) { // this is a user
+                                                            // error so I will
+            // forward them to another page rather than throw a 500
+            req.setAttribute("results", results + "illegal argument:"
+                    + e.getMessage());
+            // log the exception with an error level of 3 which means, handled
+            // exception but would invalidate a automation run
+            Log
+                    .error(
+                            e,
+                            "TradeServletAction.doLogin(...)",
+                            "illegal argument, information should be in exception string",
+                            "treating this as a user error and forwarding on to a new page");
+
+        } catch (Exception e) {
+            // log the exception with error page
+            throw new ServletException("TradeServletAction.doLogin(...)"
+                    + "Exception logging in user " + userID + "with password"
+                    + passwd, e);
+        }
+
+        requestDispatch(ctx, req, resp, userID, TradeConfig
+                .getPage(TradeConfig.WELCOME_PAGE));
+
+    }
+
+    /**
+     * Logout a Trade User Dispatch to the Trade Welcome JSP for display
+     * 
+     * @param userID
+     *            The User to logout
+     * @param ctx
+     *            the servlet context
+     * @param req
+     *            the HttpRequest object
+     * @param resp
+     *            the HttpResponse object
+     * @param results
+     *            A short description of the results/success of this web request
+     *            provided on the web page
+     * @exception javax.servlet.ServletException
+     *                If a servlet specific exception is encountered
+     * @exception javax.io.IOException
+     *                If an exception occurs while writing results back to the
+     *                user
+     * 
+     */
+    void doLogout(ServletContext ctx, HttpServletRequest req,
+            HttpServletResponse resp, String userID) throws ServletException,
+            IOException {
+        String results = "";
+
+        try {
+            tAction.logout(userID);
+
+        } catch (java.lang.IllegalArgumentException e) { // this is a user
+                                                            // error so I will
+            // forward them to another page, at the end of the page.
+            req.setAttribute("results", results + "illegal argument:"
+                    + e.getMessage());
+
+            // log the exception with an error level of 3 which means, handled
+            // exception but would invalidate a automation run
+            Log
+                    .error(
+                            e,
+                            "TradeServletAction.doLogout(...)",
+                            "illegal argument, information should be in exception string",
+                            "treating this as a user error and forwarding on to a new page");
+        } catch (Exception e) {
+            // log the exception and foward to a error page
+            Log.error(e, "TradeServletAction.doLogout(...):",
+                    "Error logging out" + userID, "fowarding to an error page");
+            // set the status_code to 500
+            throw new ServletException("TradeServletAction.doLogout(...)"
+                    + "exception logging out user " + userID, e);
+        }
+        HttpSession session = req.getSession();
+        if (session != null) {
+            session.invalidate();
+        }
+
+        Object o = req.getAttribute("TSS-RecreateSessionInLogout");
+        if (o != null && ((Boolean) o).equals(Boolean.TRUE)) {
+            // Recreate Session object before writing output to the response
+            // Once the response headers are written back to the client the
+            // opportunity
+            // to create a new session in this request may be lost
+            // This is to handle only the TradeScenarioServlet case
+            session = req.getSession(true);
+        }
+        requestDispatch(ctx, req, resp, userID, TradeConfig
+                .getPage(TradeConfig.WELCOME_PAGE));
+    }
+
+    /**
+     * Retrieve the current portfolio of stock holdings for the given trader
+     * Dispatch to the Trade Portfolio JSP for display
+     * 
+     * @param userID
+     *            The User requesting to view their portfolio
+     * @param ctx
+     *            the servlet context
+     * @param req
+     *            the HttpRequest object
+     * @param resp
+     *            the HttpResponse object
+     * @param results
+     *            A short description of the results/success of this web request
+     *            provided on the web page
+     * @exception javax.servlet.ServletException
+     *                If a servlet specific exception is encountered
+     * @exception javax.io.IOException
+     *                If an exception occurs while writing results back to the
+     *                user
+     * 
+     */
+    void doPortfolio(ServletContext ctx, HttpServletRequest req,
+            HttpServletResponse resp, String userID, String results)
+            throws ServletException, IOException {
+
+        try {
+            // Get the holdiings for this user
+
+            Collection quoteDataBeans = new ArrayList();
+            Collection holdingDataBeans = tAction.getHoldings(userID);
+
+            // Walk through the collection of user
+            // holdings and creating a list of quotes
+            if (holdingDataBeans.size() > 0) {
+
+                Iterator it = holdingDataBeans.iterator();
+                while (it.hasNext()) {
+                    HoldingDataBean holdingData = (HoldingDataBean) it.next();
+                    QuoteDataBean quoteData = tAction.getQuote(holdingData
+                            .getQuoteID());
+                    quoteDataBeans.add(quoteData);
+                }
+            } else {
+                results = results + ".  Your portfolio is empty.";
+            }
+            req.setAttribute("results", results);
+            req.setAttribute("holdingDataBeans", holdingDataBeans);
+            req.setAttribute("quoteDataBeans", quoteDataBeans);
+            requestDispatch(ctx, req, resp, userID, TradeConfig
+                    .getPage(TradeConfig.PORTFOLIO_PAGE));
+        } catch (java.lang.IllegalArgumentException e) { // this is a user
+                                                            // error so I will
+            // forward them to another page rather than throw a 500
+            req.setAttribute("results", results + "illegal argument:"
+                    + e.getMessage());
+            requestDispatch(ctx, req, resp, userID, TradeConfig
+                    .getPage(TradeConfig.PORTFOLIO_PAGE));
+            // log the exception with an error level of 3 which means, handled
+            // exception but would invalidate a automation run
+            Log
+                    .error(
+                            e,
+                            "TradeServletAction.doPortfolio(...)",
+                            "illegal argument, information should be in exception string",
+                            "user error");
+        } catch (Exception e) {
+            // log the exception with error page
+            throw new ServletException("TradeServletAction.doPortfolio(...)"
+                    + " exception user =" + userID, e);
+        }
+    }
+
+    /**
+     * Retrieve the current Quote for the given stock symbol Dispatch to the
+     * Trade Quote JSP for display
+     * 
+     * @param userID
+     *            The stock symbol used to get the current quote
+     * @param ctx
+     *            the servlet context
+     * @param req
+     *            the HttpRequest object
+     * @param resp
+     *            the HttpResponse object
+     * @exception javax.servlet.ServletException
+     *                If a servlet specific exception is encountered
+     * @exception javax.io.IOException
+     *                If an exception occurs while writing results back to the
+     *                user
+     * 
+     */
+    void doQuotes(ServletContext ctx, HttpServletRequest req,
+            HttpServletResponse resp, String userID, String symbols)
+            throws ServletException, IOException {
+        String results = "";
+
+        // Edge Caching:
+        // Getting Quotes has been moved to the JSP
+        // Quote.jsp. This makes each Quote a
+        // standalone "fragment", and thus is a candidate for
+        // Edge caching.
+        //			
+
+        requestDispatch(ctx, req, resp, userID, TradeConfig
+                .getPage(TradeConfig.QUOTE_PAGE));
+    }
+
+    /**
+     * Register a new trader given the provided user Profile information such as
+     * address, email, etc. Dispatch to the Trade Home JSP for display
+     * 
+     * @param userID
+     *            The User to create
+     * @param passwd
+     *            The User password
+     * @param fullname
+     *            The new User fullname info
+     * @param ccn
+     *            The new User credit card info
+     * @param money
+     *            The new User opening account balance
+     * @param address
+     *            The new User address info
+     * @param email
+     *            The new User email info
+     * @return The userID of the new trader
+     * @param ctx
+     *            the servlet context
+     * @param req
+     *            the HttpRequest object
+     * @param resp
+     *            the HttpResponse object
+     * @exception javax.servlet.ServletException
+     *                If a servlet specific exception is encountered
+     * @exception javax.io.IOException
+     *                If an exception occurs while writing results back to the
+     *                user
+     * 
+     */
+    void doRegister(ServletContext ctx, HttpServletRequest req,
+            HttpServletResponse resp, String userID, String passwd,
+            String cpasswd, String fullname, String ccn,
+            String openBalanceString, String email, String address)
+            throws ServletException, IOException {
+        String results = "";
+
+        try {
+            // Validate user passwords match and are atleast 1 char in length
+            if ((passwd.equals(cpasswd)) && (passwd.length() >= 1)) {
+
+                AccountDataBean accountData = tAction.register(userID, passwd,
+                        fullname, address, email, ccn, new BigDecimal(
+                                openBalanceString));
+                if (accountData == null) {
+                    results = "Registration operation failed;";
+                    System.out.println(results);
+                    req.setAttribute("results", results);
+                    requestDispatch(ctx, req, resp, userID, TradeConfig
+                            .getPage(TradeConfig.REGISTER_PAGE));
+                } else {
+                    doLogin(ctx, req, resp, userID, passwd);
+                    results = "Registration operation succeeded;  Account "
+                            + accountData.getAccountID() + " has been created.";
+                    req.setAttribute("results", results);
+
+                }
+            } else {
+                // Password validation failed
+                results = "Registration operation failed, your passwords did not match";
+                System.out.println(results);
+                req.setAttribute("results", results);
+                requestDispatch(ctx, req, resp, userID, TradeConfig
+                        .getPage(TradeConfig.REGISTER_PAGE));
+            }
+
+        } catch (Exception e) {
+            // log the exception with error page
+            throw new ServletException("TradeServletAction.doRegister(...)"
+                    + " exception user =" + userID, e);
+        }
+    }
+
+    /**
+     * Sell a current holding of stock shares for the given trader. Dispatch to
+     * the Trade Portfolio JSP for display
+     * 
+     * @param userID
+     *            The User buying shares
+     * @param symbol
+     *            The stock to sell
+     * @param indx
+     *            The unique index identifying the users holding to sell
+     * @param ctx
+     *            the servlet context
+     * @param req
+     *            the HttpRequest object
+     * @param resp
+     *            the HttpResponse object
+     * @exception javax.servlet.ServletException
+     *                If a servlet specific exception is encountered
+     * @exception javax.io.IOException
+     *                If an exception occurs while writing results back to the
+     *                user
+     * 
+     */
+    void doSell(ServletContext ctx, HttpServletRequest req,
+            HttpServletResponse resp, String userID, Integer holdingID)
+            throws ServletException, IOException {
+        String results = "";
+        try {
+            OrderDataBean orderData = tAction.sell(userID, holdingID,
+                    TradeConfig.orderProcessingMode);
+
+            req.setAttribute("orderData", orderData);
+            req.setAttribute("results", results);
+        } catch (java.lang.IllegalArgumentException e) { // this is a user
+                                                            // error so I will
+            // just log the exception and then later on I will redisplay the
+            // portfolio page
+            // because this is just a user exception
+            Log
+                    .error(
+                            e,
+                            "TradeServletAction.doSell(...)",
+                            "illegal argument, information should be in exception string",
+                            "user error");
+        } catch (Exception e) {
+            // log the exception with error page
+            throw new ServletException("TradeServletAction.doSell(...)"
+                    + " exception selling holding " + holdingID + " for user ="
+                    + userID, e);
+        }
+        requestDispatch(ctx, req, resp, userID, TradeConfig
+                .getPage(TradeConfig.ORDER_PAGE));
+    }
+
+    void doWelcome(ServletContext ctx, HttpServletRequest req,
+            HttpServletResponse resp, String status) throws ServletException,
+            IOException {
+
+        req.setAttribute("results", status);
+        requestDispatch(ctx, req, resp, null, TradeConfig
+                .getPage(TradeConfig.WELCOME_PAGE));
+    }
+
+    private void requestDispatch(ServletContext ctx, HttpServletRequest req,
+            HttpServletResponse resp, String userID, String page)
+            throws ServletException, IOException {
+
+        ctx.getRequestDispatcher(page).include(req, resp);
+    }
+
+    private void sendRedirect(HttpServletResponse resp, String page)
+            throws ServletException, IOException {
+        resp.sendRedirect(resp.encodeRedirectURL(page));
+    }
+}
\ No newline at end of file

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/TradeServletAction.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/TradeServletAction.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/TradeServletAction.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/TradeWebContextListener.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/TradeWebContextListener.java?rev=775187&view=auto
==============================================================================
--- geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/TradeWebContextListener.java (added)
+++ geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/TradeWebContextListener.java Fri May 15 15:17:36 2009
@@ -0,0 +1,43 @@
+/**
+ *  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.
+ */
+package org.apache.geronimo.samples.daytrader.web;
+
+import javax.servlet.*;
+
+import org.apache.geronimo.samples.daytrader.direct.*;
+import org.apache.geronimo.samples.daytrader.util.*;
+
+public class TradeWebContextListener
+	implements ServletContextListener 
+{
+
+	//receieve trade web app startup/shutown events to start(initialized)/stop TradeDirect
+	public void contextInitialized(ServletContextEvent event)
+	{
+		Log.trace("TradeWebContextListener contextInitialized -- initializing TradeDirect");
+		TradeDirect.init();		
+	}
+	public void contextDestroyed(ServletContextEvent event)
+	{
+		Log.trace("TradeWebContextListener  contextDestroy calling TradeDirect:destroy()");		
+		TradeDirect.destroy();
+	}
+
+    
+
+}
+

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/TradeWebContextListener.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/TradeWebContextListener.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/TradeWebContextListener.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/ExplicitGC.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/ExplicitGC.java?rev=775187&view=auto
==============================================================================
--- geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/ExplicitGC.java (added)
+++ geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/ExplicitGC.java Fri May 15 15:17:36 2009
@@ -0,0 +1,134 @@
+/**
+ *  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.
+ */
+package org.apache.geronimo.samples.daytrader.web.prims;
+
+import java.io.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+
+import org.apache.geronimo.samples.daytrader.util.*;
+
+
+/**
+ *
+ * ExplicitGC invokes System.gc().  This allows one to gather min / max heap statistics.
+ *
+ */
+public class ExplicitGC extends HttpServlet
+{
+
+	private static String initTime;
+	private static int hitCount;
+
+	/**
+	 * forwards post requests to the doGet method
+	 * Creation date: (01/29/2006 20:10:00 PM)
+	 * @param res javax.servlet.http.HttpServletRequest
+	 * @param res2 javax.servlet.http.HttpServletResponse
+	 */
+	public void doPost(HttpServletRequest req, HttpServletResponse res)
+		throws ServletException, IOException
+	{
+		doGet(req, res);
+	}
+	
+	/**
+		* this is the main method of the servlet that will service all get requests.
+		* @param request HttpServletRequest
+		* @param responce HttpServletResponce
+		**/
+	public void doGet(HttpServletRequest req, HttpServletResponse res)
+		throws ServletException, IOException
+	{
+		try
+			{
+			res.setContentType("text/html");
+
+			ServletOutputStream out = res.getOutputStream();
+             hitCount++;
+             long totalMemory         = Runtime.getRuntime().totalMemory();
+
+             long maxMemoryBeforeGC   = Runtime.getRuntime().maxMemory();
+             long freeMemoryBeforeGC  = Runtime.getRuntime().freeMemory();
+             long startTime           = System.currentTimeMillis();
+             
+             System.gc();  // Invoke the GC.
+
+             long endTime            = System.currentTimeMillis();
+             long maxMemoryAfterGC   = Runtime.getRuntime().maxMemory();
+             long freeMemoryAfterGC  = Runtime.getRuntime().freeMemory();
+             
+             
+             
+			out.println(
+				"<html><head><title>ExplicitGC</title></head>"
+					+ "<body><HR><BR><FONT size=\"+2\" color=\"#000066\">Explicit Garbage Collection<BR></FONT><FONT size=\"+1\" color=\"#000066\">Init time : "
+					+ initTime
+					+ "<BR><BR></FONT>  <B>Hit Count: "
+					+ hitCount 
+					+ "<br>"
+                     + "<table border=\"0\"><tr>"
+					+ "<td align=\"right\">Total Memory</td><td align=\"right\">" + totalMemory + "</td>"
+                     + "</tr></table>"
+                     + "<table width=\"350\"><tr><td colspan=\"2\" align=\"left\">"
+					+ "Statistics before GC</td></tr>"
+                     + "<tr><td align=\"right\">"
+					+ "Max Memory</td><td align=\"right\">" + maxMemoryBeforeGC + "</td></tr>"
+                    + "<tr><td align=\"right\">"
+					+ "Free Memory</td><td align=\"right\">" + freeMemoryBeforeGC + "</td></tr>"
+                    + "<tr><td align=\"right\">"
+					+ "Used Memory</td><td align=\"right\">" + (totalMemory - freeMemoryBeforeGC) + "</td></tr>"
+					+ "<tr><td colspan=\"2\" align=\"left\">Statistics after GC</td></tr>"
+                    + "<tr><td align=\"right\">"
+					+ "Max Memory</td><td align=\"right\">" + maxMemoryAfterGC + "</td></tr>"
+                    + "<tr><td align=\"right\">"
+					+ "Free Memory</td><td align=\"right\">" + freeMemoryAfterGC + "</td></tr>"
+                    + "<tr><td align=\"right\">"
+					+ "Used Memory</td><td align=\"right\">" + (totalMemory - freeMemoryAfterGC) + "</td></tr>"
+                    + "<tr><td align=\"right\">"
+					+ "Total Time in GC</td><td align=\"right\">" + Float.toString((endTime - startTime) / 1000) + "s</td></tr>"
+                     + "</table>"
+					+ "</body></html>");
+		}
+		catch (Exception e)
+			{
+			Log.error(e, "ExplicitGC.doGet(...): general exception caught");
+			res.sendError(500, e.toString());
+
+		}
+	}
+	
+	/** 
+	 * returns a string of information about the servlet
+	 * @return info String: contains info about the servlet
+	 **/
+	public String getServletInfo()
+	{
+		return "Generate Explicit GC to VM";
+	}
+	/**
+	* called when the class is loaded to initialize the servlet
+	* @param config ServletConfig:
+	**/
+	public void init(ServletConfig config) throws ServletException
+	{
+		super.init(config);
+		initTime = new java.util.Date().toString();
+		hitCount = 0;
+
+	}
+}

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/ExplicitGC.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/ExplicitGC.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/ExplicitGC.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingBean.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingBean.java?rev=775187&view=auto
==============================================================================
--- geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingBean.java (added)
+++ geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingBean.java Fri May 15 15:17:36 2009
@@ -0,0 +1,45 @@
+/**
+ *  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.
+ */
+package org.apache.geronimo.samples.daytrader.web.prims;
+
+ /**
+ *
+ * Simple bean to get and set messages
+ */
+ 
+
+public class PingBean {
+	  
+  private String msg;
+  
+/**
+ * returns the message contained in the bean
+ * @return message String
+ **/
+public String getMsg()
+{
+	return msg;
+}      
+/**
+* sets the message contained in the bean 
+* param message String
+**/
+public void setMsg(String s)
+{
+	msg = s;
+}      
+}
\ No newline at end of file

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingBean.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingBean.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingJDBCRead.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingJDBCRead.java?rev=775187&view=auto
==============================================================================
--- geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingJDBCRead.java (added)
+++ geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingJDBCRead.java Fri May 15 15:17:36 2009
@@ -0,0 +1,118 @@
+/**
+ *  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.
+ */
+package org.apache.geronimo.samples.daytrader.web.prims;
+
+import java.io.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+
+import org.apache.geronimo.samples.daytrader.direct.*;
+import org.apache.geronimo.samples.daytrader.util.*;
+
+import org.apache.geronimo.samples.daytrader.*;
+
+/**
+ * 
+ * PingJDBCReadPrepStmt uses a prepared statement for database read access. 
+ * This primative uses {@link org.apache.geronimo.samples.daytrader.direct.TradeDirect} to set the price of a random stock
+ * (generated by {@link org.apache.geronimo.samples.daytrader.Trade_Config}) through the use of prepared statements. 
+ * 
+ */
+
+public class PingJDBCRead extends HttpServlet
+{
+
+	private static String initTime;
+	private static int hitCount;
+
+	/**
+	 * forwards post requests to the doGet method
+	 * Creation date: (11/6/2000 10:52:39 AM)
+	 * @param res javax.servlet.http.HttpServletRequest
+	 * @param res2 javax.servlet.http.HttpServletResponse
+	 */
+	public void doPost(HttpServletRequest req, HttpServletResponse res)
+		throws ServletException, IOException
+	{
+		doGet(req, res);
+	}
+	/**
+	* this is the main method of the servlet that will service all get requests.
+	* @param request HttpServletRequest
+	* @param responce HttpServletResponce
+	**/
+	public void doGet(HttpServletRequest req, HttpServletResponse res)
+		throws ServletException, IOException
+	{
+		res.setContentType("text/html");
+		java.io.PrintWriter out = res.getWriter();
+		String symbol=null;
+		StringBuffer output = new StringBuffer(100);
+
+		try
+			{
+			//TradeJDBC uses prepared statements so I am going to make use of it's code.
+			TradeDirect trade = new TradeDirect();
+			symbol = TradeConfig.rndSymbol();
+			
+			QuoteDataBean quoteData = null;
+			int iter = TradeConfig.getPrimIterations();
+			for (int ii = 0; ii < iter; ii++) {
+				quoteData = trade.getQuote(symbol);
+			}
+
+			output.append(
+				"<html><head><title>Ping JDBC Read w/ Prepared Stmt.</title></head>"
+					+ "<body><HR><FONT size=\"+2\" color=\"#000066\">Ping JDBC Read w/ Prep Stmt:</FONT><HR><FONT size=\"-1\" color=\"#000066\">Init time : "
+					+ initTime);
+                        hitCount++;
+			output.append("<BR>Hit Count: " + hitCount);
+			output.append(
+				"<HR>Quote Information <BR><BR>: "
+					+ quoteData.toHTML());
+			output.append("<HR></body></html>");
+			out.println(output.toString());
+		}
+		catch (Exception e)
+		{
+			Log.error(
+				e,
+				"PingJDBCRead w/ Prep Stmt -- error getting quote for symbol",
+				symbol);
+			res.sendError(500, "PingJDBCRead Exception caught: " + e.toString());
+		}
+
+	}
+	/** 
+	 * returns a string of information about the servlet
+	 * @return info String: contains info about the servlet
+	 **/
+	public String getServletInfo()
+	{
+		return "Basic JDBC Read using a prepared statment, makes use of TradeJDBC class";
+	}
+	/**
+	* called when the class is loaded to initialize the servlet
+	* @param config ServletConfig:
+	**/
+	public void init(ServletConfig config) throws ServletException
+	{
+		super.init(config);
+		hitCount = 0;
+		initTime = new java.util.Date().toString();
+	}
+}
\ No newline at end of file

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingJDBCRead.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingJDBCRead.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingJDBCRead.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingJDBCWrite.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingJDBCWrite.java?rev=775187&view=auto
==============================================================================
--- geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingJDBCWrite.java (added)
+++ geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingJDBCWrite.java Fri May 15 15:17:36 2009
@@ -0,0 +1,118 @@
+/**
+ *  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.
+ */
+package org.apache.geronimo.samples.daytrader.web.prims;
+
+import java.io.*;
+import java.math.BigDecimal;
+import javax.servlet.*;
+import javax.servlet.http.*;
+
+import org.apache.geronimo.samples.daytrader.direct.*;
+import org.apache.geronimo.samples.daytrader.util.*;
+
+import org.apache.geronimo.samples.daytrader.*;
+/**
+ * 
+ * PingJDBCReadPrepStmt uses a prepared statement
+ * for database update. Statement parameters are set dynamically on each request.
+ * This primative uses {@link org.apache.geronimo.samples.daytrader.direct.TradeDirect} to set the price of a random stock
+ * (generated by {@link org.apache.geronimo.samples.daytrader.Trade_Config}) through the use of prepared statements.
+ * 
+ */
+
+public class PingJDBCWrite extends HttpServlet {
+
+	private static String initTime;
+	private static int hitCount;
+  
+
+/**
+* this is the main method of the servlet that will service all get requests.
+* @param request HttpServletRequest
+* @param responce HttpServletResponce
+**/
+public void doGet(HttpServletRequest req, HttpServletResponse res)
+	throws ServletException, IOException {
+
+	String symbol = null;
+	BigDecimal newPrice;
+	StringBuffer output = new StringBuffer(100);
+	res.setContentType("text/html");
+	java.io.PrintWriter out = res.getWriter();
+
+	try
+	{
+		//get a random symbol to update and a random price.
+		symbol = TradeConfig.rndSymbol();
+		newPrice = TradeConfig.getRandomPriceChangeFactor();
+
+		//TradeJDBC makes use of prepared statements so I am going to reuse the existing code.
+		TradeDirect trade = new TradeDirect(); 
+
+		//update the price of our symbol
+		QuoteDataBean quoteData = null;
+		int iter = TradeConfig.getPrimIterations();
+		for (int ii = 0; ii < iter; ii++) {
+			quoteData = trade.updateQuotePriceVolumeInt(symbol, newPrice, 100.0, false);
+		}
+
+		//write the output
+		output.append(
+			"<html><head><title>Ping JDBC Write w/ Prepared Stmt.</title></head>"
+				+ "<body><HR><FONT size=\"+2\" color=\"#000066\">Ping JDBC Write w/ Prep Stmt:</FONT><FONT size=\"-1\" color=\"#000066\"><HR>Init time : "
+				+ initTime);
+                hitCount++;
+		output.append("<BR>Hit Count: " + hitCount);
+		output.append("<HR>Update Information<BR>");
+		output.append("<BR>" + quoteData.toHTML() + "<HR></FONT></BODY></HTML>");
+		out.println(output.toString());
+
+	}
+	catch (Exception e)
+	{
+		Log.error(e, "PingJDBCWrite -- error updating quote for symbol", symbol);
+		res.sendError(500, "PingJDBCWrite Exception caught: " + e.toString());
+	}
+}                                 
+/** 
+ * returns a string of information about the servlet
+ * @return info String: contains info about the servlet
+ **/
+public String getServletInfo()
+{
+	return "Basic JDBC Write using a prepared statment makes use of TradeJDBC code.";
+}            
+/**
+* called when the class is loaded to initialize the servlet
+* @param config ServletConfig:
+**/
+public void init(ServletConfig config) throws ServletException {
+	super.init(config);
+	initTime = new java.util.Date().toString();
+	hitCount = 0;
+
+}      
+/**
+ * forwards post requests to the doGet method
+ * Creation date: (11/6/2000 10:52:39 AM)
+ * @param res javax.servlet.http.HttpServletRequest
+ * @param res2 javax.servlet.http.HttpServletResponse
+ */
+public void doPost(HttpServletRequest req, HttpServletResponse res)
+	throws ServletException, IOException {
+	doGet(req, res);
+}}

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingJDBCWrite.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingJDBCWrite.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingJDBCWrite.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet.java?rev=775187&view=auto
==============================================================================
--- geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet.java (added)
+++ geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet.java Fri May 15 15:17:36 2009
@@ -0,0 +1,100 @@
+/**
+ *  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.
+ */
+package org.apache.geronimo.samples.daytrader.web.prims;
+
+import java.io.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+
+import org.apache.geronimo.samples.daytrader.util.*;
+
+
+/**
+ *
+ * PingServlet tests fundamental dynamic HTML creation functionality through
+ * server side servlet processing.
+ *
+ */
+public class PingServlet extends HttpServlet
+{
+
+	private static String initTime;
+	private static int hitCount;
+
+	/**
+	 * forwards post requests to the doGet method
+	 * Creation date: (11/6/2000 10:52:39 AM)
+	 * @param res javax.servlet.http.HttpServletRequest
+	 * @param res2 javax.servlet.http.HttpServletResponse
+	 */
+	public void doPost(HttpServletRequest req, HttpServletResponse res)
+		throws ServletException, IOException
+	{
+		doGet(req, res);
+	}
+	/**
+		* this is the main method of the servlet that will service all get requests.
+		* @param request HttpServletRequest
+		* @param responce HttpServletResponce
+		**/
+	public void doGet(HttpServletRequest req, HttpServletResponse res)
+		throws ServletException, IOException
+	{
+		try
+			{
+			res.setContentType("text/html");
+
+			// The following 2 lines are the difference between PingServlet and PingServletWriter
+			//   the latter uses a PrintWriter for output versus a binary output stream.
+			ServletOutputStream out = res.getOutputStream();
+			//java.io.PrintWriter out = res.getWriter();
+                        hitCount++;
+			out.println(
+				"<html><head><title>Ping Servlet</title></head>"
+					+ "<body><HR><BR><FONT size=\"+2\" color=\"#000066\">Ping Servlet<BR></FONT><FONT size=\"+1\" color=\"#000066\">Init time : "
+					+ initTime
+					+ "<BR><BR></FONT>  <B>Hit Count: "
+					+ hitCount
+					+ "</B></body></html>");
+		}
+		catch (Exception e)
+			{
+			Log.error(e, "PingServlet.doGet(...): general exception caught");
+			res.sendError(500, e.toString());
+
+		}
+	}
+	/** 
+	 * returns a string of information about the servlet
+	 * @return info String: contains info about the servlet
+	 **/
+	public String getServletInfo()
+	{
+		return "Basic dynamic HTML generation through a servlet";
+	}
+	/**
+	* called when the class is loaded to initialize the servlet
+	* @param config ServletConfig:
+	**/
+	public void init(ServletConfig config) throws ServletException
+	{
+		super.init(config);
+		initTime = new java.util.Date().toString();
+		hitCount = 0;
+
+	}
+}
\ No newline at end of file

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Include.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Include.java?rev=775187&view=auto
==============================================================================
--- geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Include.java (added)
+++ geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Include.java Fri May 15 15:17:36 2009
@@ -0,0 +1,92 @@
+/**
+ *  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.
+ */
+package org.apache.geronimo.samples.daytrader.web.prims;
+
+import java.io.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+
+import org.apache.geronimo.samples.daytrader.util.*;
+
+import org.apache.geronimo.samples.daytrader.*;
+
+/**
+ *
+ * PingServlet2Include tests servlet to servlet request dispatching. Servlet 1,
+ * the controller, creates a new JavaBean object forwards the servlet request with
+ * the JavaBean added to Servlet 2. Servlet 2 obtains access to the JavaBean through
+ * the Servlet request object and provides the dynamic HTML output based on the JavaBean
+ * data.
+ * PingServlet2Servlet is the initial servlet that sends a request to {@link PingServlet2ServletRcv}
+ *
+ */
+public class PingServlet2Include extends HttpServlet {
+
+	private static String initTime;
+	private static int hitCount;
+
+	/**
+	 * forwards post requests to the doGet method
+	 * Creation date: (11/6/2000 10:52:39 AM)
+	 * @param res javax.servlet.http.HttpServletRequest
+	 * @param res2 javax.servlet.http.HttpServletResponse
+	 */
+	public void doPost(HttpServletRequest req, HttpServletResponse res)
+		throws ServletException, IOException {
+		doGet(req, res);
+	}
+	/**
+	* this is the main method of the servlet that will service all get requests.
+	* @param request HttpServletRequest
+	* @param responce HttpServletResponce
+	**/
+	public void doGet(HttpServletRequest req, HttpServletResponse res)
+		throws ServletException, IOException {
+		PingBean ab;
+		try {
+			res.setContentType("text/html");
+			
+			int iter = TradeConfig.getPrimIterations();
+			for (int ii = 0; ii < iter; ii++) {
+				getServletConfig().getServletContext().getRequestDispatcher("/servlet/PingServlet2IncludeRcv").include(req, res);
+			}
+			
+//			ServletOutputStream out = res.getOutputStream();
+			java.io.PrintWriter out = res.getWriter();
+			out.println(
+				"<html><head><title>Ping Servlet 2 Include</title></head>"
+					+ "<body><HR><BR><FONT size=\"+2\" color=\"#000066\">Ping Servlet 2 Include<BR></FONT><FONT size=\"+1\" color=\"#000066\">Init time : "
+					+ initTime
+					+ "<BR><BR></FONT>  <B>Hit Count: "
+					+ hitCount++
+					+ "</B></body></html>");
+		} catch (Exception ex) {
+			Log.error(ex, "PingServlet2Include.doGet(...): general exception");
+			res.sendError(500, "PingServlet2Include.doGet(...): general exception" + ex.toString());
+		}
+	}
+	
+	/**
+	* called when the class is loaded to initialize the servlet
+	* @param config ServletConfig:
+	**/
+	public void init(ServletConfig config) throws ServletException {
+		super.init(config);
+		initTime = new java.util.Date().toString();
+		hitCount = 0;
+	}
+}

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Include.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Include.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Include.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2IncludeRcv.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2IncludeRcv.java?rev=775187&view=auto
==============================================================================
--- geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2IncludeRcv.java (added)
+++ geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2IncludeRcv.java Fri May 15 15:17:36 2009
@@ -0,0 +1,54 @@
+/**
+ *  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.
+ */
+package org.apache.geronimo.samples.daytrader.web.prims;
+
+import java.io.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+
+/**
+ *
+ * PingServlet2Include tests servlet to servlet request dispatching. Servlet 1,
+ * the controller, creates a new JavaBean object forwards the servlet request with
+ * the JavaBean added to Servlet 2. Servlet 2 obtains access to the JavaBean through
+ * the Servlet request object and provides the dynamic HTML output based on the JavaBean
+ * data.
+ * PingServlet2Servlet is the initial servlet that sends a request to {@link PingServlet2ServletRcv}
+ *
+ */
+public class PingServlet2IncludeRcv extends HttpServlet {
+
+	/**
+	 * forwards post requests to the doGet method
+	 * Creation date: (11/6/2000 10:52:39 AM)
+	 * @param res javax.servlet.http.HttpServletRequest
+	 * @param res2 javax.servlet.http.HttpServletResponse
+	 */
+	public void doPost(HttpServletRequest req, HttpServletResponse res)
+		throws ServletException, IOException {
+		doGet(req, res);
+	}
+	/**
+	* this is the main method of the servlet that will service all get requests.
+	* @param request HttpServletRequest
+	* @param responce HttpServletResponce
+	**/
+	public void doGet(HttpServletRequest req, HttpServletResponse res)
+		throws ServletException, IOException {
+		// do nothing but get included by PingServlet2Include
+	}
+}
\ No newline at end of file

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2IncludeRcv.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2IncludeRcv.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2IncludeRcv.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2JNDI.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2JNDI.java?rev=775187&view=auto
==============================================================================
--- geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2JNDI.java (added)
+++ geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2JNDI.java Fri May 15 15:17:36 2009
@@ -0,0 +1,108 @@
+/**
+ *  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.
+ */
+package org.apache.geronimo.samples.daytrader.web.prims;
+
+import java.io.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.naming.InitialContext;
+import javax.sql.DataSource;
+
+import org.apache.geronimo.samples.daytrader.util.*;
+
+import org.apache.geronimo.samples.daytrader.*;
+
+/**
+ * 
+ * PingServlet2JNDI performs a basic JNDI lookup of a JDBC DataSource
+ * 
+ */
+
+public class PingServlet2JNDI extends HttpServlet
+{
+
+	private static String initTime;
+	private static int hitCount;
+	
+	/**
+	 * forwards post requests to the doGet method
+	 * Creation date: (11/6/2000 10:52:39 AM)
+	 * @param res javax.servlet.http.HttpServletRequest
+	 * @param res2 javax.servlet.http.HttpServletResponse
+	 */
+	public void doPost(HttpServletRequest req, HttpServletResponse res)
+		throws ServletException, IOException
+	{
+		doGet(req, res);
+	}
+	/**
+	* this is the main method of the servlet that will service all get requests.
+	* @param request HttpServletRequest
+	* @param responce HttpServletResponce
+	**/
+	public void doGet(HttpServletRequest req, HttpServletResponse res)
+		throws ServletException, IOException
+	{
+		res.setContentType("text/html");
+		java.io.PrintWriter out = res.getWriter();
+
+		StringBuffer output = new StringBuffer(100);
+
+		try
+			{
+
+			int iter = TradeConfig.getPrimIterations();
+			for (int ii = 0; ii < iter; ii++) {
+				InitialContext context = new InitialContext();
+				DataSource datasource = (DataSource) context.lookup(TradeConfig.DS_NAME);
+			}			
+
+			output.append(
+				"<html><head><title>Ping JNDI -- lookup of JDBC DataSource</title></head>"
+					+ "<body><HR><FONT size=\"+2\" color=\"#000066\">Ping JNDI -- lookup of JDBC DataSource</FONT><HR><FONT size=\"-1\" color=\"#000066\">Init time : "
+					+ initTime);
+			hitCount++;
+			output.append("</FONT><BR>Hit Count: " + hitCount);
+			output.append("<HR></body></html>");
+			out.println(output.toString());
+		}
+		catch (Exception e)
+		{
+			Log.error(e, "PingServlet2JNDI -- error look up of a JDBC DataSource");
+			res.sendError(500, "PingServlet2JNDI Exception caught: " + e.toString());
+		}
+
+	}
+	/** 
+	 * returns a string of information about the servlet
+	 * @return info String: contains info about the servlet
+	 **/
+	public String getServletInfo()
+	{
+		return "Basic JNDI look up of a JDBC DataSource";
+	}
+	/**
+	* called when the class is loaded to initialize the servlet
+	* @param config ServletConfig:
+	**/
+	public void init(ServletConfig config) throws ServletException
+	{
+		super.init(config);
+		hitCount = 0;
+		initTime = new java.util.Date().toString();
+	}
+}
\ No newline at end of file

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2JNDI.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2JNDI.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2JNDI.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Jsp.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Jsp.java?rev=775187&view=auto
==============================================================================
--- geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Jsp.java (added)
+++ geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Jsp.java Fri May 15 15:17:36 2009
@@ -0,0 +1,74 @@
+/**
+ *  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.
+ */
+package org.apache.geronimo.samples.daytrader.web.prims;
+
+import java.io.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+
+import org.apache.geronimo.samples.daytrader.util.*;
+
+
+/**
+ *
+ * PingServlet2JSP tests a call from a servlet to a JavaServer Page providing server-side dynamic
+ * HTML through JSP scripting.
+ *
+ */
+public class PingServlet2Jsp extends HttpServlet {
+	private static int hitCount = 0;
+
+/**
+ * forwards post requests to the doGet method
+ * Creation date: (11/6/2000 10:52:39 AM)
+ * @param res javax.servlet.http.HttpServletRequest
+ * @param res2 javax.servlet.http.HttpServletResponse
+ */
+public void doPost(HttpServletRequest req, HttpServletResponse res)
+	throws ServletException, IOException {
+	doGet(req, res);
+}
+	
+/**
+* this is the main method of the servlet that will service all get requests.
+* @param request HttpServletRequest
+* @param responce HttpServletResponce
+**/
+public void doGet(HttpServletRequest req, HttpServletResponse res)
+	throws ServletException, IOException {
+	PingBean ab;
+	try
+	{
+		ab = new PingBean();
+                hitCount++;
+		ab.setMsg("Hit Count: " + hitCount);
+		req.setAttribute("ab", ab);
+		
+		getServletConfig().getServletContext().getRequestDispatcher("/PingServlet2Jsp.jsp").forward(req, res);
+	}
+	catch (Exception ex)
+	{
+		Log.error(
+			ex,"PingServlet2Jsp.doGet(...): request error"); 
+		res.sendError(
+			500, 
+			"PingServlet2Jsp.doGet(...): request error"
+				+ ex.toString()); 
+
+	}
+}
+}
\ No newline at end of file

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Jsp.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Jsp.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Jsp.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Servlet.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Servlet.java?rev=775187&view=auto
==============================================================================
--- geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Servlet.java (added)
+++ geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Servlet.java Fri May 15 15:17:36 2009
@@ -0,0 +1,74 @@
+/**
+ *  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.
+ */
+package org.apache.geronimo.samples.daytrader.web.prims;
+
+import java.io.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+
+import org.apache.geronimo.samples.daytrader.util.*;
+
+
+/**
+ *
+ * PingServlet2Servlet tests servlet to servlet request dispatching. Servlet 1,
+ * the controller, creates a new JavaBean object forwards the servlet request with
+ * the JavaBean added to Servlet 2. Servlet 2 obtains access to the JavaBean through
+ * the Servlet request object and provides the dynamic HTML output based on the JavaBean
+ * data.
+ * PingServlet2Servlet is the initial servlet that sends a request to {@link PingServlet2ServletRcv}
+ *
+ */
+public class PingServlet2Servlet extends HttpServlet {
+	private static int hitCount = 0;
+
+/**
+ * forwards post requests to the doGet method
+ * Creation date: (11/6/2000 10:52:39 AM)
+ * @param res javax.servlet.http.HttpServletRequest
+ * @param res2 javax.servlet.http.HttpServletResponse
+ */
+public void doPost(HttpServletRequest req, HttpServletResponse res)
+	throws ServletException, IOException {
+	doGet(req, res);
+}
+/**
+* this is the main method of the servlet that will service all get requests.
+* @param request HttpServletRequest
+* @param responce HttpServletResponce
+**/
+public void doGet(HttpServletRequest req, HttpServletResponse res)
+	throws ServletException, IOException {
+	PingBean ab;
+	try
+	{
+		ab = new PingBean();
+		hitCount++;
+		ab.setMsg("Hit Count: " + hitCount);
+		req.setAttribute("ab", ab);
+		
+		getServletConfig().getServletContext().getRequestDispatcher("/servlet/PingServlet2ServletRcv").forward(req, res);
+	}
+	catch (Exception ex)
+	{
+		Log.error(
+			ex,	"PingServlet2Servlet.doGet(...): general exception"); 
+		res.sendError(500, "PingServlet2Servlet.doGet(...): general exception" + ex.toString()); 
+
+	}
+}   
+}
\ No newline at end of file

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Servlet.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Servlet.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Servlet.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2ServletRcv.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2ServletRcv.java?rev=775187&view=auto
==============================================================================
--- geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2ServletRcv.java (added)
+++ geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2ServletRcv.java Fri May 15 15:17:36 2009
@@ -0,0 +1,91 @@
+/**
+ *  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.
+ */
+package org.apache.geronimo.samples.daytrader.web.prims;
+
+import java.io.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+
+import org.apache.geronimo.samples.daytrader.util.*;
+
+
+/**
+ *
+ * PingServlet2Servlet tests servlet to servlet request dispatching. Servlet 1,
+ * the controller, creates a new JavaBean object forwards the servlet request with
+ * the JavaBean added to Servlet 2. Servlet 2 obtains access to the JavaBean through
+ * the Servlet request object and provides the dynamic HTML output based on the JavaBean
+ * data.
+ * PingServlet2ServletRcv receives a request from {@link PingServlet2Servlet} and displays output.
+ *
+ */
+public class PingServlet2ServletRcv extends HttpServlet {
+	private static String initTime = null;
+
+/**
+ * forwards post requests to the doGet method
+ * Creation date: (11/6/2000 10:52:39 AM)
+ * @param res javax.servlet.http.HttpServletRequest
+ * @param res2 javax.servlet.http.HttpServletResponse
+ */
+public void doPost(HttpServletRequest req, HttpServletResponse res)
+	throws ServletException, IOException {
+	doGet(req, res);
+}
+	
+	
+/**
+* this is the main method of the servlet that will service all get requests.
+* @param request HttpServletRequest
+* @param responce HttpServletResponce
+**/
+public void doGet(HttpServletRequest req, HttpServletResponse res)
+	throws ServletException, IOException {
+	PingBean ab;
+	try
+	{
+		ab = (PingBean) req.getAttribute("ab");
+		res.setContentType("text/html");
+		PrintWriter out = res.getWriter();
+		out.println(
+			"<html><head><title>Ping Servlet2Servlet</title></head>"
+				+ "<body><HR><BR><FONT size=\"+2\" color=\"#000066\">PingServlet2Servlet:<BR></FONT><FONT size=\"+1\" color=\"#000066\">Init time: "
+				+ initTime
+				+ "</FONT><BR><BR><B>Message from Servlet: </B>"
+				+ ab.getMsg()
+				+ "</body></html>"); 
+	}
+	catch (Exception ex)
+	{
+		Log.error(ex, "PingServlet2ServletRcv.doGet(...): general exception"); 
+		res.sendError(
+			500, 
+			"PingServlet2ServletRcv.doGet(...): general exception"
+				+ ex.toString()); 
+	}
+
+}
+/**
+* called when the class is loaded to initialize the servlet
+* @param config ServletConfig:
+**/
+public void init(ServletConfig config) throws ServletException {
+	super.init(config);
+	initTime = new java.util.Date().toString();
+
+}
+}
\ No newline at end of file

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2ServletRcv.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2ServletRcv.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/daytrader/trunk/daytrader-webonly/src/main/java/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2ServletRcv.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain



Mime
View raw message