Dear all
Your help/advice is sought for the following compilation errors during EJB
deployment [Enclosed are compilation error message, CourseBean.java,
CourseHome.java & EnrollerServlet.java]:
Thanks a lot
Gab
===================================================================
Method ejbFindAll() not found in class CourseBean.
primaryKeys = ejb.ejbFindAll();
Method getId() not found in class CourseBean.
$retVal = ejb.getId();
Method getTeacher() not found in class CourseBean.
$retVal = ejb.getTeacher();
Method getMaxEnrollment() not found in class CourseBean.
$retVal = ejb.getMaxEnrollment();
Method getCourseIds() not found in class StudentBean.
$retVal = ejb.getCourseIds();
5 errors
Compilation failed...
____________________________________________________________
CourseBean.java
____________________________________________________________
/*
*
* Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
*
* This software is the proprietary information of Sun Microsystems, Inc.
* Use is subject to license terms.
*
*/
import java.sql.*;
import javax.sql.*;
import java.util.*;
import javax.ejb.*;
import javax.naming.*;
import javax.rmi.PortableRemoteObject;
public class CourseBean implements EntityBean {
private String courseId;
private String name;
private String teacher;
private String maxEnrollment;
private ArrayList studentIds;
private Connection con;
private String dbName = "java:comp/env/jdbc/CollegeDB";
private EntityContext context;
private EnrollerHome enrollerHome;
public ArrayList getStudentIds() {
System.out.println("in getStudentIds");
return studentIds;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String ejbCreate(String courseId, String name, String teacher,
String maxEnrollment)
throws CreateException {
System.out.println("in ejbCreate");
try {
insertCourse(courseId, name, teacher, maxEnrollment);
} catch (Exception ex) {
throw new EJBException("ejbCreate: " +
ex.getMessage());
}
this.courseId = courseId;
this.name = name;
this.teacher = teacher;
this.maxEnrollment = maxEnrollment;
System.out.println("about to leave ejbCreate");
return courseId;
}
public String ejbFindByPrimaryKey(String primaryKey)
throws FinderException {
boolean result;
try {
result = selectByPrimaryKey(primaryKey);
} catch (Exception ex) {
throw new EJBException("ejbFindByPrimaryKey: " +
ex.getMessage());
}
if (result) {
return primaryKey;
}
else {
throw new ObjectNotFoundException
("Row for id " + primaryKey + " not found.");
}
}
public void ejbRemove() {
try {
deleteCourse(courseId);
} catch (Exception ex) {
throw new EJBException("ejbRemove: " +
ex.getMessage());
}
}
public void setEntityContext(EntityContext context) {
System.out.println("in setEntityContext");
this.context = context;
studentIds = new ArrayList();
try {
makeConnection();
Context initial = new InitialContext();
Object objref = initial.lookup("java:comp/env/ejb/Enroller");
enrollerHome = (EnrollerHome)PortableRemoteObject.narrow(objref,
EnrollerHome.class);
} catch (Exception ex) {
throw new EJBException("Unable to connect to database. " +
ex.getMessage());
}
}
public void unsetEntityContext() {
try {
con.close();
} catch (SQLException ex) {
throw new EJBException("unsetEntityContext: " + ex.getMessage());
}
}
public void ejbActivate() {
courseId = (String)context.getPrimaryKey();
}
public void ejbPassivate() {
courseId = null;
}
public void ejbLoad() {
System.out.println("in ejbLoad");
try {
loadCourse();
loadStudentIds();
} catch (Exception ex) {
throw new EJBException("ejbLoad: " +
ex.getMessage());
}
System.out.println("leaving ejbLoad");
}
private void loadStudentIds() {
System.out.println("in loadStudentIds");
studentIds.clear();
try {
Enroller enroller = enrollerHome.create();
ArrayList a = enroller.getStudentIds(courseId);
studentIds.addAll(a);
} catch (Exception ex) {
throw new EJBException("loadStudentIds: " +
ex.getMessage());
}
System.out.println("leaving loadStudentIds");
}
public void ejbStore() {
System.out.println("in ejbStore");
try {
storeCourse();
} catch (Exception ex) {
throw new EJBException("ejbStore: " +
ex.getMessage());
}
System.out.println("leaving ejbStore");
}
public void ejbPostCreate(String courseId, String name, String teacher,
String maxEnrollment) { }
/*********************** Database Routines *************************/
private void makeConnection() throws NamingException, SQLException {
InitialContext ic = new InitialContext();
DataSource ds = (DataSource) ic.lookup(dbName);
con = ds.getConnection();
}
private void insertCourse (String courseId, String name, String teacher,
String maxEnrollment)
throws SQLException {
String insertStatement =
"insert into course values ( ? , ? )";
PreparedStatement prepStmt =
con.prepareStatement(insertStatement);
prepStmt.setString(1, courseId);
prepStmt.setString(2, name);
prepStmt.setString(3, teacher);
prepStmt.setString(4, maxEnrollment);
prepStmt.executeUpdate();
prepStmt.close();
}
private boolean selectByPrimaryKey(String primaryKey)
throws SQLException {
String selectStatement =
"select courseid " +
"from course where courseid = ? ";
PreparedStatement prepStmt =
con.prepareStatement(selectStatement);
prepStmt.setString(1, primaryKey);
ResultSet rs = prepStmt.executeQuery();
boolean result = rs.next();
prepStmt.close();
return result;
}
private void deleteCourse(String courseId) throws SQLException {
String deleteStatement =
"delete from course " +
"where courseid = ?";
PreparedStatement prepStmt =
con.prepareStatement(deleteStatement);
prepStmt.setString(1, courseId);
prepStmt.executeUpdate();
prepStmt.close();
}
private void loadCourse() throws SQLException {
String selectStatement =
"select name " +
"from course where courseid = ? ";
PreparedStatement prepStmt =
con.prepareStatement(selectStatement);
prepStmt.setString(1, courseId);
ResultSet rs = prepStmt.executeQuery();
if (rs.next()) {
name = rs.getString(1);
teacher = rs.getString(2);
maxEnrollment = rs.getString(3);
prepStmt.close();
}
else {
prepStmt.close();
throw new NoSuchEntityException("Row for courseId " + courseId +
" not found in database.");
}
}
private void storeCourse() throws SQLException {
String updateStatement =
"update course set name = ? " +
"where courseid = ?";
PreparedStatement prepStmt =
con.prepareStatement(updateStatement);
prepStmt.setString(1, name);
prepStmt.setString(2, courseId);
prepStmt.setString(3, teacher);
prepStmt.setString(4, maxEnrollment);
int rowCount = prepStmt.executeUpdate();
prepStmt.close();
if (rowCount == 0) {
throw new EJBException("Storing row for courseId " +
courseId + " failed.");
}
}
} // CourseBean
__________________________________________________________________
CourseHome.java
__________________________________________________________________
/*
*
* ICOM6013/2001 EJB Assignment
*
* Course Bean's Home Interface.
*
*/
import java.util.*;
import java.rmi.RemoteException;
import javax.ejb.*;
public interface CourseHome extends EJBHome {
public Course create(String courseId, String name, String teacher, String
maxEnrollment)
throws RemoteException, CreateException;
public Course findByPrimaryKey(String courseId)
throws FinderException, RemoteException;
public Collection findAll()
throws FinderException, RemoteException;
}
________________________________________________________________
EnrollerServlet.java
___________________________________________________________________
/*
* ICOM6013/2001 EJB Assignment
*
* Enroller Servlet client
*
*/
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import javax.naming.*;
import javax.rmi.*;
import java.util.*;
public class EnrollerServlet extends HttpServlet
{
private static final String PAGE_VIEW_STUDENT ="VIEW STUDENT";
private static final String PAGE_ENROLL_COURSE ="ENROLL COURSE";
private static final String PAGE_UNENROLL_COURSE ="UNENROLL COURSE";
private static final String PAGE_VIEW_COURSE ="VIEW COURSE";
private static final String PAGE_LOGIN ="LOGIN";
private static final String PAGE_LOGOUT ="LOGOUT";
private static final String PAGE_BACK_TO_MENU ="BACK TO MENU";
private static final String PAGE_MENU ="MENU";
EnrollerHome eHome;
StudentHome sHome;
CourseHome cHome;
InitialContext ctx = null;
Student student = null;
Enroller enroller = null;
public void init(ServletConfig config)
throws ServletException
{
// lookup home interface
try
{
ctx = new InitialContext();
Object objref = ctx.lookup("java:comp/env/ejb/Enroller");
eHome = (EnrollerHome)
PortableRemoteObject.narrow(objref, EnrollerHome.class);
objref = ctx.lookup("java:comp/env/ejb/Student");
sHome = (StudentHome)
PortableRemoteObject.narrow(objref, StudentHome.class);
objref = ctx.lookup("java:comp/env/ejb/Course");
cHome = (CourseHome)
PortableRemoteObject.narrow(objref, CourseHome.class);
enroller = eHome.create();
} catch (Exception ex)
{
ex.printStackTrace();
}
} /* init */
public void doGet(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException
{
response.setContentType("text/html");
String pageID = request.getParameter("PAGE_ID");
if (pageID.equals(PAGE_LOGIN) || pageID.equals(PAGE_BACK_TO_MENU))
{
generateMenuPage(request, response);
}
else if (pageID.equals(PAGE_MENU))
{
String menuID = request.getParameter("MENU_ID");
if (menuID.equals(PAGE_VIEW_STUDENT))
{
generateViewStudentPage(request, response);
}
else if (menuID.equals(PAGE_VIEW_COURSE))
{
// generateViewCoursePage(request, response);
}
else if (menuID.equals(PAGE_ENROLL_COURSE))
{
generateEnrollmentPage(request, response);
}
else if (menuID.equals(PAGE_UNENROLL_COURSE))
{
// generateUnenrollmentPage(request, response);
}
else if (menuID.equals(PAGE_LOGOUT))
{
generateLoginPage(request, response);
}
}
else if (pageID.equals(PAGE_ENROLL_COURSE))
{
generatePerformEnrollmentPage(request, response);
}
else if (pageID.equals(PAGE_UNENROLL_COURSE))
{
// generatePerformUnenrollmentPage(request, response);
}
else
{
PrintWriter out = response.getWriter();
String menuID = request.getParameter("MENU_ID");
out.println("pageID="+pageID);
out.println("menuID="+menuID);
}
} /* doGet */
private void generateMenuPage(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
PrintWriter out = response.getWriter();
String studentID;
studentID = request.getParameter("STUDENT_ID");
try
{
if (student == null)
student = sHome.findByPrimaryKey(studentID);
} catch (javax.ejb.ObjectNotFoundException ex1)
{
generateLoginPage(request, response);
return;
} catch (Exception ex2)
{
generateErrorPage(request, response, ex2);
return;
}
generateTitle("Course Enrollment System Menu", request, response);
// display View Student menu
out.println("<FORM METHOD=GET ACTION=EnrollerServletAlias>");
out.println("<INPUT TYPE=SUBMIT VALUE=\"View Student\">");
out.println("<INPUT TYPE=HIDDEN");
out.println(" NAME=STUDENT_ID VALUE=\""+studentID+"\">");
out.println("<INPUT TYPE=HIDDEN");
out.println(" NAME=PAGE_ID VALUE=\""+PAGE_MENU+"\">");
out.println("<INPUT TYPE=HIDDEN");
out.println(" NAME=MENU_ID VALUE=\""+PAGE_VIEW_STUDENT+"\">");
out.println("</FORM>");
out.println("<P>");
// display Course Enroll menu
out.println("<FORM METHOD=GET ACTION=EnrollerServletAlias>");
out.println("<INPUT TYPE=SUBMIT VALUE=\"Course Enroll\">");
out.println("<INPUT TYPE=HIDDEN");
out.println(" NAME=STUDENT_ID VALUE=\""+studentID+"\">");
out.println("<INPUT TYPE=HIDDEN");
out.println(" NAME=PAGE_ID VALUE=\""+PAGE_MENU+"\">");
out.println("<INPUT TYPE=HIDDEN");
out.println(" NAME=MENU_ID VALUE=\""+PAGE_ENROLL_COURSE+"\">");
out.println("</FORM>");
out.println("<P>");
// display Course Unenroll menu
out.println("<FORM METHOD=GET ACTION=EnrollerServletAlias>");
out.println("<INPUT TYPE=SUBMIT VALUE=\"Course Unenroll\">");
out.println("<INPUT TYPE=HIDDEN");
out.println(" NAME=STUDENT_ID VALUE=\""+studentID+"\">");
out.println("<INPUT TYPE=HIDDEN");
out.println(" NAME=PAGE_ID VALUE=\""+PAGE_MENU+"\">");
out.println("<INPUT TYPE=HIDDEN");
out.println(" NAME=MENU_ID VALUE=\""+PAGE_UNENROLL_COURSE+"\">");
out.println("</FORM>");
out.println("<P>");
// display View Course menu
out.println("<FORM METHOD=GET ACTION=EnrollerServletAlias>");
out.println("<INPUT TYPE=SUBMIT VALUE=\"View Course\">");
out.println("<B>Course ID:</B><INPUT TYPE=TEXT");
out.println(" NAME=COURSE_ID>");
out.println("<INPUT TYPE=HIDDEN");
out.println(" NAME=STUDENT_ID VALUE=\""+studentID+"\">");
out.println("<INPUT TYPE=HIDDEN");
out.println(" NAME=PAGE_ID VALUE=\""+PAGE_MENU+"\">");
out.println("<INPUT TYPE=HIDDEN");
out.println(" NAME=MENU_ID VALUE=\""+PAGE_VIEW_COURSE+"\">");
out.println("</FORM>");
out.println("<P>");
// display Logout menu
out.println("<FORM METHOD=GET ACTION=EnrollerServletAlias>");
out.println("<INPUT TYPE=SUBMIT VALUE=\"Logout\">");
out.println("<INPUT TYPE=HIDDEN");
out.println(" NAME=PAGE_ID VALUE=\""+PAGE_MENU+"\">");
out.println("<INPUT TYPE=HIDDEN");
out.println(" NAME=MENU_ID VALUE=\""+PAGE_LOGOUT+"\">");
out.println("</FORM>");
out.println("<P>");
out.println("</BLOCKQUOTE></BODY></HTML>");
} /* generateMenuPage */
private void generateViewStudentPage(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
try
{
PrintWriter out = response.getWriter();
String studentID = request.getParameter("STUDENT_ID");
// Student s = sHome.findByPrimaryKey(studentID);
// ArrayList courses = (ArrayList)student.getCourseIds();
ArrayList courses = (ArrayList)enroller.getCourseIds(studentID);
Iterator i = courses.iterator();
int cnt = 0;
generateTitle("View Student", request, response);
out.println("<P><H3>Student Details</H3>");
out.println("<B>Student ID : </B>"+studentID);
out.println("<B>Student Name: </B>"+student.getName());
out.println("<P><H3>Courses Taken</H3>");
out.println("<TABLE BORDER=1><TBODY>");
out.println("<TR><TD> </TD>");/* rec no */
out.println(" <TD><B>Course ID</B></TD>"); /* course id */
out.println(" <TD><B>Course Name</B></TD>"); /* course */
out.println(" <TD><B>Teacher</B></TD>"); /* teacher */
out.println("</TR>");
while (i.hasNext())
{
String courseID = (String)i.next();
Course c = cHome.findByPrimaryKey(courseID);
cnt++;
out.println("<TR><TD>"+cnt+"</TD>");
out.println(" <TD>"+courseID+"</TD>");
out.println(" <TD>"+c.getName()+"</TD>");
out.println(" <TD>"+c.getTeacher()+"</TD>");
out.println("</TR>");
}
out.println("</TBODY></TABLE>");
generateBackToMenuPage(studentID, request, response);
out.println("</BLOCKQUOTE></BODY></HTML>");
} catch (Exception ex) // EJB exception
{
generateErrorPage(request, response, ex);
}
} /* generateViewStudentPage */
private void generatePerformEnrollmentPage(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
try
{
PrintWriter out = response.getWriter();
String studentID = request.getParameter("STUDENT_ID");
String courseID = request.getParameter("COURSE_ID");
generateTitle("Enroll Course Result", request, response);
enroller.enroll(studentID, courseID); /* check status */
// eHome.remove(e);
out.println("<P>");
out.println(studentID+"'s enrollment for "+courseID+" is Done.");
generateBackToMenuPage(studentID, request, response);
out.println("</BODY></HTML>");
} catch (Exception ex) // EJB exception
{
generateErrorPage(request, response, ex);
}
} /* generatePerformEnrollmentPage */
private void generateEnrollmentPage(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
try
{
PrintWriter out = response.getWriter();
String studentID = request.getParameter("STUDENT_ID");
generateTitle("Course Enrollment", request, response);
Collection courses = (Collection)cHome.findAll();
Iterator i = courses.iterator();
out.println("<FORM METHOD=GET ACTION=EnrollerServletAlias>");
out.println("<P><B>Student ID:</B>"+studentID);
out.println("<INPUT TYPE=HIDDEN");
out.println(" NAME=STUDENT_ID VALUE=\""+studentID+"\">");
out.println("<P><B>Course :</B>");
out.println("<SELECT SIZE=1 NAME=COURSE_ID>");
while (i.hasNext())
{
Course c = (Course)i.next();
String courseID = c.getId();
out.println("<OPTION VALUE=\""+courseID+"\">");
out.println(courseID+" --- "+c.getName());
out.println("</OPTION>");
}
out.println("</SELECT><P>");
out.println("<INPUT TYPE=SUBMIT VALUE=Enroll>");
out.println("<INPUT TYPE=RESET VALUE=Reset>");
out.println("<INPUT TYPE=HIDDEN");
out.println(" NAME=PAGE_ID VALUE=\""+PAGE_ENROLL_COURSE+"\">");
out.println("</FORM>");
generateBackToMenuPage(studentID, request, response);
out.println("</BLOCKQUOTE></BODY></HTML>");
} catch (Exception ex) // EJB exception
{
generateErrorPage(request, response, ex);
}
} /* generateEnrollmentPage */
private void generateLoginPage(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
PrintWriter out = response.getWriter();
student = null;
generateTitle("EJB College - Course Enrollment System",
request, response);
out.println("<FORM METHOD=GET ACTION=EnrollerServletAlias>");
out.println("<P>Enter Your Student ID:<INPUT TYPE=TEXT NAME=STUDENT_ID>");
out.println("<P><INPUT TYPE=SUBMIT VALUE=Login> <INPUT TYPE=RESET>");
out.println("<INPUT TYPE=HIDDEN NAME=PAGE_ID VALUE=\""+PAGE_LOGIN+"\">");
out.println("</FORM>");
out.println("</BLOCKQUOTE></BODY></HTML>");
} /* generateLoginPage */
private void generateTitle(String title,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
PrintWriter out = response.getWriter();
out.println("<HTML>");
out.println("<HEAD><TITLE>");
out.println(title);
out.println("</TITLE></HEAD>");
out.println("<BODY>");
out.println("<H2>"+title+"</H2>");
out.println("<BLOCKQUOTE>");
} /* generateTitle */
private void generateBackToMenuPage(String studentID,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
PrintWriter out = response.getWriter();
out.println("<FORM METHOD=GET ACTION=EnrollerServletAlias>");
out.println("<INPUT TYPE=SUBMIT VALUE=\"Back To Main Menu\">");
out.println("<INPUT TYPE=HIDDEN");
out.println(" NAME=STUDENT_ID VALUE=\""+studentID+"\">");
out.println("<INPUT TYPE=HIDDEN");
out.println(" NAME=PAGE_ID VALUE=\""+PAGE_BACK_TO_MENU+"\">");
out.println("</FORM>");
} /* generateBackToMenuPage */
private void generateErrorPage(HttpServletRequest request,
HttpServletResponse response,
Exception ejbError)
throws ServletException, IOException
{
PrintWriter out = response.getWriter();
out.println("<HTML><BODY><H2>Error</H2>");
ejbError.printStackTrace(out);
out.println("</BODY></HTML>");
} /* generateErrorPage */
public void destroy()
{
// do nothing
System.out.println("Servlet destroy");
try {
enroller.remove();
} catch (Exception ex)
{
ex.printStackTrace();
}
} /* destroy */
} /* EnrollerServlet */
===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff EJB-INTEREST". For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".