i am working with JSP and EJBs. i have written a simple code for verifying username and password of user by using session beans. my problem is that i m getting exception named "ClassCastException". Exception is as follows:
[exception]
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:370)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet .java:810)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doF ilter(ReplyHeaderFilter.java:81)
root cause
java.lang.ClassCastException
com.sun.corba.se.internal.javax.rmi.PortableRemote Object.narrow(PortableRemoteObject.java:293)
javax.rmi.PortableRemoteObject.narrow(PortableRemo teObject.java:134)
org.apache.jsp.Verify_jsp._jspService(org.apache.j sp.Verify_jsp:70)
org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet .java:810)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet .java:810)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doF ilter(ReplyHeaderFilter.java:81)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.
[/exception]
i have change code a little bit which i m presenting for ur consideration:
Expand|Select|Wrap|Line Numbers
- VerifyUser.java
- ---------------
- package hina.mahmood;
- import javax.ejb.*;
- import java.rmi.*;
- public interface VerifyUser extends javax.ejb.EJBObject
- {
- public Boolean Verify(String user, String pswd) throws RemoteException;
- }// end interface
- *****************************
- VerifyUserHome.java
- -------------------
- package hina.mahmood;
- import javax.ejb.*;
- import java.rmi.*;
- import javax.ejb.EJBHome;
- public interface VerifyUserHome extends javax.ejb.EJBHome
- {
- public VerifyUser create() throws RemoteException,CreateException;
- }// end interface
- *****************************
- VerifyUserBean.java
- --------------------
- package hina.mahmood;
- import javax.ejb.*;
- import java.rmi.*;
- import java.sql.*;
- import javax.sql.*;
- import javax.naming.*;
- public class VerifyUserBean implements SessionBean
- {
- private SessionContext ctx;
- public Boolean Verify(String user,String pswd) throws RemoteException
- {
- int flag=0;
- Boolean bool=new Boolean("false");
- try{
- InitialContext ctx = new InitialContext();
- DataSource ds =(DataSource)ctx.lookup("java:honie");
- Connection con = ds.getConnection();
- Statement stmt = con.createStatement();
- String query="Select username,password from hina";
- ResultSet rs=stmt.executeQuery(query);
- while(rs.next())
- {
- if((rs.getString("username").equals(user))&&(rs.getString("password").equals(pswd)))
- {
- flag=1;
- break;
- }
- }// end while
- }// end try
- catch(Exception e)
- {System.out.println(e);}
- if(flag==0)
- {
- bool=new Boolean("false");
- return bool;
- }
- else
- if(flag==1)
- {
- bool=new Boolean("true");
- return bool;
- }
- return bool;
- }// end method
- public void ejbCreate() throws RemoteException,CreateException
- {
- }// end method
- public void setSessionContext(SessionContext ctx)
- {
- this.ctx=ctx;
- }
- public void ejbPassivate()
- {}
- public void ejbActivate()
- {}
- public void ejbRemove()
- {}
- }// end class
- *******************
- ejb-jar.xml
- --------------
- <?xml version="1.0"?>
- <!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN' 'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>
- <ejb-jar>
- <enterprise-beans>
- <session>
- <display-name></display-name>
- <ejb-name>VerifyUser</ejb-name>
- <home>hina.mahmood.VerifyUserHome</home>
- <remote>hina.mahmood.VerifyUser</remote>
- <ejb-class>hina.mahmood.VerifyUserBean</ejb-class>
- <session-type>Stateless</session-type>
- <transaction-type>Container</transaction-type>
- </session>
- </enterprise-beans>
- </ejb-jar>
- ******************************
- Verify.jsp(page that calls this bean)
- ------------------------------------
- <%@ page import="java.rmi.*,javax.naming.Context,javax.naming.InitialContext,hina.mahmood.*"%>
- <%
- String username=request.getParameter("user");
- String password=request.getParameter("pswd");
- InitialContext cxt=new InitialContext();
- Object obj=cxt.lookup("VerifyUser");
- VerifyUserHome userHome=(VerifyUserHome)javax.rmi.PortableRemoteObject.narrow(obj,VerifyUserHome.class);
- VerifyUser vs=userHome.create();
- Boolean b=vs.Verify(username,password);
- boolean bool=b.booleanValue();
- if(bool)
- response.sendRedirect("main.jsp");
- else
- response.sendRedirect("error.jsp");
- %>
- ***********************
- msaccess-ds.xml
- ---------------
- <datasources>
- <local-tx-datasource>
- <jndi-name>honie</jndi-name>
- <!-- format of URL is "jdbc:odbc:DSNNAME" -->
- <connection-url>jdbc:odbc:honie</connection-url>
- <driver-class>sun.jdbc.odbc.JdbcOdbcDriver</driver-class>
- <user-name></user-name>
- <password></password>
- </local-tx-datasource>
- </datasources>
- *********************
i dont know, what mistake i m doing now.:(
do i need to set any class path or anything else? currently i have set my class path to j2ee.jar, my other servlet taht do not involve ejbs are working perfectly.
my directory structue is as follows:
hm.war---> WEB-INF(folder) & Verify.jsp
WEBINF-->classes(folder) & web.xml
classes-->hina(folder)-->mahmood(folder)--> VerifyUser.class & VerifyUserBean.class & VerifyUserHome.class
my beans.jar contains:
beans.jar-->msaccess-ds.xml & META-INF & and package hina(folder)-->mahmood(folder)-->VerifyUser.class & VerifyUserBean.class & VerifyUserHome.class
META-INF-->ejb-jar.xml
plz plz plz help me. its really very important 4 me.
thanks