iCashServlet.java


import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.rmi.RemoteException; 

import creditcard.ejb.*; 
import creditcard.ejb.ICreditCardHome; 
import creditcard.ejb.ICreditCardRemote; 
import creditcard.ejb.CreditCardImpl; 

public class iCashServlet extends HttpServlet 

   public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{ 

  resp.setContentType("text/html"); 
  PrintWriter out = new PrintWriter(resp.getOutputStream()); 

  String CardNumber = req.getParameter("cardNumber"); 
  System.out.println(CardNumber); 
  double PurchaseAmt = 38.26; 

  String JNDI_NAME = "cybercash"; 
  javax.naming.Context initContext; 
  java.util.Hashtable env = new java.util.Hashtable(1); 
  ICreditCardHome Home; 
  ICreditCardRemote Remote; 

  env.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, "com.kivasoft.eb.jndi.GDSInitContextFactory"); 

   try
     initContext = new javax.naming.InitialContext(env); 
   } 
   catch (Exception e) { 
     throw new RemoteException("JNDI_INIT_CONTEXT_FAILED"); 
   } 

   if (initContext == null) { 
     throw new RemoteException("JNDI_INIT_CONTEXT_FAILED"); 
   } 

   try
     Home = (ICreditCardHome) initContext.lookup(JNDI_NAME); 
   } 

   catch(javax.naming.NameNotFoundException e)   { 
     throw new RemoteException("JNDI_LOOKUP_FAILED"); 
   } 

   catch(javax.naming.NamingException e) { 
     throw new RemoteException("JNDI_LOOKUP_FAILED"); 
   } 

   catch (java.lang.ClassCastException e)   {
     throw new RemoteException("JNDI_LOOKUP_FAILED"); 
   } 

   try  { 
     Remote = Home.create(); 
   } 
   catch(javax.ejb.CreateException e)   { 
     throw new RemoteException("EJB_BEAN_CREATE_FAILED"); 
   } 
   catch(java.rmi.RemoteException e)   { 
     throw new RemoteException("EJB_BEAN_CREATE_FAILED"); 
   } 

  out.println("<HTML>"); 
  out.println("<HEAD><TITLE>iCashServlet Output</TITLE></HEAD>"); 
  out.println("<BODY>"); 

  try
    boolean validation = Remote.isValid(CardNumber); 
    if (!validation){ 

      out.println("<p> This card is not valid, your request will not be processed </p>"); 
      out.println("</BODY>"); 
      out.println("</HTML>"); 
      out.close(); 
      return
     } 
   } 
   catch(java.rmi.RemoteException e)   { 
     throw new RemoteException("CARDNUMBER_IS_NOT_VALID"); 
   } 

  try
    boolean expiration = Remote.isExpired(CardNumber); 
    if (expiration){ 
      out.println("<p> This card is expired, your request will not be processed </p>"); 
      out.println("</BODY>"); 
      out.println("</HTML>"); 
      out.close(); 
      return
     } 
   } 
   catch(java.rmi.RemoteException e)   { 
     throw new RemoteException("CARD_IS_EXPIRED"); 
   } 

  try
    boolean creditLimit = Remote.sufficientFunds(CardNumber, PurchaseAmt); 
    if (!creditLimit){       
      out.println("<p> The card has reported insufficient funds, your request will not be processed </p>"); 
      out.println("</BODY>"); 
      out.println("</HTML>"); 
      out.close(); 
      return
     } 
   } 
   catch(java.rmi.RemoteException e)   { 
     throw new RemoteException("CREDIT_LIMIT_EXCEEDED"); 
   } 

  try
    Remote.debit(CardNumber, PurchaseAmt); 
  } 
  catch(java.rmi.RemoteException e)   { 
    out.println("<p> The transaction has been rolled back !!! </p>"); 
    out.println("</BODY>"); 
    out.println("</HTML>"); 
    out.close(); 
    return
  } 
  out.println("<h3> The transaction has been processed and flagged for immediate shipment </h3>"); 
  out.println("</BODY>"); 
  out.println("</HTML>"); 
  out.close(); 
   } 

   public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{ 
      doPost(req,resp); 
  }