Added: geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/PingServletWriter.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/PingServletWriter.java?rev=1071543&view=auto
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/PingServletWriter.java (added)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/PingServletWriter.java Thu Feb 17 08:23:57 2011
@@ -0,0 +1,98 @@
+/**
+ * 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.daytrader.javaee6.web.prims;
+
+import java.io.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.servlet.annotation.WebServlet;
+
+import org.apache.geronimo.daytrader.javaee6.utils.Log;
+
+
+/**
+ *
+ * PingServlet extends PingServlet by using a PrintWriter for formatted
+ * output vs. the output stream used by {@link PingServlet}.
+ *
+ */
+@WebServlet("/servlet/PingServletWriter")
+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
Added: geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/PingSession1.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/PingSession1.java?rev=1071543&view=auto
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/PingSession1.java (added)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/PingSession1.java Thu Feb 17 08:23:57 2011
@@ -0,0 +1,128 @@
+/**
+ * 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.daytrader.javaee6.web.prims;
+
+import java.io.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+
+import javax.servlet.annotation.WebServlet;
+
+import org.apache.geronimo.daytrader.javaee6.utils.Log;
+/**
+ *
+ * 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.
+ *
+ */
+@WebServlet("/servlet/PingSession1")
+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
Added: geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/PingSession2.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/PingSession2.java?rev=1071543&view=auto
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/PingSession2.java (added)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/PingSession2.java Thu Feb 17 08:23:57 2011
@@ -0,0 +1,145 @@
+/**
+ * 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.daytrader.javaee6.web.prims;
+
+import java.io.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.servlet.annotation.WebServlet;
+
+import org.apache.geronimo.daytrader.javaee6.utils.Log;
+
+/**
+ *
+ * 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
+ *
+ */
+@WebServlet("/servlet/PingSession2")
+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
Added: geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/PingSession3.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/PingSession3.java?rev=1071543&view=auto
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/PingSession3.java (added)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/PingSession3.java Thu Feb 17 08:23:57 2011
@@ -0,0 +1,178 @@
+/**
+ * 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.daytrader.javaee6.web.prims;
+
+import java.io.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.servlet.annotation.WebServlet;
+
+import org.apache.geronimo.daytrader.javaee6.utils.Log;
+
+
+/**
+ *
+ * PingHTTPSession3 tests the servers ability to manage
+ * and persist large HTTPSession data objects. The servlet creates the large custom
+ * java object {@link PingSession3Object}. This large session object is
+ * retrieved and stored to the session on each user request. The default settings
+ * result in approx 2024 bits being retrieved and stored upon each request.
+ *
+ */
+@WebServlet("/servlet/PingSession3")
+public class PingSession3 extends HttpServlet {
+ private static int NUM_OBJECTS = 2;
+ private static String initTime = null;
+ 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 request, HttpServletResponse response)
+ throws ServletException, IOException {
+
+ PrintWriter out = response.getWriter();
+ //Using a StringBuffer to output all at once.
+ StringBuffer outputBuffer = new StringBuffer();
+ HttpSession session = null;
+ PingSession3Object[] sessionData;
+ response.setContentType("text/html");
+
+ //this is a general try/catch block. The catch block at the end of this will forward the responce
+ //to an error page if there is an exception
+ try
+ {
+
+ try
+ {
+ session = request.getSession(true);
+ }
+ catch (Exception e)
+ {
+ Log.error(e, "PingSession3.doGet(...): error getting session");
+ //rethrow the exception for handling in one place.
+ throw e;
+
+ }
+ // Each PingSession3Object in the PingSession3Object array is 1K in size
+ // NUM_OBJECTS sets the size of the array to allocate and thus set the size in KBytes of the session object
+ // NUM_OBJECTS can be initialized by the servlet
+ // Here we check for the request parameter to change the size and invalidate the session if it exists
+ // NOTE: Current user sessions will remain the same (i.e. when NUM_OBJECTS is changed, all user thread must be restarted
+ // for the change to fully take effect
+
+ String num_objects;
+ if ((num_objects = request.getParameter("num_objects")) != null)
+ {
+ //validate input
+ try
+ {
+ int x = Integer.parseInt(num_objects);
+ if (x > 0)
+ {
+ NUM_OBJECTS = x;
+ }
+ }
+ catch (Exception e)
+ {
+ Log.error(e, "PingSession3.doGet(...): input should be an integer, input=" + num_objects);
+ } // revert to current value on exception
+
+ outputBuffer.append(
+ " Session object size set to "
+ + NUM_OBJECTS
+ + "K bytes ");
+ if (session != null)
+ session.invalidate();
+ out.print(outputBuffer.toString());
+ out.close();
+ return;
+ }
+
+ // Get the session data value
+ sessionData =
+ (PingSession3Object[]) session.getAttribute("sessiontest.sessionData");
+ if (sessionData == null)
+ {
+ sessionData = new PingSession3Object[NUM_OBJECTS];
+ for (int i = 0; i < NUM_OBJECTS; i++)
+ {
+ sessionData[i] = new PingSession3Object();
+ }
+ }
+
+ session.setAttribute("sessiontest.sessionData", sessionData);
+
+ //Each PingSession3Object is about 1024 bits, there are 8 bits in a byte.
+ int num_bytes = (NUM_OBJECTS*1024)/8;
+ response.setHeader(
+ "SessionTrackingTest-largeSessionData",
+ num_bytes + "bytes");
+
+ outputBuffer
+ .append("Session Large Data Test
HTTP Session Test 3: Large Data
Init time: ")
+ .append(initTime)
+ .append("
");
+ hitCount++;
+ outputBuffer.append("Hit Count: ").append(hitCount).append(
+ "
Session object updated. Session Object size = "
+ + num_bytes
+ + " bytes ");
+ //output the Buffer to the printWriter.
+ out.println(outputBuffer.toString());
+
+ }
+ catch (Exception e)
+ {
+ //log the excecption
+ Log.error(e, "PingSession3.doGet(..l.): error.");
+ //set the server responce to 500 and forward to the web app defined error page
+ response.sendError(
+ 500,
+ "PingSession3.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 Object: Tests management of a large custom session 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
Added: geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/PingSession3Object.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/PingSession3Object.java?rev=1071543&view=auto
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/PingSession3Object.java (added)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/PingSession3Object.java Thu Feb 17 08:23:57 2011
@@ -0,0 +1,89 @@
+/**
+ * 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.daytrader.javaee6.web.prims;
+
+import java.io.*;
+
+/**
+ *
+ * An object that contains approximately 1024 bits of information. This is used by
+ * {@link PingSession3}
+ *
+ */
+public class PingSession3Object implements Serializable {
+ // PingSession3Object represents a BLOB of session data of various.
+ // Each instantiation of this class is approximately 1K in size (not including overhead for arrays and Strings)
+ // Using different datatype exercises the various serialization algorithms for each type
+
+ byte[] byteVal = new byte[16]; // 8 * 16 = 128 bits
+ char[] charVal = new char[8]; // 16 * 8 = 128 bits
+ int a, b, c, d; // 4 * 32 = 128 bits
+ float e, f, g, h; // 4 * 32 = 128 bits
+ double i, j; // 2 * 64 = 128 bits
+ // Primitive type size = ~5*128= 640
+
+ String s1 = new String("123456789012");
+ String s2 = new String("abcdefghijkl");
+// String type size = ~2*12*16 = 384
+// Total blob size (w/o overhead) = 1024
+
+
+// The Session blob must be filled with data to avoid compression of the blob during serialization
+ PingSession3Object()
+ {
+ int index;
+ byte b = 0x8;
+ for (index=0; index<16; index++)
+ {
+ byteVal[index] = (byte) (b+2);
+ }
+
+ char c = 'a';
+ for (index=0; index<8; index++)
+ {
+ charVal[index] = (char) (c+2);
+ }
+
+ a=1; b=2; c=3; d=5;
+ e = (float)7.0; f=(float)11.0; g=(float)13.0; h=(float)17.0;
+ i=(double)19.0; j=(double)23.0;
+ }
+/**
+ * Main method to test the serialization of the Session Data blob object
+ * Creation date: (4/3/2000 3:07:34 PM)
+ * @param args java.lang.String[]
+ */
+
+/** Since the following main method were written for testing purpose, we comment them out
+*public static void main(String[] args) {
+* try {
+* PingSession3Object data = new PingSession3Object();
+*
+* FileOutputStream ostream = new FileOutputStream("c:\\temp\\datablob.xxx");
+* ObjectOutputStream p = new ObjectOutputStream(ostream);
+* p.writeObject(data);
+* p.flush();
+* ostream.close();
+* }
+* catch (Exception e)
+* {
+* System.out.println("Exception: " + e.toString());
+* }
+*}
+*/
+
+}
\ No newline at end of file
Added: geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Entity.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Entity.java?rev=1071543&view=auto
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Entity.java (added)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Entity.java Thu Feb 17 08:23:57 2011
@@ -0,0 +1,105 @@
+/**
+ * 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.daytrader.javaee6.web.prims.ejb3;
+
+import java.io.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.servlet.annotation.WebServlet;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.ejb.EJB;
+
+
+import org.apache.geronimo.daytrader.javaee6.entities.QuoteDataBean;
+import org.apache.geronimo.daytrader.javaee6.utils.Log;
+import org.apache.geronimo.daytrader.javaee6.utils.TradeConfig;
+
+/**
+ *
+ * Primitive designed to run within the TradeApplication and makes use of
+ * {@link trade_client.TradeConfig} for config parameters and random stock
+ * symbols. Servlet will generate a random stock symbol and get the price of
+ * that symbol using a {@link trade.Quote} Entity EJB This tests the common path
+ * of a Servlet calling an Entity EJB to get data
+ *
+ */
+@WebServlet("/ejb3/PingServlet2Entity")
+public class PingServlet2Entity extends HttpServlet {
+ private static String initTime;
+
+ private static int hitCount;
+
+ private @EJB QuoteDataBean quote;
+
+ @PersistenceContext
+ private EntityManager em;
+
+ public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
+ doGet(req, res);
+ }
+
+ public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
+
+ res.setContentType("text/html");
+ java.io.PrintWriter out = res.getWriter();
+
+ String symbol = null;
+
+ StringBuffer output = new StringBuffer(100);
+ output.append("Servlet2Entity" + "
PingServlet2Entity
" + "
PingServlet2Entity accesses an EntityManager"
+ + " using a PersistenceContext annotaion and then gets the price of a random symbol (generated by TradeConfig)" + " through the EntityManager find method");
+ try {
+ // generate random symbol
+ try {
+ int iter = TradeConfig.getPrimIterations();
+ for (int ii = 0; ii < iter; ii++) {
+ // get a random symbol to look up and get the key to that
+ // symbol.
+ symbol = TradeConfig.rndSymbol();
+ // find the EntityInstance.
+ quote = (QuoteDataBean) em.find(QuoteDataBean.class, symbol);
+ }
+ } catch (Exception e) {
+ Log.error("web_primtv.PingServlet2Entity.doGet(...): error performing find");
+ throw e;
+ }
+ // get the price and print the output.
+ output.append("
initTime: " + initTime + "
Hit Count: ").append(hitCount++);
+ output.append("
Quote Information
" + quote.toHTML());
+ output.append("
");
+ out.println(output.toString());
+ } catch (Exception e) {
+ Log.error(e, "PingServlet2Entity.doGet(...): error");
+ // this will send an Error to teh web applications defined error
+ // page.
+ res.sendError(500, "PingServlet2Entity.doGet(...): error" + e.toString());
+
+ }
+ }
+
+ public String getServletInfo() {
+ return "web primitive, tests Servlet to Entity EJB path";
+ }
+
+ public void init(ServletConfig config) throws ServletException {
+ super.init(config);
+ hitCount = 0;
+ initTime = new java.util.Date().toString();
+ }
+}
\ No newline at end of file
Added: geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2MDBQueue.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2MDBQueue.java?rev=1071543&view=auto
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2MDBQueue.java (added)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2MDBQueue.java Thu Feb 17 08:23:57 2011
@@ -0,0 +1,131 @@
+/**
+ * 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.daytrader.javaee6.web.prims.ejb3;
+
+import java.io.IOException;
+
+import javax.annotation.Resource;
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.MessageProducer;
+import javax.jms.Queue;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.annotation.WebServlet;
+
+import org.apache.geronimo.daytrader.javaee6.utils.Log;
+import org.apache.geronimo.daytrader.javaee6.utils.TradeConfig;
+
+/**
+ * This primitive is designed to run inside the TradeApplication and relies upon
+ * the {@link org.apache.geronimo.samples.daytrader.util.TradeConfig} class to
+ * set config 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
+ */
+@WebServlet("/ejb3/PingServlet2MDBQueue")
+public class PingServlet2MDBQueue extends HttpServlet {
+
+ private static String initTime;
+
+ private static int hitCount;
+
+ @Resource(name = "jms/QueueConnectionFactory")
+ private ConnectionFactory queueConnectionFactory;
+
+ @Resource(name = "jms/TradeBrokerQueue")
+ private Queue tradeBrokerQueue;
+
+ public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
+ doGet(req, res);
+ }
+
+ public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
+
+ res.setContentType("text/html");
+ java.io.PrintWriter out = res.getWriter();
+ // 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.
"
+ + "Note: Not intended for performance testing.");
+
+ try {
+ Connection conn = queueConnectionFactory.createConnection();
+
+ try {
+ TextMessage message = null;
+ int iter = TradeConfig.getPrimIterations();
+ for (int ii = 0; ii < iter; ii++) {
+ Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ try {
+ MessageProducer producer = sess.createProducer(tradeBrokerQueue);
+
+ 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);
+ } finally {
+ sess.close();
+ }
+ }
+
+ // write out the output
+ output.append("
initTime: ").append(initTime);
+ output.append("
Hit Count: ").append(hitCount++);
+ output.append("
Posted Text message to java:comp/env/jms/TradeBrokerQueue destination");
+ output.append("
Message: ").append(message);
+ output.append("
Message text: ").append(message.getText());
+ output.append("
");
+ out.println(output.toString());
+
+ } catch (Exception e) {
+ Log.error("PingServlet2MDBQueue.doGet(...):exception posting message to TradeBrokerQueue destination ");
+ throw e;
+ } finally {
+ conn.close();
+ }
+ } // 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());
+
+ }
+ }
+
+ public String getServletInfo() {
+ return "web primitive, configured with trade runtime configs, tests Servlet to Session EJB path";
+
+ }
+
+ public void init(ServletConfig config) throws ServletException {
+ super.init(config);
+ hitCount = 0;
+ initTime = new java.util.Date().toString();
+ }
+
+}
Added: geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2MDBTopic.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2MDBTopic.java?rev=1071543&view=auto
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2MDBTopic.java (added)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2MDBTopic.java Thu Feb 17 08:23:57 2011
@@ -0,0 +1,132 @@
+/**
+ * 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.daytrader.javaee6.web.prims.ejb3;
+
+import java.io.IOException;
+
+import javax.annotation.Resource;
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.MessageProducer;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+import javax.jms.Topic;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.geronimo.daytrader.javaee6.utils.Log;
+import org.apache.geronimo.daytrader.javaee6.utils.TradeConfig;
+
+/**
+ * This primitive is designed to run inside the TradeApplication and relies upon
+ * the {@link org.apache.geronimo.samples.daytrader.util.TradeConfig} class to
+ * set config 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
+ */
+@WebServlet("/ejb3/PingServlet2MDBTopic")
+public class PingServlet2MDBTopic extends HttpServlet {
+
+ private static String initTime;
+
+ private static int hitCount;
+
+ @Resource(name = "jms/TopicConnectionFactory")
+ private ConnectionFactory topicConnectionFactory;
+
+ @Resource(name = "jms/TradeStreamerTopic")
+ private Topic tradeStreamerTopic;
+
+ public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
+ doGet(req, res);
+ }
+
+ public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
+
+ res.setContentType("text/html");
+ java.io.PrintWriter out = res.getWriter();
+ // 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.
" + "Note: Not intended for performance testing.");
+
+ // we only want to look up the JMS resources once
+ try {
+
+ Connection conn = topicConnectionFactory.createConnection();
+
+ try {
+ TextMessage message = null;
+ int iter = TradeConfig.getPrimIterations();
+ for (int ii = 0; ii < iter; ii++) {
+ Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ try {
+ MessageProducer producer = sess.createProducer(tradeStreamerTopic);
+ 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);
+ } finally {
+ sess.close();
+ }
+ }
+
+ // write out the output
+ output.append("
initTime: ").append(initTime);
+ output.append("
Hit Count: ").append(hitCount++);
+ output.append("
Posted Text message to java:comp/env/jms/TradeStreamerTopic topic");
+ output.append("
Message: ").append(message);
+ output.append("
Message text: ").append(message.getText());
+ output.append("
");
+ out.println(output.toString());
+
+ } catch (Exception e) {
+ Log.error("PingServlet2MDBTopic.doGet(...):exception posting message to TradeStreamerTopic topic");
+ throw e;
+ } finally {
+ conn.close();
+ }
+ } // 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());
+
+ }
+ }
+
+ public String getServletInfo() {
+ return "web primitive, configured with trade runtime configs, tests Servlet to Session EJB path";
+ }
+
+ public void init(ServletConfig config) throws ServletException {
+ super.init(config);
+ hitCount = 0;
+ initTime = new java.util.Date().toString();
+ }
+
+}
Added: geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session.java?rev=1071543&view=auto
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session.java (added)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session.java Thu Feb 17 08:23:57 2011
@@ -0,0 +1,106 @@
+/**
+ * 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.daytrader.javaee6.web.prims.ejb3;
+
+import java.io.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.servlet.annotation.WebServlet;
+import javax.ejb.EJB;
+
+import org.apache.geronimo.daytrader.javaee6.web.ejb3.TradeSLSBRemote;
+import org.apache.geronimo.daytrader.javaee6.utils.Log;
+import org.apache.geronimo.daytrader.javaee6.utils.TradeConfig;
+/**
+ *
+ * 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.
+ *
+ */
+@WebServlet("/ejb3/PingServlet2Session")
+public class PingServlet2Session extends HttpServlet {
+
+ private static String initTime;
+
+ private static int hitCount;
+
+ @EJB
+ private TradeSLSBRemote tradeSLSBRemote;
+
+ public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
+ doGet(req, res);
+ }
+
+ public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
+
+ res.setContentType("text/html");
+ java.io.PrintWriter out = res.getWriter();
+ // 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.");
+
+ try {
+
+ try {
+ // 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 = tradeSLSBRemote.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());
+
+ }
+ }
+
+ public String getServletInfo() {
+ return "web primitive, configured with trade runtime configs, tests Servlet to Session EJB path";
+
+ }
+
+ public void init(ServletConfig config) throws ServletException {
+ super.init(config);
+ hitCount = 0;
+ initTime = new java.util.Date().toString();
+
+ }
+}
\ No newline at end of file
Added: geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session2CMROne2Many.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session2CMROne2Many.java?rev=1071543&view=auto
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session2CMROne2Many.java (added)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session2CMROne2Many.java Thu Feb 17 08:23:57 2011
@@ -0,0 +1,101 @@
+/**
+ * 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.daytrader.javaee6.web.prims.ejb3;
+
+import java.io.*;
+import java.util.Collection;
+import java.util.Iterator;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.servlet.annotation.WebServlet;
+import javax.ejb.EJB;
+
+import org.apache.geronimo.daytrader.javaee6.web.ejb3.TradeSLSBRemote;
+import org.apache.geronimo.daytrader.javaee6.entities.OrderDataBean;
+import org.apache.geronimo.daytrader.javaee6.utils.Log;
+import org.apache.geronimo.daytrader.javaee6.utils.TradeConfig;
+
+/**
+ * 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
+ *
+ */
+@WebServlet("/ejb3/PingServlet2Session2CMROne2Many")
+public class PingServlet2Session2CMROne2Many extends HttpServlet {
+ private static String initTime;
+
+ private static int hitCount;
+
+ @EJB
+ private TradeSLSBRemote tradeSLSBRemote;
+
+ public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
+ doGet(req, res);
+ }
+
+ public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
+
+ res.setContentType("text/html");
+ java.io.PrintWriter out = res.getWriter();
+
+ 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 3.0 Entity CMR one to many relationship");
+ try {
+
+ Collection orderDataBeans = null;
+ int iter = TradeConfig.getPrimIterations();
+ for (int ii = 0; ii < iter; ii++) {
+ userID = TradeConfig.rndUserID();
+
+ // get the users orders and print the output.
+ orderDataBeans = tradeSLSBRemote.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());
+
+ }
+ }
+
+ public String getServletInfo() {
+ return "web primitive, tests Servlet to Entity EJB path";
+ }
+
+ public void init(ServletConfig config) throws ServletException {
+ super.init(config);
+ hitCount = 0;
+ initTime = new java.util.Date().toString();
+ }
+}
\ No newline at end of file
Added: geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session2CMROne2One.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session2CMROne2One.java?rev=1071543&view=auto
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session2CMROne2One.java (added)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session2CMROne2One.java Thu Feb 17 08:23:57 2011
@@ -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.daytrader.javaee6.web.prims.ejb3;
+
+import java.io.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.servlet.annotation.WebServlet;
+import javax.ejb.EJB;
+
+import org.apache.geronimo.daytrader.javaee6.web.ejb3.TradeSLSBRemote;
+import org.apache.geronimo.daytrader.javaee6.entities.AccountProfileDataBean;
+import org.apache.geronimo.daytrader.javaee6.utils.Log;
+import org.apache.geronimo.daytrader.javaee6.utils.TradeConfig;
+
+/**
+ * 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
+ *
+ */
+@WebServlet("/ejb3/PingServlet2Session2CMROne2One")
+public class PingServlet2Session2CMROne2One extends HttpServlet {
+ private static String initTime;
+
+ private static int hitCount;
+
+ @EJB
+ private TradeSLSBRemote tradeSLSBRemote;
+
+ public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
+ doGet(req, res);
+ }
+
+ public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
+
+ res.setContentType("text/html");
+ java.io.PrintWriter out = res.getWriter();
+
+ 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 3.0 CMR one to one relationship");
+ try {
+
+ AccountProfileDataBean accountProfileData = null;
+ int iter = TradeConfig.getPrimIterations();
+ for (int ii = 0; ii < iter; ii++) {
+ userID = TradeConfig.rndUserID();
+ // get the price and print the output.
+ accountProfileData = tradeSLSBRemote.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());
+
+ }
+ }
+
+ public String getServletInfo() {
+ return "web primitive, tests Servlet to Entity EJB path";
+ }
+
+ public void init(ServletConfig config) throws ServletException {
+ super.init(config);
+ hitCount = 0;
+ initTime = new java.util.Date().toString();
+ }
+}
\ No newline at end of file
Added: geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session2Entity.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session2Entity.java?rev=1071543&view=auto
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session2Entity.java (added)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session2Entity.java Thu Feb 17 08:23:57 2011
@@ -0,0 +1,99 @@
+/**
+ * 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.daytrader.javaee6.web.prims.ejb3;
+
+import java.io.*;
+import javax.servlet.*;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.*;
+import javax.ejb.EJB;
+
+import org.apache.geronimo.daytrader.javaee6.web.ejb3.TradeSLSBRemote;
+import org.apache.geronimo.daytrader.javaee6.entities.QuoteDataBean;
+import org.apache.geronimo.daytrader.javaee6.utils.Log;
+import org.apache.geronimo.daytrader.javaee6.utils.TradeConfig;
+
+/**
+ *
+ * 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.
+ *
+ */
+@WebServlet("/ejb3/PingServlet2Session2Entity")
+public class PingServlet2Session2Entity extends HttpServlet {
+
+ private static String initTime;
+
+ private static int hitCount;
+
+ @EJB
+ private TradeSLSBRemote tradeSLSBRemote;
+
+ public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
+ doGet(req, res);
+ }
+
+ 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;
+ 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 {
+ try {
+ int iter = TradeConfig.getPrimIterations();
+ for (int ii = 0; ii < iter; ii++) {
+ symbol = TradeConfig.rndSymbol();
+ // getQuote will call findQuote which will instaniate the
+ // Quote Entity Bean
+ // and then will return a QuoteObject
+ quoteData = tradeSLSBRemote.getQuote(symbol);
+ }
+ } 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());
+ }
+ }
+
+ public String getServletInfo() {
+ return "web primitive, tests Servlet to Session to Entity EJB path";
+
+ }
+
+ public void init(ServletConfig config) throws ServletException {
+ super.init(config);
+ hitCount = 0;
+ initTime = new java.util.Date().toString();
+ }
+}
\ No newline at end of file
Added: geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session2EntityCollection.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session2EntityCollection.java?rev=1071543&view=auto
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session2EntityCollection.java (added)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session2EntityCollection.java Thu Feb 17 08:23:57 2011
@@ -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.daytrader.javaee6.web.prims.ejb3;
+
+import java.io.*;
+import javax.servlet.*;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.*;
+import java.util.Collection;
+import java.util.Iterator;
+import javax.ejb.EJB;
+
+import org.apache.geronimo.daytrader.javaee6.web.ejb3.TradeSLSBRemote;
+import org.apache.geronimo.daytrader.javaee6.entities.HoldingDataBean;
+import org.apache.geronimo.daytrader.javaee6.utils.Log;
+import org.apache.geronimo.daytrader.javaee6.utils.TradeConfig;
+
+/**
+ *
+ * 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
+ *
+ */
+@WebServlet("/ejb3/PingServlet2Session2EntityCollection")
+public class PingServlet2Session2EntityCollection extends HttpServlet {
+
+ private static String initTime;
+
+ private static int hitCount;
+
+ @EJB
+ private TradeSLSBRemote tradeSLSBRemote;
+
+ public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
+ doGet(req, res);
+ }
+
+ 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;
+ 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 {
+
+ try {
+ int iter = TradeConfig.getPrimIterations();
+ for (int ii = 0; ii < iter; ii++) {
+ userID = TradeConfig.rndUserID();
+ // getQuote will call findQuote which will instaniate the
+ // Quote Entity Bean
+ // and then will return a QuoteObject
+ holdingDataBeans = tradeSLSBRemote.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());
+ }
+ }
+
+ public String getServletInfo() {
+ return "web primitive, tests Servlet to Session to Entity returning a collection of Entity EJBs";
+ }
+
+ public void init(ServletConfig config) throws ServletException {
+ super.init(config);
+ hitCount = 0;
+ initTime = new java.util.Date().toString();
+ }
+}
\ No newline at end of file
Added: geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session2JDBC.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session2JDBC.java?rev=1071543&view=auto
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session2JDBC.java (added)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session2JDBC.java Thu Feb 17 08:23:57 2011
@@ -0,0 +1,102 @@
+/**
+ * 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.daytrader.javaee6.web.prims.ejb3;
+
+import java.io.*;
+import javax.servlet.*;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.*;
+
+import javax.ejb.EJB;
+
+import org.apache.geronimo.daytrader.javaee6.entities.QuoteDataBean;
+import org.apache.geronimo.daytrader.javaee6.utils.Log;
+import org.apache.geronimo.daytrader.javaee6.utils.TradeConfig;
+import org.apache.geronimo.daytrader.javaee6.web.ejb3.DirectSLSBRemote;
+
+// TODO: fix comments
+/**
+ *
+ * PingServlet2Session2JDBC 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.
+ *
+ */
+@WebServlet("/ejb3/PingServlet2Session2JDBC")
+public class PingServlet2Session2JDBC extends HttpServlet {
+
+ private static String initTime;
+
+ private static int hitCount;
+
+ @EJB
+ private DirectSLSBRemote directSLSBRemote;
+
+ public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
+ doGet(req, res);
+ }
+
+ 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;
+ StringBuffer output = new StringBuffer(100);
+
+ output.append("PingServlet2Session2JDBC" + "
PingServlet2Session2JDBC
" + "" + "PingServlet2Session2JDBC tests the common path of a Servlet calling a Session EJB "
+ + "which in turn calls JDBC.
");
+
+ try {
+
+ try {
+ int iter = TradeConfig.getPrimIterations();
+ for (int ii = 0; ii < iter; ii++) {
+ symbol = TradeConfig.rndSymbol();
+ // getQuote will call findQuote which will instaniate the
+ // Quote Entity Bean
+ // and then will return a QuoteObject
+ quoteData = directSLSBRemote.getQuote(symbol);
+ }
+ } catch (Exception ne) {
+ Log.error(ne, "PingServlet2Session2JDBC.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, "PingServlet2Session2JDBC.doGet(...): General Exception caught");
+ res.sendError(500, "General Exception caught, " + e.toString());
+ }
+ }
+
+ public String getServletInfo() {
+ return "web primitive, tests Servlet to Session to Entity EJB path";
+
+ }
+
+ public void init(ServletConfig config) throws ServletException {
+ super.init(config);
+ hitCount = 0;
+ initTime = new java.util.Date().toString();
+ }
+}
Added: geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session2JDBCCollection.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session2JDBCCollection.java?rev=1071543&view=auto
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session2JDBCCollection.java (added)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2Session2JDBCCollection.java Thu Feb 17 08:23:57 2011
@@ -0,0 +1,111 @@
+/**
+ * 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.daytrader.javaee6.web.prims.ejb3;
+
+import java.io.*;
+import javax.servlet.*;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.*;
+import java.util.Collection;
+import java.util.Iterator;
+
+import javax.ejb.EJB;
+
+import org.apache.geronimo.daytrader.javaee6.entities.HoldingDataBean;
+import org.apache.geronimo.daytrader.javaee6.utils.Log;
+import org.apache.geronimo.daytrader.javaee6.utils.TradeConfig;
+import org.apache.geronimo.daytrader.javaee6.web.ejb3.DirectSLSBRemote;
+
+// TODO: Fix comments
+/**
+ *
+ * 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
+ *
+ */
+@WebServlet("/ejb3/PingServlet2Session2JDBCCollection")
+public class PingServlet2Session2JDBCCollection extends HttpServlet {
+
+ private static String initTime;
+
+ private static int hitCount;
+
+ @EJB
+ private DirectSLSBRemote directSLSBRemote;
+
+ public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
+ doGet(req, res);
+ }
+
+ 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;
+ // TradeJDBC trade = null;
+ StringBuffer output = new StringBuffer(100);
+
+ output.append("PingServlet2Session2JDBCCollection" + "
PingServlet2Session2JDBCCollection
" + ""
+ + "PingServlet2Session2JDBCCollection tests the common path of a Servlet calling a Session EJB " + "which perform a multi-row JDBC query.
");
+
+ try {
+
+ try {
+ int iter = TradeConfig.getPrimIterations();
+ for (int ii = 0; ii < iter; ii++) {
+ userID = TradeConfig.rndUserID();
+ // getQuote will call findQuote which will instaniate the
+ // Quote Entity Bean
+ // and then will return a QuoteObject
+ holdingDataBeans = directSLSBRemote.getHoldings(userID);
+ }
+ } catch (Exception ne) {
+ Log.error(ne, "PingServlet2Session2JDBCCollection.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, "PingServlet2Session2JDBCCollection.doGet(...): General Exception caught");
+ res.sendError(500, "General Exception caught, " + e.toString());
+ }
+ }
+
+ public String getServletInfo() {
+ return "web primitive, tests Servlet to Session to Entity returning a collection of Entity EJBs";
+ }
+
+ public void init(ServletConfig config) throws ServletException {
+ super.init(config);
+ hitCount = 0;
+ initTime = new java.util.Date().toString();
+
+ }
+}
Added: geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2TwoPhase.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2TwoPhase.java?rev=1071543&view=auto
==============================================================================
--- geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2TwoPhase.java (added)
+++ geronimo/daytrader/trunk/javaee6/modules/web/src/main/java/org/apache/geronimo/daytrader/javaee6/web/prims/ejb3/PingServlet2TwoPhase.java Thu Feb 17 08:23:57 2011
@@ -0,0 +1,101 @@
+/**
+ * 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.daytrader.javaee6.web.prims.ejb3;
+
+import java.io.*;
+import javax.servlet.*;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.*;
+
+import javax.ejb.EJB;
+
+import org.apache.geronimo.daytrader.javaee6.web.ejb3.TradeSLSBRemote;
+
+import org.apache.geronimo.daytrader.javaee6.entities.QuoteDataBean;
+import org.apache.geronimo.daytrader.javaee6.utils.Log;
+import org.apache.geronimo.daytrader.javaee6.utils.TradeConfig;
+/**
+ *
+ * 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
+ *
+ */
+@WebServlet("/ejb3/PingServlet2TwoPhase")
+public class PingServlet2TwoPhase extends HttpServlet {
+
+ private static String initTime;
+
+ private static int hitCount;
+
+ @EJB
+ private TradeSLSBRemote tradeSLSBRemote;
+
+ public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
+ doGet(req, res);
+ }
+
+ 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;
+ 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 {
+
+ try {
+ int iter = TradeConfig.getPrimIterations();
+ for (int ii = 0; ii < iter; ii++) {
+ symbol = TradeConfig.rndSymbol();
+ // getQuote will call findQuote which will instaniate the
+ // Quote Entity Bean
+ // and then will return a QuoteObject
+ quoteData = tradeSLSBRemote.pingTwoPhase(symbol);
+
+ }
+ } 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());
+ }
+ }
+
+ public String getServletInfo() {
+ return "web primitive, tests Servlet to Session to Entity EJB and JMS -- 2-phase commit path";
+
+ }
+
+ public void init(ServletConfig config) throws ServletException {
+ super.init(config);
+ hitCount = 0;
+ initTime = new java.util.Date().toString();
+ }
+}
\ No newline at end of file