[ http://jira.codehaus.org/browse/DISPL-314?page=comments#action_80785 ]
Gabriel Guerrero commented on DISPL-314:
----------------------------------------
Hi, we think that we found the problem for this issue, it is really hard to
duplicate, the only way we could is as follows
First we are using OC4J 9.0.4.2 (we also deployed the application in tomcat an
we could not duplicate it), struts1.1 using tiles and JDK 1.4.1.2
To duplicate it in the system we have a side bar that has few links that lead
to different lists with a lot of results (ex. 100.000 rows) or very heavy
queries. What we did is to click fast between two of the links, the idea is to
not let the server to respond. Doing this several times we saw in the logs the
broken pipe error (it happens when the server cannot finish the processing of a
user request at least in OC4J. I have not seen this in Tomcat), then stop and
go to one of the list; you'll see a message like this: " [ServletExecption
in:/yourList.jsp] null " instead of your list. Also remember, before start
trying to duplicate that you shouldn't have seen none of the list pages before,
preferably restart the server before trying this, its not 100% guaranteed that
you'll be able to replicate the error using the previous steps. You have to try
several times, but ones its happens the first time it will always occur in the
followings request of the list, that is how we co
uld debug it.
After a lot of debugging, this is what we found. First to see the full
exception you have to active in your log4j the log for the tiles like this:
log4j.logger.org.apache.struts.taglib.tiles=DEBUG
I attached one example of the exception
The tiles: insert tag was swallowing the exception thrown by the display tag,
After a lot of debugging of the display tag we conclude that the exception is
just a consequence of the real problem, what is happening is that the OC4J
creates a pool for the org.dysplaytag.tags.TableTag class, and when the server
can't finish the processing of a request normally, the method doEndTag is not
called. Inside this method exist a call to cleanUp() method that reset the
local variables of the instance to default values, so when the doEndTag is not
called the instance will stay in the pool without been reseted, when the pool
is full of corrupted objects you'll start to see the error of this issue.
To fix this we try to call the cleanUp() in the doStartTag method of the
TableTag and it didn't work so we guess that we were reseting to much
variables, so instead of calling that method we add this line to the begin of
the doStartTag method
this.rowNumber=1;
the method look like this
public int doStartTag() {
this.rowNumber=1;
.
.
.
That's the fix just adding that line, with the debug we identified that the
rowNumber variable was not reseted, causing that when a new list needs to be
processed by the TableTag it will start from the wrong line and if the number
is greater that the number of rows it will cause a NullPointerException in the
line 161 of the org.dysplaytag.model.Column, and the rowNumber will not be
reseted so it will grow each time the exception occurs.
We ran all the test of the Displaytag with maven and they pass also we have
been testing the fix in our application , and until now is working fine but
I'll like to know what do you think about the fix, if it could affect something
else, or if some other variables should also be reseted.
Thanks Gabriel Guerrero
> Displaytag breaks rendering in jsp without logging exceptions
> -------------------------------------------------------------
>
> Key: DISPL-314
> URL: http://jira.codehaus.org/browse/DISPL-314
> Project: DisplayTag
> Issue Type: Bug
> Components: Tag Library
> Affects Versions: 1.1
> Reporter: Tonis
> Fix For: 1.1
>
>
> I use displaytag library in jsp like:
> <display:table>
> <core:if test="${printFormat!='true'}" >
> <core:choose>
> .....
> </core:choose>
> </core:if>
> </display:table>
> And generating HTML fails probably because of errors during accessing beans
> in <display:table> implemention. But nothing is logged by displaytag,
> no jsp error is generated but all HTML rendering after <display:table> tag
> is stopped.
> Main issue is that it is so hard to find cause of the problem. Displaytag
> should log some error at least, I have spent hours finding out where the
> problem is. :(
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
displaytag-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/displaytag-devel