Propchange: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2IncludeRcv.java ------------------------------------------------------------------------------ svn:eol-style = native Added: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2JNDI.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2JNDI.java?rev=293214&view=auto ============================================================================== --- geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2JNDI.java (added) +++ geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2JNDI.java Sun Oct 2 19:34:49 2005 @@ -0,0 +1,109 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable + * + * Licensed 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( + "Ping JNDI -- lookup of JDBC DataSource" + + "
Ping JNDI -- lookup of JDBC DataSource
Init time : " + + initTime); + hitCount++; + output.append("
Hit Count: " + hitCount); + output.append("
"); + 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/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2JNDI.java ------------------------------------------------------------------------------ svn:eol-style = native Added: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Jsp.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Jsp.java?rev=293214&view=auto ============================================================================== --- geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Jsp.java (added) +++ geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Jsp.java Sun Oct 2 19:34:49 2005 @@ -0,0 +1,75 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable + * + * Licensed 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/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Jsp.java ------------------------------------------------------------------------------ svn:eol-style = native Added: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2MDBQueue.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2MDBQueue.java?rev=293214&view=auto ============================================================================== --- geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2MDBQueue.java (added) +++ geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2MDBQueue.java Sun Oct 2 19:34:49 2005 @@ -0,0 +1,186 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable + * + * Licensed 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.*; +import javax.jms.*; + +import org.apache.geronimo.samples.daytrader.ejb.*; +import org.apache.geronimo.samples.daytrader.util.*; + +import org.apache.geronimo.samples.daytrader.*; + +/** + * + * This primitive is designed to run inside the TradeApplication and relies upon + * the {@link trade_client.TradeConfig} class to set configuration parameters. + * PingServlet2MDBQueue tests key functionality of a servlet call to a + * post a message to an MDB Queue. The TradeBrokerMDB receives the message + * This servlet makes use of the MDB EJB {@link org.apache.geronimo.samples.daytrader.ejb.TradeBrokerMDB} + * by posting a message to the MDB Queue + * + */ +public class PingServlet2MDBQueue extends HttpServlet { + + private static String initTime; + private static int hitCount; + private static Connection conn; + private static ConnectionFactory connFactory; + private static Queue queue; + +/** + * 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 IOException, ServletException { + + res.setContentType("text/html"); + java.io.PrintWriter out = res.getWriter(); + Trade trade = null; + //use a stringbuffer to avoid concatenation of Strings + StringBuffer output = new StringBuffer(100); + output.append( + "PingServlet2MDBQueue" + + "
PingServlet2MDBQueue
" + + "" + + "Tests the basic operation of a servlet posting a message to an EJB MDB through a JMS Queue."); + + //we only want to look up the JMS resources once + try + { + + if (conn == null) + { + + synchronized (lock) + { + if (conn == null) + { + + try + { + output.append("
Performing JNDI lookups and creating JMS Resources"); + InitialContext context = new InitialContext(); + connFactory = (ConnectionFactory) context.lookup("java:comp/env/jms/QueueConnectionFactory"); + queue = (Queue) context.lookup("java:comp/env/jms/TradeBrokerQueue"); + // TODO: Is this wrong as it only creates one shared connecton? + conn = connFactory.createConnection(); + + } + catch (Exception e) + { + Log.error("PingServlet2MDBQueue:doGet() -- error on intialization of JMS factories, queues", e); + throw e; + } + } + } + } + + try + { + TextMessage message = null; + int iter = TradeConfig.getPrimIterations(); + for (int ii = 0; ii < iter; ii++) { + Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); + MessageProducer producer = sess.createProducer(queue); + + message = sess.createTextMessage(); + + String command= "ping"; + message.setStringProperty("command", command); + message.setLongProperty("publishTime", System.currentTimeMillis()); + message.setText("Ping message for queue java:comp/env/jms/TradeBrokerQueue sent from PingServlet2MDBQueue at " + new java.util.Date()); + producer.send(message); + sess.close(); + } + + //write out the output + output.append("
initTime: " + initTime); + output.append("
Hit Count: " + hitCount++); + output.append("
Posted Text message to java:comp/env/jms/TradeBrokerQueue destination"); + output.append("
Message: " + message); + output.append("

Message text: " + message.getText()); + output.append( + "

"); + out.println(output.toString()); + + } + catch (Exception e) + { + Log.error("PingServlet2MDBQueue.doGet(...):exception posting message to TradeBrokerQueue destination "); + throw e; + } + } //this is where I actually handle the exceptions + catch (Exception e) + { + Log.error(e, "PingServlet2MDBQueue.doGet(...): error"); + res.sendError(500, "PingServlet2MDBQueue.doGet(...): error, " + e.toString()); + + } +} + + + + +/** + * returns a string of information about the servlet + * @return info String: contains info about the servlet + **/ + +public String getServletInfo() +{ + return "web primitive, configured with trade runtime configs, tests Servlet to Session EJB path"; + +} +/** +* 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(); + //for synchronization + lock = new Integer(99); +} + + + + +; + + + private java.lang.Integer lock;} \ No newline at end of file Propchange: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2MDBQueue.java ------------------------------------------------------------------------------ svn:eol-style = native Added: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2MDBTopic.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2MDBTopic.java?rev=293214&view=auto ============================================================================== --- geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2MDBTopic.java (added) +++ geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2MDBTopic.java Sun Oct 2 19:34:49 2005 @@ -0,0 +1,181 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable + * + * Licensed 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.*; +import javax.jms.*; + +import org.apache.geronimo.samples.daytrader.ejb.*; +import org.apache.geronimo.samples.daytrader.util.*; + +import org.apache.geronimo.samples.daytrader.*; + +/** + * + * This primitive is designed to run inside the TradeApplication and relies upon + * the {@link trade_client.TradeConfig} class to set configuration parameters. + * PingServlet2MDBQueue tests key functionality of a servlet call to a + * post a message to an MDB Topic. The TradeStreamerMDB (and any other subscribers) + * receives the message + * This servlet makes use of the MDB EJB {@link org.apache.geronimo.samples.daytrader.ejb.TradeStreamerMDB} + * by posting a message to the MDB Topic + * + */ +public class PingServlet2MDBTopic extends HttpServlet { + + private static String initTime; + private static int hitCount; + private static Connection conn; + private static ConnectionFactory connFactory; + private static Topic topic; + +/** + * 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 IOException, ServletException { + + res.setContentType("text/html"); + java.io.PrintWriter out = res.getWriter(); + Trade trade = null; + //use a stringbuffer to avoid concatenation of Strings + StringBuffer output = new StringBuffer(100); + output.append( + "PingServlet2MDBTopic" + + "
PingServlet2MDBTopic
" + + "" + + "Tests the basic operation of a servlet posting a message to an EJB MDB (and other subscribers) through a JMS Topic."); + + //we only want to look up the JMS resources once + try + { + + if (conn == null) + { + + synchronized (lock) + { + if (conn == null) + { + + try + { + output.append("
Performing JNDI lookups and creating JMS Resources"); + InitialContext context = new InitialContext(); + connFactory = (ConnectionFactory) context.lookup("java:comp/env/jms/TopicConnectionFactory"); + topic = (Topic) context.lookup("java:comp/env/jms/TradeStreamerTopic"); + // TODO: Is this wrong as it only creates one shared connecton? + conn = connFactory.createConnection(); + } + catch (Exception e) + { + Log.error("PingServlet2MDBTopic:doGet() -- error on intialization of JMS factories, topics", e); + throw e; + } + } + } + } + + try + { + TextMessage message = null; + int iter = TradeConfig.getPrimIterations(); + for (int ii = 0; ii < iter; ii++) { + Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); + MessageProducer producer = sess.createProducer(topic); + message = sess.createTextMessage(); + + String command= "ping"; + message.setStringProperty("command", command); + message.setLongProperty("publishTime", System.currentTimeMillis()); + message.setText("Ping message for topic java:comp/env/jms/TradeStreamerTopic sent from PingServlet2MDBTopic at " + new java.util.Date()); + + producer.send(message); + sess.close(); + } + + //write out the output + output.append("
initTime: " + initTime); + output.append("
Hit Count: " + hitCount++); + output.append("
Posted Text message to java:comp/env/jms/TradeStreamerTopic topic"); + output.append("
Message: " + message); + output.append("

Message text: " + message.getText()); + output.append( + "

"); + out.println(output.toString()); + + } + catch (Exception e) + { + Log.error("PingServlet2MDBTopic.doGet(...):exception posting message to TradeStreamerTopic topic"); + throw e; + } + } //this is where I actually handle the exceptions + catch (Exception e) + { + Log.error(e, "PingServlet2MDBTopic.doGet(...): error"); + res.sendError(500, "PingServlet2MDBTopic.doGet(...): error, " + e.toString()); + + } +} + + + + +/** + * returns a string of information about the servlet + * @return info String: contains info about the servlet + **/ + +public String getServletInfo() +{ + return "web primitive, configured with trade runtime configs, tests Servlet to Session EJB path"; + +} +/** +* 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(); + //for synchronization + lock = new Integer(99); +} + + + private java.lang.Integer lock;} \ No newline at end of file Propchange: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2MDBTopic.java ------------------------------------------------------------------------------ svn:eol-style = native Added: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Servlet.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Servlet.java?rev=293214&view=auto ============================================================================== --- geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Servlet.java (added) +++ geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Servlet.java Sun Oct 2 19:34:49 2005 @@ -0,0 +1,75 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable + * + * Licensed 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/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Servlet.java ------------------------------------------------------------------------------ svn:eol-style = native Added: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2ServletRcv.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2ServletRcv.java?rev=293214&view=auto ============================================================================== --- geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2ServletRcv.java (added) +++ geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2ServletRcv.java Sun Oct 2 19:34:49 2005 @@ -0,0 +1,92 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable + * + * Licensed 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( + "Ping Servlet2Servlet" + + "

PingServlet2Servlet:
Init time: " + + initTime + + "

Message from Servlet: " + + ab.getMsg() + + ""); + } + 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/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2ServletRcv.java ------------------------------------------------------------------------------ svn:eol-style = native Added: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session.java?rev=293214&view=auto ============================================================================== --- geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session.java (added) +++ geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session.java Sun Oct 2 19:34:49 2005 @@ -0,0 +1,186 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable + * + * Licensed 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.*; +import javax.rmi.PortableRemoteObject; + +import org.apache.geronimo.samples.daytrader.ejb.*; +import org.apache.geronimo.samples.daytrader.util.*; + +import org.apache.geronimo.samples.daytrader.*; + +/** + * + * This primitive is designed to run inside the TradeApplication and relies upon + * the {@link trade_client.TradeConfig} class to set configuration parameters. + * PingServlet2SessionEJB tests key functionality of a servlet call to a + * stateless SessionEJB. + * This servlet makes use of the Stateless Session EJB {@link trade.Trade} by calling + * calculateInvestmentReturn with three random numbers. + * + */ +public class PingServlet2Session extends HttpServlet { + + private static String initTime; + private static int hitCount; + private static TradeHome tradeHome; + + +/** + * 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 IOException, ServletException { + + res.setContentType("text/html"); + java.io.PrintWriter out = res.getWriter(); + Trade trade = null; + //use a stringbuffer to avoid concatenation of Strings + StringBuffer output = new StringBuffer(100); + output.append( + "PingServlet2Session" + + "
PingServlet2Session
" + + "" + + "Tests the basis path from a Servlet to a Session Bean."); + + //get a reference to the TradeBean (session bean) Home + try + { + //we only want to look up the home once + if (tradeHome == null) + { + //we only want one thread to create the EJBHome + synchronized (lock) + { + if (tradeHome == null) + { + + output.append("
Performing JNDI lookup to create a TradeHome"); + try + { + //I am going to use the sytem environment that is set by + //trade_client.TradeConfig. + InitialContext ic = new InitialContext(); + + tradeHome = + (TradeHome) PortableRemoteObject.narrow( + ic.lookup("java:comp/env/ejb/Trade"), + TradeHome.class); + } + catch (Exception ne) + { + Log.error(ne,"PingServlet2Session.doGet(...): errorj looking up TradeHome"); + throw ne; + } //end of catch + } + } + } + //tradeHome will be a reference to TradeHome. + try + { + //create a new Trade instance + trade = tradeHome.create(); + + //create three random numbers + double rnd1 = Math.random() * 1000000; + double rnd2 = Math.random() * 1000000; + double rnd3 = Math.random() * 1000000; + + //use a function to do some work. + double increase = 0.0; + int iter = TradeConfig.getPrimIterations(); + for (int ii = 0; ii < iter; ii++) { + increase = trade.investmentReturn(rnd1, rnd2); + } + + //write out the output + output.append("
initTime: " + initTime); + output.append("
Hit Count: " + hitCount++); + output.append("
Investment Return Information

investment: " + rnd1); + output.append("
current Value: " + rnd2); + output.append( + "
investment return " + increase + "
"); + out.println(output.toString()); + + } + catch (Exception e) + { + Log.error("PingServlet2Session.doGet(...):exception calling trade.investmentReturn "); + throw e; + } + } //this is where I actually handle the exceptions + catch (Exception e) + { + Log.error(e, "PingServlet2Session.doGet(...): error"); + res.sendError(500, "PingServlet2Session.doGet(...): error, " + e.toString()); + + } +} + + + + +/** + * returns a string of information about the servlet + * @return info String: contains info about the servlet + **/ + +public String getServletInfo() +{ + return "web primitive, configured with trade runtime configs, tests Servlet to Session EJB path"; + +} +/** +* 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(); + tradeHome = null; + //for synchronization + lock = new Integer(99); +} + + + + +; + + + private java.lang.Integer lock;} \ No newline at end of file Propchange: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session.java ------------------------------------------------------------------------------ svn:eol-style = native Added: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session2CMROne2Many.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session2CMROne2Many.java?rev=293214&view=auto ============================================================================== --- geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session2CMROne2Many.java (added) +++ geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session2CMROne2Many.java Sun Oct 2 19:34:49 2005 @@ -0,0 +1,171 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable + * + * Licensed 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.util.Collection; +import java.util.Iterator; +import javax.servlet.*; +import javax.servlet.http.*; +import javax.naming.*; + +import org.apache.geronimo.samples.daytrader.ejb.*; +import org.apache.geronimo.samples.daytrader.util.*; + +import org.apache.geronimo.samples.daytrader.*; + +/** + * Primitive to test Entity Container Managed Relationshiop One to One + * Servlet will generate a random userID and get the profile for that user using a {@link trade.Account} Entity EJB + * This tests the common path of a Servlet calling a Session to Entity EJB to get CMR One to One data + * + */ + +public class PingServlet2Session2CMROne2Many extends HttpServlet +{ + private static String initTime; + private static int hitCount; + private static TradeHome tradeHome; + + /** + * 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 IOException, ServletException + { + + res.setContentType("text/html"); + java.io.PrintWriter out = res.getWriter(); + + Trade trade = null; + String userID = null; + + StringBuffer output = new StringBuffer(100); + output.append( + "Servlet2Session2CMROne20ne" + + "
PingServlet2Session2CMROne2Many
" + + "
PingServlet2Session2CMROne2Many uses the Trade Session EJB" + + " to get the orders for a user using an EJB 2.0 Entity CMR one to many relationship"); + try + { + //this is just a large general catch block. + + //it is important only to look up the home once. + if (tradeHome == null) + { + //make sure that only one thread looks up the home + synchronized (lock) + { + if (tradeHome == null) + { + output.append( + "
Performing JNDI lookup and creating reference to TradeHome"); + try + { + //do not pass an environment so that it uses the system env. + InitialContext ic = new InitialContext(); + //lookup and narrow (cast) the reference to the ejbHome. + tradeHome = (TradeHome) ic.lookup("java:comp/env/ejb/Trade"); + } + catch (Exception ne) + { + //wrap and throw the exception for handling + Log.error(ne,"PingServlet2EntityCMROne2Many.doGet(...): error looking up TradeHome"); + throw ne; + } + } + } + } + + Collection orderDataBeans = null; + int iter = TradeConfig.getPrimIterations(); + for (int ii = 0; ii < iter; ii++) { + userID = TradeConfig.rndUserID(); + trade = tradeHome.create(); + + //get the users orders and print the output. + orderDataBeans = trade.getOrders(userID); + } + + output.append("
initTime: " + initTime + "
Hit Count: ").append( + hitCount++); + output + .append("
One to Many CMR access of Account Orders from Account Entity
"); + output.append("
User: " + userID + " currently has " + orderDataBeans.size() + " stock orders:"); + Iterator it = orderDataBeans.iterator(); + while ( it.hasNext() ) + { + OrderDataBean orderData = (OrderDataBean) it.next(); + output.append("
" + orderData.toHTML()); + } + output.append("

"); + out.println(output.toString()); + } + catch (Exception e) + { + Log.error(e,"PingServlet2Session2CMROne2Many.doGet(...): error"); + //this will send an Error to teh web applications defined error page. + res.sendError( + 500, + "PingServlet2Session2CMROne2Many.doGet(...): error" + + e.toString()); + + } + } + + /** + * returns a string of information about the servlet + * @return info String: contains info about the servlet + **/ + + public String getServletInfo() + { + return "web primitive, tests Servlet to Entity EJB path"; + } + + /** + * 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(); + //set this to null, this will be initialized in the doGet method. + tradeHome = null; + //this lock is used to synchronize initialization of the EJBHome + lock = new Integer(99); + + } + private java.lang.Integer lock; +} \ No newline at end of file Propchange: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session2CMROne2Many.java ------------------------------------------------------------------------------ svn:eol-style = native Added: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session2CMROne2One.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session2CMROne2One.java?rev=293214&view=auto ============================================================================== --- geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session2CMROne2One.java (added) +++ geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session2CMROne2One.java Sun Oct 2 19:34:49 2005 @@ -0,0 +1,161 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable + * + * Licensed 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.*; + +import org.apache.geronimo.samples.daytrader.ejb.*; +import org.apache.geronimo.samples.daytrader.util.*; + +import org.apache.geronimo.samples.daytrader.*; + +/** + * Primitive to test Entity Container Managed Relationshiop One to One + * Servlet will generate a random userID and get the profile for that user using a {@link trade.Account} Entity EJB + * This tests the common path of a Servlet calling a Session to Entity EJB to get CMR One to One data + * + */ + +public class PingServlet2Session2CMROne2One extends HttpServlet +{ + private static String initTime; + private static int hitCount; + private static TradeHome tradeHome; + + /** + * 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 IOException, ServletException + { + + res.setContentType("text/html"); + java.io.PrintWriter out = res.getWriter(); + + Trade trade = null; + String userID = null; + + StringBuffer output = new StringBuffer(100); + output.append( + "Servlet2Session2CMROne20ne" + + "
PingServlet2Session2CMROne2One
" + + "
PingServlet2Session2CMROne2One uses the Trade Session EJB" + + " to get the profile for a user using an EJB 2.0 CMR one to one relationship"); + try + { + //this is just a large general catch block. + + //it is important only to look up the home once. + if (tradeHome == null) + { + //make sure that only one thread looks up the home + synchronized (lock) + { + if (tradeHome == null) + { + output.append( + "
Performing JNDI lookup and creating reference to TradeHome"); + try + { + //do not pass an environment so that it uses the system env. + InitialContext ic = new InitialContext(); + //lookup and narrow (cast) the reference to the ejbHome. + tradeHome = (TradeHome) ic.lookup("java:comp/env/ejb/Trade"); + } + catch (Exception ne) + { + //wrap and throw the exception for handling + Log.error(ne,"PingServlet2Session2CMROne2One.doGet(...): error looking up TradeHome"); + throw ne; + } + } + } + } + + AccountProfileDataBean accountProfileData = null; + int iter = TradeConfig.getPrimIterations(); + for (int ii = 0; ii < iter; ii++) { + userID = TradeConfig.rndUserID(); + trade = tradeHome.create(); + //get the price and print the output. + accountProfileData = trade.getAccountProfileData(userID); + } + + output.append("
initTime: " + initTime + "
Hit Count: ").append( + hitCount++); + output + .append("
One to One CMR access of AccountProfile Information from Account Entity

" + accountProfileData.toHTML()); + output.append("

"); + out.println(output.toString()); + } + catch (Exception e) + { + Log.error(e,"PingServlet2Session2CMROne2One.doGet(...): error"); + //this will send an Error to teh web applications defined error page. + res.sendError( + 500, + "PingServlet2Session2CMROne2One.doGet(...): error" + + e.toString()); + + } + } + + /** + * returns a string of information about the servlet + * @return info String: contains info about the servlet + **/ + + public String getServletInfo() + { + return "web primitive, tests Servlet to Entity EJB path"; + } + + /** + * 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(); + //set this to null, this will be initialized in the doGet method. + tradeHome = null; + //this lock is used to synchronize initialization of the EJBHome + lock = new Integer(99); + + } + private java.lang.Integer lock; +} \ No newline at end of file Propchange: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session2CMROne2One.java ------------------------------------------------------------------------------ svn:eol-style = native Added: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session2Entity.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session2Entity.java?rev=293214&view=auto ============================================================================== --- geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session2Entity.java (added) +++ geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session2Entity.java Sun Oct 2 19:34:49 2005 @@ -0,0 +1,174 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable + * + * Licensed 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.*; +import javax.rmi.PortableRemoteObject; + +import org.apache.geronimo.samples.daytrader.ejb.*; +import org.apache.geronimo.samples.daytrader.util.*; + +import org.apache.geronimo.samples.daytrader.*; + +/** + * + * PingServlet2Session2Entity tests key functionality of a servlet call to a + * stateless SessionEJB, and then to a Entity EJB representing data in a database. + * This servlet makes use of the Stateless Session EJB {@link Trade}, and then + * uses {@link TradeConfig} to generate a random stock symbol. The stocks + * price is looked up using the Quote Entity EJB. + * + */ +public class PingServlet2Session2Entity extends HttpServlet +{ + + private static String initTime; + private static int hitCount; + private static TradeHome tradeHome; + + /** + * 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 IOException, ServletException + { + + res.setContentType("text/html"); + java.io.PrintWriter out = res.getWriter(); + String symbol = null; + QuoteDataBean quoteData = null; + Trade trade = null; + StringBuffer output = new StringBuffer(100); + + output.append( + "PingServlet2Session2Entity" + + "
PingServlet2Session2Entity
" + + "" + + "PingServlet2Session2Entity tests the common path of a Servlet calling a Session EJB " + + "which in turn calls an Entity EJB.
"); + + try + { + + //only want to do this once. + if (tradeHome == null) + { + //only want one thread to create the EjbHome + synchronized (lock) + { + + if (tradeHome == null) + { + + //out.println("doing JNDI lookup and creating new reference to trade.TradeHome"); + output.append("
Performing JNDI lookup to create new tradeHome"); + + try + { + //I am going to use the System env. that is set through TradeConfig + InitialContext ic = new InitialContext(); + + tradeHome = + (TradeHome) PortableRemoteObject.narrow( + ic.lookup("java:comp/env/ejb/Trade"), + TradeHome.class); + } + catch (Exception ne) + + { + Log.error(ne, "PingServlet2Session2Entity.goGet(...): exception caught looking up and narrowing 'TradeHome'"); + throw ne; + } + } + } + } + + try + { + int iter = TradeConfig.getPrimIterations(); + for (int ii = 0; ii < iter; ii++) { + //I have the TradeBean Home, now I want to get an instance every time + symbol = TradeConfig.rndSymbol(); + trade = tradeHome.create(); + //getQuote will call findQuote which will instaniate the Quote Entity Bean + //and then will return a QuoteObject + quoteData = trade.getQuote(symbol); + trade.remove(); + } + } + catch (Exception ne) + { + Log.error(ne, "PingServlet2Session2Entity.goGet(...): exception getting QuoteData through Trade"); + throw ne; + } + + output.append("
initTime: " + initTime).append( + "
Hit Count: " + hitCount++); + output.append("
Quote Information

" + quoteData.toHTML()); + out.println(output.toString()); + + } + catch (Exception e) + { + Log.error(e, "PingServlet2Session2Entity.doGet(...): General Exception caught"); + res.sendError(500, "General Exception caught, " + e.toString()); + } + } + + /** + * returns a string of information about the servlet + * @return info String: contains info about the servlet + **/ + + public String getServletInfo() + { + return "web primitive, tests Servlet to Session to Entity EJB path"; + + } + /** + * 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; + tradeHome = null; + initTime = new java.util.Date().toString(); + //this is for synchronization + lock = new Integer(99); + } + private java.lang.Integer lock; +} \ No newline at end of file Propchange: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session2Entity.java ------------------------------------------------------------------------------ svn:eol-style = native Added: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session2EntityCollection.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session2EntityCollection.java?rev=293214&view=auto ============================================================================== --- geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session2EntityCollection.java (added) +++ geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session2EntityCollection.java Sun Oct 2 19:34:49 2005 @@ -0,0 +1,181 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable + * + * Licensed 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 java.util.Collection; +import java.util.Iterator; +import javax.naming.*; +import javax.rmi.PortableRemoteObject; + +import org.apache.geronimo.samples.daytrader.ejb.*; +import org.apache.geronimo.samples.daytrader.util.*; + +import org.apache.geronimo.samples.daytrader.*; + +/** + * + * PingServlet2Session2Entity tests key functionality of a servlet call to a + * stateless SessionEJB, and then to a Entity EJB representing data in a database. + * This servlet makes use of the Stateless Session EJB {@link Trade}, and then + * uses {@link TradeConfig} to generate a random user. The users + * portfolio is looked up using the Holding Entity EJB returnin a collection of Holdings + * + */ +public class PingServlet2Session2EntityCollection extends HttpServlet +{ + + private static String initTime; + private static int hitCount; + private static TradeHome tradeHome; + + /** + * 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 IOException, ServletException + { + + res.setContentType("text/html"); + java.io.PrintWriter out = res.getWriter(); + String userID = null; + Collection holdingDataBeans = null; + Trade trade = null; + StringBuffer output = new StringBuffer(100); + + output.append( + "PingServlet2Session2EntityCollection" + + "
PingServlet2Session2EntityCollection
" + + "" + + "PingServlet2Session2EntityCollection tests the common path of a Servlet calling a Session EJB " + + "which in turn calls a finder on an Entity EJB returning a collection of Entity EJBs.
"); + + try + { + + //only want to do this once. + if (tradeHome == null) + { + //only want one thread to create the EjbHome + synchronized (lock) + { + + if (tradeHome == null) + { + + //out.println("doing JNDI lookup and creating new reference to trade.TradeHome"); + output.append("
Performing JNDI lookup to create new tradeHome"); + + try + { + //I am going to use the System env. that is set through TradeConfig + InitialContext ic = new InitialContext(); + + tradeHome = + (TradeHome) PortableRemoteObject.narrow( + ic.lookup("java:comp/env/ejb/Trade"), + TradeHome.class); + } + catch (Exception ne) + + { + Log.error(ne, "PingServlet2Session2EntityCollection.goGet(...): exception caught looking up and narrowing 'TradeHome'"); + throw ne; + } + } + } + } + + try + { + int iter = TradeConfig.getPrimIterations(); + for (int ii = 0; ii < iter; ii++) { + //I have the TradeBean Home, now I want to get an instance every time + userID = TradeConfig.rndUserID(); + trade = tradeHome.create(); + //getQuote will call findQuote which will instaniate the Quote Entity Bean + //and then will return a QuoteObject + holdingDataBeans = trade.getHoldings(userID); + trade.remove(); + } + } + catch (Exception ne) + { + Log.error(ne, "PingServlet2Session2EntityCollection.goGet(...): exception getting HoldingData collection through Trade for user "+ userID); + throw ne; + } + + output.append("
initTime: " + initTime).append( + "
Hit Count: " + hitCount++); + output.append("
User: " + userID + " is currently holding " + holdingDataBeans.size() + " stock holdings:"); + Iterator it = holdingDataBeans.iterator(); + while ( it.hasNext() ) + { + HoldingDataBean holdingData = (HoldingDataBean) it.next(); + output.append("
" + holdingData.toHTML()); + } + out.println(output.toString()); + + } + catch (Exception e) + { + Log.error(e, "PingServlet2Session2EntityCollection.doGet(...): General Exception caught"); + res.sendError(500, "General Exception caught, " + e.toString()); + } + } + + /** + * returns a string of information about the servlet + * @return info String: contains info about the servlet + **/ + + public String getServletInfo() + { + return "web primitive, tests Servlet to Session to Entity returning a collection of Entity EJBs"; + } + /** + * 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; + tradeHome = null; + initTime = new java.util.Date().toString(); + //this is for synchronization + lock = new Integer(99); + } + private java.lang.Integer lock; +} \ No newline at end of file Propchange: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2Session2EntityCollection.java ------------------------------------------------------------------------------ svn:eol-style = native Added: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2TwoPhase.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2TwoPhase.java?rev=293214&view=auto ============================================================================== --- geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2TwoPhase.java (added) +++ geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2TwoPhase.java Sun Oct 2 19:34:49 2005 @@ -0,0 +1,174 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable + * + * Licensed 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.*; +import javax.rmi.PortableRemoteObject; + +import org.apache.geronimo.samples.daytrader.ejb.*; +import org.apache.geronimo.samples.daytrader.util.*; + +import org.apache.geronimo.samples.daytrader.*; + +/** + * + * PingServlet2TwoPhase tests key functionality of a TwoPhase commit + * In this primitive a servlet calls a Session EJB which begins a global txn + * The Session EJB then reads a DB row and sends a message to JMS Queue + * The txn is closed w/ a 2-phase commit + * + */ +public class PingServlet2TwoPhase extends HttpServlet +{ + + private static String initTime; + private static int hitCount; + private static TradeHome tradeHome; + + /** + * 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 IOException, ServletException + { + + res.setContentType("text/html"); + java.io.PrintWriter out = res.getWriter(); + String symbol = null; + QuoteDataBean quoteData = null; + Trade trade = null; + StringBuffer output = new StringBuffer(100); + + output.append( + "PingServlet2TwoPhase" + + "
PingServlet2TwoPhase
" + + "" + + "PingServlet2TwoPhase tests the path of a Servlet calling a Session EJB " + + "which in turn calls an Entity EJB to read a DB row (quote). The Session EJB " + + "then posts a message to a JMS Queue. " + + "
These operations are wrapped in a 2-phase commit
"); + + try + { + + //only want to do this once. + if (tradeHome == null) + { + //only want one thread to create the EjbHome + synchronized (lock) + { + + if (tradeHome == null) + { + + //out.println("doing JNDI lookup and creating new reference to trade.TradeHome"); + output.append("
Performing JNDI lookup to create new tradeHome"); + + try + { + //I am going to use the System env. that is set through TradeConfig + InitialContext ic = new InitialContext(); + + tradeHome = + (TradeHome) PortableRemoteObject.narrow( + ic.lookup("java:comp/env/ejb/Trade"), + TradeHome.class); + } + catch (Exception ne) + + { + Log.error(ne, "PingServlet2TwoPhase.goGet(...): exception caught looking up and narrowing 'TradeHome'"); + throw ne; + } + } + } + } + + try + { + int iter = TradeConfig.getPrimIterations(); + for (int ii = 0; ii < iter; ii++) { + symbol = TradeConfig.rndSymbol(); + trade = tradeHome.create(); + //getQuote will call findQuote which will instaniate the Quote Entity Bean + //and then will return a QuoteObject + quoteData = trade.pingTwoPhase(symbol); + trade.remove(); + } + } + catch (Exception ne) + { + Log.error(ne, "PingServlet2TwoPhase.goGet(...): exception getting QuoteData through Trade"); + throw ne; + } + + output.append("
initTime: " + initTime).append( + "
Hit Count: " + hitCount++); + output.append("
Two phase ping selected a quote and sent a message to TradeBrokerQueue JMS queue
Quote Information

" + quoteData.toHTML()); + out.println(output.toString()); + + } + catch (Exception e) + { + Log.error(e, "PingServlet2TwoPhase.doGet(...): General Exception caught"); + res.sendError(500, "General Exception caught, " + e.toString()); + } + } + + /** + * returns a string of information about the servlet + * @return info String: contains info about the servlet + **/ + + public String getServletInfo() + { + return "web primitive, tests Servlet to Session to Entity EJB and JMS -- 2-phase commit path"; + + } + /** + * 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; + tradeHome = null; + initTime = new java.util.Date().toString(); + //this is for synchronization + lock = new Integer(99); + } + private java.lang.Integer lock; +} \ No newline at end of file Propchange: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServlet2TwoPhase.java ------------------------------------------------------------------------------ svn:eol-style = native Added: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServletWriter.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServletWriter.java?rev=293214&view=auto ============================================================================== --- geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServletWriter.java (added) +++ geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServletWriter.java Sun Oct 2 19:34:49 2005 @@ -0,0 +1,97 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable + * + * Licensed 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 extends PingServlet by using a PrintWriter for formatted + * output vs. the output stream used by {@link PingServlet}. + * + */ +public class PingServletWriter 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( + "Ping Servlet Writer" + + "

Ping Servlet Writer:
Init time : " + + initTime + + "

Hit Count: " + + hitCount + + ""); + } + catch (Exception e) + { + Log.error(e, "PingServletWriter.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 using a PrintWriter"; + } + /** + * 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/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingServletWriter.java ------------------------------------------------------------------------------ svn:eol-style = native Added: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingSession1.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingSession1.java?rev=293214&view=auto ============================================================================== --- geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingSession1.java (added) +++ geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingSession1.java Sun Oct 2 19:34:49 2005 @@ -0,0 +1,127 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable + * + * Licensed 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.*; + +/** + * + * PingHTTPSession1 - SessionID tests fundamental HTTP session functionality + * by creating a unique session ID for each individual user. The ID is stored + * in the users session and is accessed and displayed on each user request. + * + */ +public class PingSession1 extends HttpServlet { + private static int count; + // For each new session created, add a session ID of the form "sessionID:" + count + 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 request, HttpServletResponse response) + throws ServletException, IOException { + HttpSession session = null; + try + { + try + { + //get the users session, if the user does not have a session create one. + session = request.getSession(true); + } + catch (Exception e) + { + Log.error(e, "PingSession1.doGet(...): error getting session"); + //rethrow the exception for handling in one place. + throw e; + } + + // Get the session data value + Integer ival = (Integer) session.getAttribute("sessiontest.counter"); + //if their is not a counter create one. + if (ival == null) + { + ival = new Integer(count++); + session.setAttribute("sessiontest.counter", ival); + } + String SessionID = "SessionID:" + ival.toString(); + + // Output the page + response.setContentType("text/html"); + response.setHeader("SessionKeyTest-SessionID", SessionID); + + PrintWriter out = response.getWriter(); + out.println( + "HTTP Session Key Test

HTTP Session Test 1: Session Key
Init time: " + + initTime + + "

"); + hitCount++; + out.println( + "Hit Count: " + + hitCount + + "
Your HTTP Session key is " + + SessionID + + "
"); + } + catch (Exception e) + { + //log the excecption + Log.error(e, "PingSession1.doGet(..l.): error."); + //set the server responce to 500 and forward to the web app defined error page + response.sendError( + 500, + "PingSession1.doGet(...): error. " + e.toString()); + } +} +/** + * returns a string of information about the servlet + * @return info String: contains info about the servlet + **/ + +public String getServletInfo() +{ + return "HTTP Session Key: Tests management of a read only unique id"; +} +/** +* called when the class is loaded to initialize the servlet +* @param config ServletConfig: +**/ +public void init(ServletConfig config) throws ServletException { + super.init(config); + count = 0; + hitCount = 0; + initTime = new java.util.Date().toString(); + +} +} \ No newline at end of file Propchange: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingSession1.java ------------------------------------------------------------------------------ svn:eol-style = native Added: geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingSession2.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingSession2.java?rev=293214&view=auto ============================================================================== --- geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingSession2.java (added) +++ geronimo/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingSession2.java Sun Oct 2 19:34:49 2005 @@ -0,0 +1,144 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable + * + * Licensed 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.*; + +/** + * + * PingHTTPSession2 session create/destroy further extends the previous test by + * invalidating the HTTP Session on every 5th user access. This results in testing + * HTTPSession create and destroy + * + */ +public class PingSession2 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 request, HttpServletResponse response) + throws ServletException, IOException { + HttpSession session = null; + try + { + try + { + session = request.getSession(true); + } + catch (Exception e) + { + Log.error(e, "PingSession2.doGet(...): error getting session"); + //rethrow the exception for handling in one place. + throw e; + + } + + // Get the session data value + Integer ival = (Integer) session.getAttribute("sessiontest.counter"); + //if there is not a counter then create one. + if (ival == null) + { + ival = new Integer(1); + } + else + { + ival = new Integer(ival.intValue() + 1); + } + session.setAttribute("sessiontest.counter", ival); + //if the session count is equal to five invalidate the session + if (ival.intValue() == 5) + { + session.invalidate(); + } + + try + { + // Output the page + response.setContentType("text/html"); + response.setHeader("SessionTrackingTest-counter", ival.toString()); + + PrintWriter out = response.getWriter(); + out.println( + "Session Tracking Test 2

HTTP Session Test 2: Session create/invalidate
Init time: " + + initTime + + "

"); + hitCount++; + out.println( + "Hit Count: " + + hitCount + + "
Session hits: " + + ival + + "
"); + } + catch (Exception e) + { + Log.error(e, "PingSession2.doGet(...): error getting session information"); + //rethrow the exception for handling in one place. + throw e; + } + + } + + catch (Exception e) + { + //log the excecption + Log.error(e, "PingSession2.doGet(...): error."); + //set the server responce to 500 and forward to the web app defined error page + response.sendError( + 500, + "PingSession2.doGet(...): error. " + e.toString()); + } +} //end of the method +/** + * returns a string of information about the servlet + * @return info String: contains info about the servlet + **/ +public String getServletInfo() +{ + return "HTTP Session Key: Tests management of a read/write unique id"; +} +/** +* 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/trunk/sandbox/daytrader/modules/web/src/webapp/WEB-INF/classes/org/apache/geronimo/samples/daytrader/web/prims/PingSession2.java ------------------------------------------------------------------------------ svn:eol-style = native