|
Jetty example source code file (JNDITest.java)
The Jetty JNDITest.java source code
/**
*
*/
package com.acme;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.naming.InitialContext;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import javax.sql.XADataSource;
import javax.transaction.UserTransaction;
/**
* JNDITest
*
* Use JNDI from within Jetty.
*
* Also, use servlet spec 2.5 resource injection and lifecycle callbacks from within the web.xml
* to set up some of the JNDI resources.
*
*/
public class JNDITest extends HttpServlet {
public static final String DATE_FORMAT = "EEE, d MMM yy HH:mm:ss Z";
private static SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT);
private static final String TABLE1 = "mytestdata1";
private static final String TABLE2 = "mytestdata2";
private static boolean setupDone = false;
private DataSource myDS;
private DataSource myDS2;
private DataSource myDS99;
private Session myMailSession;
private Double wiggle;
private Integer woggle;
public void setMyDatasource(DataSource ds)
{
myDS=ds;
}
public void setMyDatasource2(DataSource ds)
{
myDS2=ds;
}
public void setMyDatasource99(DataSource ds)
{
myDS99=ds;
}
private void postConstruct ()
{
System.err.println("mydatasource="+myDS);
System.err.println("mydatasource2="+myDS2);
System.err.println("mydatasource99="+myDS99);
System.err.println("wiggle="+wiggle);
}
private void preDestroy()
{
System.err.println("PreDestroy called");
}
public void init(ServletConfig config) throws ServletException
{
super.init(config);
try
{
InitialContext ic = new InitialContext();
woggle = (Integer)ic.lookup("java:comp/env/woggle");
System.err.println("woggle="+woggle);
System.err.println("gargle="+(Double)ic.lookup("java:comp/env/gargle"));
UserTransaction utx = (UserTransaction)ic.lookup("java:comp/UserTransaction");
System.err.println("utx="+utx);
myMailSession = (Session)ic.lookup("java:comp/env/mail/Session");
System.err.println("myMailSession: "+myMailSession);
doSetup();
}
catch (Exception e)
{
throw new ServletException(e);
}
}
/* ------------------------------------------------------------ */
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doGet(request, response);
}
/* ------------------------------------------------------------ */
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
boolean doCommit = true;
String complete = request.getParameter("completion");
String mailTo = request.getParameter("mailto");
String mailFrom = request.getParameter("mailfrom");
if (complete != null)
{
complete = complete.trim();
if (complete.trim().equals("commit"))
doCommit = true;
else
doCommit = false;
}
if (mailTo != null)
mailTo = mailTo.trim();
if (mailFrom != null)
mailFrom = mailFrom.trim();
try
{
response.setContentType("text/html");
ServletOutputStream out = response.getOutputStream();
out.println("<html>");
out.println("<h1>Jetty6 JNDI & Transaction Tests");
out.println("<body>");
if (complete != null)
{
doTransaction(out, doCommit);
out.println("<p>Value of foo in myDS after "+(doCommit?"commit":"rollback")+": "+getFoo(myDS)+"");
out.println("<p>Value of foo in myDS2 after "+(doCommit?"commit":"rollback")+": "+getFoo(myDS2)+"");
}
else if (mailTo != null && mailFrom != null)
{
doMail (mailTo, mailFrom);
out.println("<p>Sent!");
}
out.println("<a href=\"index.html\">Try again?");
out.println("</body>");
out.println("</html>");
out.flush();
}
catch (Exception e)
{
throw new ServletException(e);
}
}
public void doMail (String mailTo, String mailFrom)
throws Exception
{
Message msg = new MimeMessage(myMailSession);
// set the from and to address
InternetAddress addressFrom = new InternetAddress(mailFrom);
msg.setFrom(addressFrom);
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));
msg.setSubject("Jetty Mail Test Succeeded");
msg.setContent("The test of Jetty Mail @ "+new Date()+" has been successful.", "text/plain");
msg.addHeader ("Date", dateFormat.format(new Date()));
Transport.send(msg);
}
public void doTransaction(ServletOutputStream out, boolean doCommit)
throws Exception
{
//check DataSource and Transactions
Connection c1 = null;
Connection c2 = null;
Statement s1 = null;
Statement s2 = null;
UserTransaction utx = null;
try
{
doSetup();
InitialContext ic = new InitialContext();
utx = (UserTransaction)ic.lookup("java:comp/UserTransaction");
utx.begin();
c1 = myDS.getConnection();
c2 = myDS2.getConnection();
s1 = c1.createStatement();
s2 = c2.createStatement();
s1.executeUpdate("update "+TABLE1+" set foo=foo + 1 where id=1");
s2.executeUpdate("update "+TABLE2+" set foo=foo + 1 where id=1");
s1.close();
s2.close();
c1.close();
c2.close();
}
catch (Exception e)
{
e.printStackTrace();
doCommit = false;
}
finally
{
if (doCommit)
utx.commit();
else
utx.rollback();
}
}
private Integer getFoo (DataSource ds)
throws Exception
{
Connection c = null;
Statement s = null;
Integer value = null;
try
{
c = ds.getConnection();
s = c.createStatement();
String tablename = (ds.equals(myDS)?TABLE1:TABLE2);
ResultSet results = s.executeQuery("select foo from "+tablename+" where id=1");
if (results.next())
value = new Integer(results.getInt(1));
results.close();
return value;
}
finally
{
if (s != null) s.close();
if (c != null) c.close();
}
}
private void doSetup ()
throws Exception
{
if (setupDone)
return;
Connection c1=null;
Connection c2=null;
Statement s1=null;
Statement s2=null;
try
{
c1 = myDS.getConnection();
c2 = myDS2.getConnection();
s1 = c1.createStatement();
s2 = c2.createStatement();
s1.execute("create table "+TABLE1+" ( id INTEGER, foo INTEGER )");
s1.executeUpdate("insert into "+TABLE1+" (id, foo) values (1, 1)");
c1.commit();
s2.execute("create table "+TABLE2+" ( id INTEGER, foo INTEGER )");
s2.executeUpdate("insert into "+TABLE2+" (id, foo) values (1, 1)");
c2.commit();
setupDone = true;
}
finally
{
if (s1 != null) s1.close();
if (s2 != null) s2.close();
if (c1 != null) c1.close();
if (c2 != null) c2.close();
}
}
private void doTearDown()
throws Exception
{
Connection c1=null;
Connection c2=null;
Statement s1=null;
Statement s2=null;
try
{
c1 = myDS.getConnection();
c2 = myDS2.getConnection();
s1 = c1.createStatement();
s2 = c2.createStatement();
s1.execute("drop table "+TABLE1);
c1.commit();
s2.execute("drop table "+TABLE2);
c2.commit();
}
catch (IllegalStateException e)
{
System.err.println("Caught expected IllegalStateException from Atomikos on doTearDown");
doTearDown();
}
finally
{
if (s1 != null) s1.close();
if (s2 != null) s2.close();
if (c1 != null) c1.close();
if (c2 != null) c2.close();
}
}
public void destroy ()
{
try
{
doTearDown();
}
catch (Exception e)
{
throw new RuntimeException(e);
}
finally
{
super.destroy();
}
}
}
Other Jetty examples (source code examples)Here is a short list of links related to this Jetty JNDITest.java source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.