You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jb...@apache.org on 2009/05/15 17:17:45 UTC
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...
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