You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bu...@apache.org on 2001/09/28 16:04:36 UTC
DO NOT REPLY [Bug 3866] -
Class Not Found deploying a war
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3866>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3866
Class Not Found deploying a war
------- Additional Comments From John.Reilly@xelector.com 2001-09-28 07:04 -------
I believe this is the expected behaviour - you need to import the class
explicitly. i.e. import MyClass
Re: Jasper compiler BUG ???
Posted by "Craig R. McClanahan" <cr...@apache.org>.
On Fri, 28 Sep 2001, Mike wrote:
> Date: Fri, 28 Sep 2001 17:53:32 +0200
> From: Mike <Kr...@wanari.com>
> Reply-To: tomcat-dev@jakarta.apache.org
> To: tomcat-dev@jakarta.apache.org
> Subject: Jasper compiler BUG ???
>
> Hello..
>
> I have found a strange compiler behavior when I moved my project from
> Servletexec engine to Jakarta-Tomcat-4.0, and I think it could be a BUG.
>
> Here is my simplifed JSP source code:
>
> <%session.invalidate();%>
> <jsp:useBean id="oHashtable" class="java.util.Hashtable" scope="session"/>
>
> The problem around the generated java code. Here is the Jasper generated
> code:
>
> session.invalidate();
> java.util.Hashtable oHashtable = null;
> boolean _jspx_specialoHashtable = false;
> synchronized (session) {
> oHashtable= (java.util.Hashtable)
>
> pageContext.getAttribute("oHashtable",PageContext.SESSION_SCOPE);
> if ( oHashtable == null ) {
> _jspx_specialoHashtable = true;
> try {
> oHashtable = (java.util.Hashtable)
> Beans.instantiate(this.getClass().getClassLoader(), "java.util.Hashtable");
> } catch (Exception exc) {
> throw new ServletException (" Cannot create
> bean of class "+"java.util.Hashtable");
> }
> pageContext.setAttribute("oHashtable", oHashtable,
> PageContext.SESSION_SCOPE);
> }
> }
> if(_jspx_specialoHashtable == true) {
> }
>
> And here is the Servletexec generated code:
>
> session.invalidate();
> java.util.Hashtable oHashtable =
> (java.util.Hashtable)session.getAttribute( "oHashtable" );
> if ( oHashtable == null )
> {
> synchronized ( session )
> {
> oHashtable =
> java.util.Hashtable)session.getAttribute( "oHashtable " );
> if ( oHashtable == null )
> {
> oHashtable = (java.util.Hashtable)new
> java.util.Hashtable();
> session.setAttribute( "oHashtable ", oHashtable );
> }
> }
> }
>
> Oke, you can spot the difference. Check the getAttribute and setAttribute
> functions.The Jasper version works with the pageContext object and the
> Servletexec works with the session object, which one is the correct
> implementation ???
>
> The real problem is, the Jasper version throws an Exception on getAttribute
> method, and with other engines (JRUN, Servletexec, Jaguar) it works
> perfectly.
>
> Any suggestion ??
>
> Mike
>
> Krautheim Mihály, Wanari Ltd.
> www.wanari.com
>
Either implementation is entirely legal, as long as all the semantic
requirements of the PageContext class are obeyed. Implementations are
free to do what they want within the rules.
You'll need to post a stack trace (and an example piece of code
illustrating it to get any debugging help - and that discussion is better
placed on the TOMCAT-USER mailing list.
Craig McClanahan
Jasper compiler BUG ???
Posted by Mike <Kr...@wanari.com>.
Hello..
I have found a strange compiler behavior when I moved my project from
Servletexec engine to Jakarta-Tomcat-4.0, and I think it could be a BUG.
Here is my simplifed JSP source code:
<%session.invalidate();%>
<jsp:useBean id="oHashtable" class="java.util.Hashtable" scope="session"/>
The problem around the generated java code. Here is the Jasper generated
code:
session.invalidate();
java.util.Hashtable oHashtable = null;
boolean _jspx_specialoHashtable = false;
synchronized (session) {
oHashtable= (java.util.Hashtable)
pageContext.getAttribute("oHashtable",PageContext.SESSION_SCOPE);
if ( oHashtable == null ) {
_jspx_specialoHashtable = true;
try {
oHashtable = (java.util.Hashtable)
Beans.instantiate(this.getClass().getClassLoader(), "java.util.Hashtable");
} catch (Exception exc) {
throw new ServletException (" Cannot create
bean of class "+"java.util.Hashtable");
}
pageContext.setAttribute("oHashtable", oHashtable,
PageContext.SESSION_SCOPE);
}
}
if(_jspx_specialoHashtable == true) {
}
And here is the Servletexec generated code:
session.invalidate();
java.util.Hashtable oHashtable =
(java.util.Hashtable)session.getAttribute( "oHashtable" );
if ( oHashtable == null )
{
synchronized ( session )
{
oHashtable =
java.util.Hashtable)session.getAttribute( "oHashtable " );
if ( oHashtable == null )
{
oHashtable = (java.util.Hashtable)new
java.util.Hashtable();
session.setAttribute( "oHashtable ", oHashtable );
}
}
}
Oke, you can spot the difference. Check the getAttribute and setAttribute
functions.The Jasper version works with the pageContext object and the
Servletexec works with the session object, which one is the correct
implementation ???
The real problem is, the Jasper version throws an Exception on getAttribute
method, and with other engines (JRUN, Servletexec, Jaguar) it works
perfectly.
Any suggestion ??
Mike
Krautheim Mihály, Wanari Ltd.
www.wanari.com