tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Leon Palermo" <le...@zedak.com>
Subject Re: (EXPERTS ONLY) Bean Creation in Dispatch Servlet
Date Fri, 25 May 2001 14:38:59 GMT
Re: problems installing tomcat on linuxMahesh and others,

After performing the test myself and looking at things, I found out that indeed the dispatch
servlet is putting the bean in correctly and the jsps are utilizing them properly.  The problem
occurs only after I compile any file used by the Bean.  Although the Bean isn't compiled itself
(the .class file remains the same); the compilation of a class imported by the bean causes
the ClassCastException.  Only after restarting tomcat do things function properly until the
next compilation of the file used by the Bean.

As a result, I transfer the focus of this problem away from the jsp realm to the Java language
realm.  Does anyone have any idea why the compilation of imported classes would cause a ClassCastException
as previously described?

Thanks again!

Leon
  ----- Original Message ----- 
  From: Leon Palermo 
  To: tomcat-user@jakarta.apache.org 
  Sent: Friday, May 25, 2001 9:56 AM
  Subject: Re: (EXPERTS ONLY) Bean Creation in Dispatch Servlet


  Darn it all!

  The jsp should look like this.  I forgot to take my own class name out of a few lines.

  <%try{
         System.out.println((request.getAttribute("thebean") == null));
         System.out.println((request.getAttribute("thebean") instanceof com.blah.blah.AnyCustomBean));
         System.out.println((request.getAttribute("thebean").getClass().getName()));
         System.out.println((com.blah.blah.AnyCustomBean)request.getAttribute("thebean"));
    }catch (ClassCastException e){
         System.out.println("CLASS CAST EXCEPTION!");
    }
  %>
    ----- Original Message ----- 
    From: Leon Palermo 
    To: tomcat-user@jakarta.apache.org 
    Sent: Friday, May 25, 2001 9:53 AM
    Subject: Re: (EXPERTS ONLY) Bean Creation in Dispatch Servlet


    Mahesh,

    One more thing, in the servlet the line...

        thebean = (com.blah.blah.AnyCustomBean) Beans.instantiate(this.getClass().getClassLoader(),
"com.blah.blah.AnyCustomBean");

    ...needs to have a try/catch block around it for a ClassNotFoundException.

    Leon
      ----- Original Message ----- 
      From: Leon Palermo 
      To: tomcat-user@jakarta.apache.org 
      Sent: Friday, May 25, 2001 9:48 AM
      Subject: Re: (EXPERTS ONLY) Bean Creation in Dispatch Servlet


      Here is a very scaled down version of the dispatch servlet. Switch the name of the bean
('com.blah.blah.AnyCustomBean') in the jsp and servlet to any custom bean you wish to try
out.

      Create a .jsp page for the servlet to forward the request to that looks something like
this:

      <%@ page session="false" errorPage="error.jsp" %>
      <%@ page import = "com.blah.blah.AnyCustomBean" %>

      <%try{
             System.out.println((request.getAttribute("thebean") == null));
             System.out.println((request.getAttribute("thebean") instanceof zedak.docworx.jspsupport.beans.BrandBean));
             System.out.println((request.getAttribute("thebean").getClass().getName()));
             System.out.println((zedak.docworx.jspsupport.beans.BrandBean)request.getAttribute("thebean"));
        }catch (ClassCastException e){
             System.out.println("CLASS CAST EXCEPTION!");
        }
      %>

      <jsp:useBean id="thebean" scope="request" class="com.blah.blah.AnyCustomBean" />

      Change the name of the jsp file in the servlet to match the .jsp file name you created
above.

      Thanks!

      Leon
        ----- Original Message ----- 
        From: Bhat, Mahesh 
        To: tomcat-user@jakarta.apache.org 
        Sent: Friday, May 25, 2001 9:20 AM
        Subject: RE: (EXPERTS ONLY) Bean Creation in Dispatch Servlet


        Can you send the example code ?


          -----Original Message-----
          From: Leon Palermo [mailto:leonp@zedak.com]
          Sent: Friday, May 25, 2001 2:21 PM
          To: tomcat-user@jakarta.apache.org
          Subject: Re: (EXPERTS ONLY) Bean Creation in Dispatch Servlet


          Yes, but I need to cast it to use the Bean specific functionality and...

              (com.blah.blah.MyBean)request.getAttribute("thename");

          ...causes the ClassCastException to occur.

            ----- Original Message ----- 
            From: Bhat, Mahesh 
            To: tomcat-user@jakarta.apache.org 
            Sent: Friday, May 25, 2001 9:11 AM
            Subject: RE: (EXPERTS ONLY) Bean Creation in Dispatch Servlet


            Hi

            Have you tried the simple way of :

            com.blah.blah.MyBean abean = new com.blah.blah.MyBean();
            request.setAttribute("thename", abean);

            in JSP : 

            com.blah.blah.MyBean abean = request.getAttribute("thename");

            regards
            mahesh


              -----Original Message-----
              From: Leon Palermo [mailto:leonp@zedak.com]
              Sent: Friday, May 25, 2001 2:02 PM
              To: tomcat-user@jakarta.apache.org
              Subject: (EXPERTS ONLY) Bean Creation in Dispatch Servlet


              Hello All,

              Let me preface this email by saying that I only put 'EXPERTS ONLY' so you hot
shot programmers would actually read this email.  If you are reading this, it worked!

              I have an odd problem that I was hoping someone could help with.

              I have a servlet that all jsps in the system are dispatched from.  I create
a bean in this servlet and add it to the request object like so...

                  com.blah.blah.MyBean abean = (com.blah.blah.MyBean) Beans.instantiate(this.getClass().getClassLoader(),"com.blah.blah.MyBean");
                  ...
                  request.setAttribute("thename", abean);
                              
              I have also tried this to create the bean....

                  com.blah.blah.MyBean abean = new com.blah.blah.MyBean();


              and also tried to place the object in the request like so....

                  pageContext.setAttribute("thename", abean, PageContext.REQUEST_SCOPE);

              Anywho, I then have the following in my jsp page...

                  <jsp:useBean id="thename" scope="request" class="com.blah.blah.MyBean"
/>

              I get a java.lang.ClassCastException from the jsp.  So, I decided to do a little
error hunting in a jsp using the following code...

              <%try{
                  System.out.println(request.getAttribute("thename") == null);
                  System.out.println(request.getAttribute("thename") instanceof com.blah.blah.MyBean);
                  System.out.println(request.getAttribute("thename").getClass().getName());
                  System.out.println(zedak.docworx.jspsupport.beans.BrandBean)request.getAttribute("thename"));
              }catch (ClassCastException e){
                  System.out.println("CLASS CAST EXCEPTION!");
              }
              %>

              The results of the code is as follows:

                  false
                  false
                  com.blah.blah.MyBean
                  CLASS CAST EXCEPTION!

              So, the attribute is present in the request object, it is not an instance of
'com.blah.blah.MyBean'; but the object's class name is 'com.blah.blah.MyBean'.  Does anyone
have an idea what is going on?  How can the object's class name be 'com.blah.blah.MyBean'
but not be able to cast to 'com.blah.blah.MyBean'?

              Thanks in advance!

              Leon Palermo


            Important:

            Internet communications are not necessarily secure and may be intercepted or changed
after they are sent.
            The Abbey National Group does not accept liability for any such changes. If you
wish to confirm the origin or content of this communication, please contact the sender using
an alternative means of communication.

            This communication does not create or modify any contract.

            If you are not the intended recipient of this communication you should destroy
it without copying, disclosing or otherwise using its contents. Please notify the sender immediately
of the error.

            The Abbey National Group comprises Abbey National plc and its subsidiary group
of companies.

            Abbey National plc. Registered Office: Abbey House, Baker Street, London, NW1
6XL. Reg. No. 2294747.
            Registered in England.


Mime
View raw message