In your init method you are assigning the result of the ds.getConnection() to a local variable. Change it from
> Connection conn = ds.getConnection();
to
> conn = ds.getConnection();
and you may be ok.
Of course, conn may also be null if your servlet can't find the jdbc/empdb datasource...
HTH,
Jon
Vamsee Kanakala wrote:
Hello list users,
Maybe this is not the best place to ask a general servlet doubt, but I'm hoping someone can point out the mistake I'm making. I'm attaching a servlet file (FetchEmployeeServlet.java), which for some strange reason, gives a Null-Pointer Exception when accessing a function. This tells me that the class is not instantiated or something, but I'm new to servlets, so I can't figure out why.
TIA, Vamsee.
------------------------------------------------------------------------
package com.vamsee.empdb;
import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.sql.*; import javax.sql.*; import java.util.*; import javax.naming.*;
public class FetchEmployeeServlet extends HttpServlet { private Connection conn = null; private ServletContext context; private PreparedStatement pstmt = null;
public void init(ServletConfig config) throws ServletException { super.init(config); context = config.getServletContext();
try { Context initContext = new InitialContext(); Context envContext = (Context)initContext.lookup("java:comp/env"); if (envContext == null) throw new Exception("Panic: No Context!");
DataSource ds = (DataSource)envContext.lookup("jdbc/empdb");
if (ds != null) { Connection conn = ds.getConnection(); } } catch (Exception e) { e.printStackTrace(); } }
public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { String jsp; String cmd = req.getParameter("cmd"); String idString = req.getParameter("id"); int id;
try { id = Integer.parseInt(idString); } catch (NumberFormatException e) { id = 0; }
if ("get".equals(cmd)) { EmployeeBean bean = this.fetchEmployee(id); req.setAttribute("employee", bean); jsp = "/employee.jsp"; } else { List list = this.fetchAll(); req.setAttribute("list", list); jsp = "/list.jsp"; } RequestDispatcher dispatcher; dispatcher = context.getRequestDispatcher(jsp); dispatcher.forward(req, res); }
public EmployeeBean makeBean(ResultSet results) throws SQLException {
EmployeeBean bean = new EmployeeBean(results.getInt("id")); bean.setFirstName(results.getString("fname")); bean.setLastName(results.getString("lname")); bean.setEmail(results.getString("email")); bean.setDepartment(results.getString("department")); bean.setImage(results.getString("image"));
return bean; }
public EmployeeBean fetchEmployee(int id) { EmployeeBean bean = null; try { ResultSet results; String sql = "select * from people_table where id = ?"; PreparedStatement pstmt = conn.prepareStatement(sql);
synchronized (pstmt) { pstmt.clearParameters(); pstmt.setInt(1, id); results = pstmt.executeQuery(); }
if (results.next()) bean = makeBean(results);
if (results != null) results.close();
} catch (SQLException se) { se.printStackTrace(); }
return bean; }
public List fetchAll() { List list = new ArrayList(); try {
ResultSet results; Statement st = conn.createStatement(); System.out.println("Okay until create statement"); results = st.executeQuery("select * from people_table"); System.out.println("Okay until execute query");
while (results.next()) list.add(makeBean(results)); } catch (SQLException se) { se.printStackTrace(); } return list; }
public void destroy() { try { if (conn != null) conn.close(); } catch (SQLException e) { } } }
------------------------------------------------------------------------
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
