ClassCastException in JSP and EJB

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • star111792
    New Member
    • Jan 2007
    • 26

    #1

    ClassCastException in JSP and EJB

    helo all,

    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 "ClassCastExcep tion". 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.jasp er.JasperExcept ion
    org.apache.jasp er.servlet.JspS ervletWrapper.s ervice(JspServl etWrapper.java: 370)
    org.apache.jasp er.servlet.JspS ervlet.serviceJ spFile(JspServl et.java:314)
    org.apache.jasp er.servlet.JspS ervlet.service( JspServlet.java :264)
    javax.servlet.h ttp.HttpServlet .service(HttpSe rvlet.java:810)
    org.jboss.web.t omcat.filters.R eplyHeaderFilte r.doFilter(Repl yHeaderFilter.j ava:81)

    root cause

    java.lang.Class CastException
    com.sun.corba.s e.internal.java x.rmi.PortableR emoteObject.nar row(PortableRem oteObject.java: 293)
    javax.rmi.Porta bleRemoteObject .narrow(Portabl eRemoteObject.j ava:134)
    org.apache.jsp. Verify_jsp._jsp Service(org.apa che.jsp.Verify_ jsp:70)
    org.apache.jasp er.runtime.Http JspBase.service (HttpJspBase.ja va:97)
    javax.servlet.h ttp.HttpServlet .service(HttpSe rvlet.java:810)
    org.apache.jasp er.servlet.JspS ervletWrapper.s ervice(JspServl etWrapper.java: 322)
    org.apache.jasp er.servlet.JspS ervlet.serviceJ spFile(JspServl et.java:314)
    org.apache.jasp er.servlet.JspS ervlet.service( JspServlet.java :264)
    javax.servlet.h ttp.HttpServlet .service(HttpSe rvlet.java:810)
    org.jboss.web.t omcat.filters.R eplyHeaderFilte r.doFilter(Repl yHeaderFilter.j ava: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:

    Code:
    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.clas s & VerifyUserBean. class & VerifyUserHome. class


    my beans.jar contains:

    beans.jar-->msaccess-ds.xml & META-INF & and package hina(folder)-->mahmood(folder )-->VerifyUser.cla ss & VerifyUserBean. class & VerifyUserHome. class
    META-INF-->ejb-jar.xml


    plz plz plz help me. its really very important 4 me.
    thanks
  • prabha2277
    New Member
    • Jan 2008
    • 2

    #2
    Dude you forgot put typecast for VerifyUser while getting object from Home.Please check the following highlighted JSP code where you did a mistake.



    <%@ page import="java.rm i.*,javax.namin g.Context,javax .naming.Initial Context,hina.ma hmood.*"%>

    <%
    String username=reques t.getParameter( "user");
    String password=reques t.getParameter( "pswd");
    InitialContext cxt=new InitialContext( );
    Object obj=cxt.lookup( "VerifyUser ");
    VerifyUserHome userHome=(Verif yUserHome)javax .rmi.PortableRe moteObject.narr ow(obj,VerifyUs erHome.class);
    VerifyUser vs=(VerifyUser )userHome.creat e();
    Boolean b=vs.Verify(use rname,password) ;
    boolean bool=b.booleanV alue();
    if(bool)
    response.sendRe direct("main.js p");
    else
    response.sendRe direct("error.j sp");

    %>
    Last edited by r035198x; Jan 2 '08, 09:14 AM. Reason: code tags bug had struck again

    Comment

    • star111792
      New Member
      • Jan 2007
      • 26

      #3
      1st of all, thanku so much 4 considering my question, bcoz no one was doing that. :(

      what u have told above, i have tried that, but my problem is still there. :(
      i think problem is not in this line of code, bcoz even if i remove this line and the lines under it, even then i m getting the same exception. what i guess is that, problem lies with the line just above the one that u have pointed out .i.e

      VerifyUserHome userHome=(Verif yUserHome)javax .rmi.PortableRe moteObject.narr ow(obj,VerifyUs erHome.class);

      this line is creating all the problem(i think so) but i dont know how to get rid of this problem. if u can give me any further suggestions for fixing this error, plz do that. i'll be very grateful to u.

      thanks.

      Comment

      Working...