[Resin-interest] Resin 4.0.5 Buffer Commit Point

2010-03-25 Thread Aaron Freeman
We take some fairly lengthy queries (lengthy row based on row count), 
and push the data into hashmaps in JSTL pages.  After that sometimes we 
evaluate the hashmap and sometimes have to redirect the request to 
another page.  In 3.0.23 it works with no problems.  In 4.0.5 we get 
java.lang.IllegalStateException: Can't sendRedirect() after data has 
committed to the client.


The reason being, that the for loop is causing a ton of white space to 
be sent to be buffered up, and at some point a buffer size limit has 
been hit with only whitespace, causing Resin to then send the HTTP 
headers and commit the request.


So in the for loop I can do this to fix the problem:

c:forEach items=${requestScope.getRewriteUrlsQuery.rows} 
var=rewriteUrlsQuery

% response.reset(); %

/c:forEach

The question is, is there a setting in the resin.xml where I can change 
the buffer size globally, or do we have to go to modify all JSPs that 
potentially have this problem?  Was the default commit point changed 
between 3.0.x and
4.0.x, or some other architecture change, as we have never seen this 
until now?*

*
Thanks,

Aaron*
*
___
resin-interest mailing list
resin-interest@caucho.com
http://maillist.caucho.com/mailman/listinfo/resin-interest


Re: [Resin-interest] Resin 4.0.5 Buffer Commit Point

2010-03-25 Thread Jon Stevens
This is why you don't put application logic into the view layer. Before you
'push' your data into the view, figure out if you want to do the redirect or
not.

jon

On Thu, Mar 25, 2010 at 7:49 AM, Aaron Freeman aaron.free...@layerz.comwrote:

  We take some fairly lengthy queries (lengthy row based on row count), and
 push the data into hashmaps in JSTL pages.  After that sometimes we evaluate
 the hashmap and sometimes have to redirect the request to another page.  In
 3.0.23 it works with no problems.  In 4.0.5 we get
 java.lang.IllegalStateException: Can't sendRedirect() after data has
 committed to the client.

 The reason being, that the for loop is causing a ton of white space to be
 sent to be buffered up, and at some point a buffer size limit has been hit
 with only whitespace, causing Resin to then send the HTTP headers and commit
 the request.

 So in the for loop I can do this to fix the problem:

 c:forEach items=${requestScope.getRewriteUrlsQuery.rows}
 var=rewriteUrlsQuery
 % response.reset(); %
 
 /c:forEach

 The question is, is there a setting in the resin.xml where I can change the
 buffer size globally, or do we have to go to modify all JSPs that
 potentially have this problem?  Was the default commit point changed between
 3.0.x and
 4.0.x, or some other architecture change, as we have never seen this until
 now?*
 *
 Thanks,

 Aaron*
 *

 ___
 resin-interest mailing list
 resin-interest@caucho.com
 http://maillist.caucho.com/mailman/listinfo/resin-interest


___
resin-interest mailing list
resin-interest@caucho.com
http://maillist.caucho.com/mailman/listinfo/resin-interest


Re: [Resin-interest] Resin 4.0.5 Buffer Commit Point

2010-03-25 Thread Aaron Freeman
It's not in the view layer.  We segregate our controller JSPs from our 
view JSPs.  So you will change your argument to say that we should not 
use JSPs at the control layer, and of course _most_ of our control logic 
is in pure Java, but there are cases where having our controller logic 
written in JSTL (and separated from other model/view JSP pages) is a 
substantial advantage for us.


So the question still stands, is there a global way to change the commit 
point so we don't have to constantly reset a connection to clear the buffer?


Aaron


On 3/25/2010 10:02 AM, Jon Stevens wrote:
This is why you don't put application logic into the view layer. 
Before you 'push' your data into the view, figure out if you want to 
do the redirect or not.


jon

On Thu, Mar 25, 2010 at 7:49 AM, Aaron Freeman 
aaron.free...@layerz.com mailto:aaron.free...@layerz.com wrote:


We take some fairly lengthy queries (lengthy row based on row
count), and push the data into hashmaps in JSTL pages.  After that
sometimes we evaluate the hashmap and sometimes have to redirect
the request to another page.  In 3.0.23 it works with no
problems.  In 4.0.5 we get java.lang.IllegalStateException: Can't
sendRedirect() after data has committed to the client.

The reason being, that the for loop is causing a ton of white
space to be sent to be buffered up, and at some point a buffer
size limit has been hit with only whitespace, causing Resin to
then send the HTTP headers and commit the request.

So in the for loop I can do this to fix the problem:

c:forEach items=${requestScope.getRewriteUrlsQuery.rows}
var=rewriteUrlsQuery
% response.reset(); %

/c:forEach

The question is, is there a setting in the resin.xml where I can
change the buffer size globally, or do we have to go to modify all
JSPs that potentially have this problem?  Was the default commit
point changed between 3.0.x and
4.0.x, or some other architecture change, as we have never seen
this until now?*
*
Thanks,

Aaron*
*



___
resin-interest mailing list
resin-interest@caucho.com
http://maillist.caucho.com/mailman/listinfo/resin-interest


Re: [Resin-interest] Resin 4.0.5 Buffer Commit Point

2010-03-25 Thread Jon Stevens
I don't mind using JSP's for some of the (separated) control logic. For
example, you have a form action:

form action=email_confirm_submit.jsp

Inside of it, it looks like this:

http://code.google.com/p/subetha/source/browse/trunk/web/email_confirm_submit.jsp

That said, look at that code. The logic for determining the next page to
redirect to is either in the t:action or within the JSTL within the
email_confirm_submit.jsp. Generally, it is nice to have it in JSTL because a
UI person can change the location of the final page without having to modify
java code to do so.

The point being that by the time you get to the view layer (ie: a jsp that
doesn't have _submit.jsp at the end), you don't do a redirect. You are
depending on what is effectively a bug in Resin that has now been fixed in a
newer version. You should modify your code to change that dependency because
you can (and should) be doing it differently.

jon



On Thu, Mar 25, 2010 at 8:18 AM, Aaron Freeman aaron.free...@layerz.comwrote:

  It's not in the view layer.  We segregate our controller JSPs from our
 view JSPs.  So you will change your argument to say that we should not use
 JSPs at the control layer, and of course _most_ of our control logic is in
 pure Java, but there are cases where having our controller logic written in
 JSTL (and separated from other model/view JSP pages) is a substantial
 advantage for us.

 So the question still stands, is there a global way to change the commit
 point so we don't have to constantly reset a connection to clear the buffer?

 Aaron



 On 3/25/2010 10:02 AM, Jon Stevens wrote:

 This is why you don't put application logic into the view layer. Before you
 'push' your data into the view, figure out if you want to do the redirect or
 not.

  jon

 On Thu, Mar 25, 2010 at 7:49 AM, Aaron Freeman 
 aaron.free...@layerz.comwrote:

 We take some fairly lengthy queries (lengthy row based on row count), and
 push the data into hashmaps in JSTL pages.  After that sometimes we evaluate
 the hashmap and sometimes have to redirect the request to another page.  In
 3.0.23 it works with no problems.  In 4.0.5 we get
 java.lang.IllegalStateException: Can't sendRedirect() after data has
 committed to the client.

 The reason being, that the for loop is causing a ton of white space to be
 sent to be buffered up, and at some point a buffer size limit has been hit
 with only whitespace, causing Resin to then send the HTTP headers and commit
 the request.

 So in the for loop I can do this to fix the problem:

 c:forEach items=${requestScope.getRewriteUrlsQuery.rows}
 var=rewriteUrlsQuery
 % response.reset(); %
 
 /c:forEach

 The question is, is there a setting in the resin.xml where I can change
 the buffer size globally, or do we have to go to modify all JSPs that
 potentially have this problem?  Was the default commit point changed between
 3.0.x and
 4.0.x, or some other architecture change, as we have never seen this until
 now?*
 *
 Thanks,

 Aaron*
 *



 ___
 resin-interest mailing list
 resin-interest@caucho.com
 http://maillist.caucho.com/mailman/listinfo/resin-interest


___
resin-interest mailing list
resin-interest@caucho.com
http://maillist.caucho.com/mailman/listinfo/resin-interest


[Resin-interest] minor problem in 4.0.5 release notes

2010-03-25 Thread Jon Stevens
http://caucho.com/resin-4.0/changes/resin-4.0.5.xtp

Under CDI and logging integration, it says ConsoleHandler and then gives
an example for SocketHandler.

jon
___
resin-interest mailing list
resin-interest@caucho.com
http://maillist.caucho.com/mailman/listinfo/resin-interest


Re: [Resin-interest] Resin 4.0.5 Buffer Commit Point

2010-03-25 Thread Aaron Freeman

On 3/25/2010 10:31 AM, Jon Stevens wrote:
I don't mind using JSP's for some of the (separated) control logic. 
For example, you have a form action:


form action=email_confirm_submit.jsp

Inside of it, it looks like this:

http://code.google.com/p/subetha/source/browse/trunk/web/email_confirm_submit.jsp

That said, look at that code. The logic for determining the next page 
to redirect to is either in the t:action or within the JSTL within 
the email_confirm_submit.jsp. Generally, it is nice to have it in JSTL 
because a UI person can change the location of the final page without 
having to modify java code to do so.


The point being that by the time you get to the view layer (ie: a jsp 
that doesn't have _submit.jsp at the end), you don't do a redirect. 
You are depending on what is effectively a bug in Resin that has now 
been fixed in a newer version. You should modify your code to change 
that dependency because you can (and should) be doing it differently.


jon



On Thu, Mar 25, 2010 at 8:18 AM, Aaron Freeman 
aaron.free...@layerz.com mailto:aaron.free...@layerz.com wrote:


It's not in the view layer.  We segregate our controller JSPs from
our view JSPs.  So you will change your argument to say that we
should not use JSPs at the control layer, and of course _most_ of
our control logic is in pure Java, but there are cases where
having our controller logic written in JSTL (and separated from
other model/view JSP pages) is a substantial advantage for us.

So the question still stands, is there a global way to change the
commit point so we don't have to constantly reset a connection to
clear the buffer?

Aaron



On 3/25/2010 10:02 AM, Jon Stevens wrote:

This is why you don't put application logic into the view layer.
Before you 'push' your data into the view, figure out if you want
to do the redirect or not.

jon

On Thu, Mar 25, 2010 at 7:49 AM, Aaron Freeman
aaron.free...@layerz.com mailto:aaron.free...@layerz.com wrote:

We take some fairly lengthy queries (lengthy row based on row
count), and push the data into hashmaps in JSTL pages.  After
that sometimes we evaluate the hashmap and sometimes have to
redirect the request to another page.  In 3.0.23 it works
with no problems.  In 4.0.5 we get
java.lang.IllegalStateException: Can't sendRedirect() after
data has committed to the client.

The reason being, that the for loop is causing a ton of white
space to be sent to be buffered up, and at some point a
buffer size limit has been hit with only whitespace, causing
Resin to then send the HTTP headers and commit the request.

So in the for loop I can do this to fix the problem:

c:forEach items=${requestScope.getRewriteUrlsQuery.rows}
var=rewriteUrlsQuery
% response.reset(); %

/c:forEach

The question is, is there a setting in the resin.xml where I
can change the buffer size globally, or do we have to go to
modify all JSPs that potentially have this problem?  Was the
default commit point changed between 3.0.x and
4.0.x, or some other architecture change, as we have never
seen this until now?*
*
Thanks,

Aaron*
*





So the code example, from a style stand-point, is almost spot on with 
how have laid our model/view/controller JSPs.  I don't know what a t: 
library, is but I am sure its some custom way to call your model code.  
We do a jsp:include instead, but it's stylistically the same -- the 
model is separated from your example controller.


In a JSP-based controller we are parsing the results of the model data 
into a hashmap and then processing the elements in the hashmap to 
determine if we need to redirect before we call the view.  So our 
controller looks like:


jsp:include page=/model/grab-data.sql/

%-- Process the results of the model --%
c:forEach items=${requestScope.hashMap.values()} var=rewriteUrlsQuery

/c:forEach

c:choose
c:when test=${redirect == 'true'}
c:redirect ...
/c:when
c:otherwise
jsp:include page=/view/.../
/c:otherwise
/c:choose

So I am not quite tracking with you on what we need to differently in 
our controller?  We are trying to do a redirect before we get to the 
view layer, as you suggest, and as your code is suggesting.


Right or wrong, this is a style we have used in several places, and 
instead of modifying a lot of code it would be much easier if we can 
simply change the buffer size commit point.  We definitely didn't intend 
to exploit a bug, we are just trying to follow easy to maintain good MVC 
practices and ran into this hiccup.


Fortunately through all of our testing this is the only show stopper for 
us from rolling out to the newest version of Resin 4.0.5 with our 
existing code base.


Thanks for you help,

Aaron

Re: [Resin-interest] minor problem in 4.0.5 release notes

2010-03-25 Thread Scott Ferguson
Jon Stevens wrote:
 http://caucho.com/resin-4.0/changes/resin-4.0.5.xtp

 Under CDI and logging integration, it says ConsoleHandler and then 
 gives an example for SocketHandler.
Thanks. After starting the example, I realized ConsoleHandler was boring. :)

-- Scott

 jon

 

 ___
 resin-interest mailing list
 resin-interest@caucho.com
 http://maillist.caucho.com/mailman/listinfo/resin-interest
   



___
resin-interest mailing list
resin-interest@caucho.com
http://maillist.caucho.com/mailman/listinfo/resin-interest


[Resin-interest] Resin-pro-4.0.5: JSSE + cipher-suites

2010-03-25 Thread Aaron Freeman
Is there any documentation for using the cipher-suites tag?  Instead of 
explicitly listing ciphers we do want, is there a way to list 
cipher-suites you want to exclude?  Google isn't helping me find such an 
animal, so I am guess that it's not possible?

Thanks,

Aaron


___
resin-interest mailing list
resin-interest@caucho.com
http://maillist.caucho.com/mailman/listinfo/resin-interest


Re: [Resin-interest] Resin-pro-4.0.5: JSSE + cipher-suites

2010-03-25 Thread Aaron Freeman
Perfect.  I was able to work out what seems to be a reasonable list, if 
anybody here needs it for PCI compliance.  It's probably not perfect, so 
if anyone sees any issues with it, please let me know:

cipher-suitesSSL_RSA_WITH_RC4_128_MD5,SSL_RSA_WITH_RC4_128_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA/cipher-suites

Aaron


On 3/25/2010 3:59 PM, Emil Ong wrote:
 Hi Aaron,

 Not at the moment, but it's certainly possible.  I filed a feature bug
 for it:

 http://bugs.caucho.com/view.php?id=3970

 Thanks,
 Emil

 On Thu, Mar 25, 2010 at 02:34:33PM -0500, Aaron Freeman wrote:

 Is there any documentation for using the cipher-suites tag?  Instead of
 explicitly listing ciphers we do want, is there a way to list
 cipher-suites you want to exclude?  Google isn't helping me find such an
 animal, so I am guess that it's not possible?

 Thanks,

 Aaron
  




___
resin-interest mailing list
resin-interest@caucho.com
http://maillist.caucho.com/mailman/listinfo/resin-interest