RE: Struts+Weblogic=Problems. Changes to struts?

2000-12-07 Thread Ray Power
rialize the attributes since a the attributes of
a PageContext may have the scope of an entire session.
> >
> > -Matt
>


==





> -Original Message-
> From: Craig R. McClanahan [mailto:[EMAIL PROTECTED]]
> Sent: Friday, December 08, 2000 2:39 AM
> To: [EMAIL PROTECTED]
> Subject: Re: Struts+Weblogic=Problems. Changes to struts?
>
>
> Matthew Heaton wrote:
>
> > They told me that the spec will disallow it but I have no idea
> if that is
> > factual or not.  It could just be their interpretation of the
> spec, from the
> > snipets I've seen it definetly says you shouldn't put Non Serializable
> > objects into the session but isn't very clear about putting
> them into the
> > PageContext under different scopes.
> >
>
> Do you have an email address at WebLogic that I can follow up with?
>
> >
> > -Matt
> >
>
> Craig
>
>




Re: Struts+Weblogic=Problems. Changes to struts?

2000-12-07 Thread Craig R. McClanahan

Matthew Heaton wrote:

> They told me that the spec will disallow it but I have no idea if that is
> factual or not.  It could just be their interpretation of the spec, from the
> snipets I've seen it definetly says you shouldn't put Non Serializable
> objects into the session but isn't very clear about putting them into the
> PageContext under different scopes.
>

Do you have an email address at WebLogic that I can follow up with?

>
> -Matt
>

Craig





Re: Struts+Weblogic=Problems. Changes to struts?

2000-12-07 Thread Craig R. McClanahan

"Punyansky, Alex" wrote:

> Thanks Matt,
>
> Does it mean that I need to modify Struts by removing support for
> internationalization ( removing/replacing PropertiesResourceBundle from
> MessageResources )?
>
> Craig, are you planning to change Struts so that it complies with Servlet
> 2.3 ( making all attributes Serializable )?
>

I'm afraid that I see no such requirement in the servlet 2.3 spec (and I'm on
the expert group that came up with it :-).  The only restrictions on
Serializable attributes in the spec itself relate to *session* attributes, not
*context* attributes.  And that restriction only applies when you mark your app
as .

Note also that the WebLogic response quoted in the message from Ruslan gave an
entirely different reasoning (their application server requires all attributes
to be Serializable if you use the "reload on modify" feature).  That's an
entirely reasonable restriction for WebLogic to place, based on their
container's internal architecture.  It's not, however, a spec compliance issue.

That all being said, I'm looking at ways to make MessageResources a Serializable
object.  Unfortunately, java.util.ResourceBundle (which it relies on) is *not*
Serializable, so a different solution to that is going to be required.

The pseudo-database in the Struts example application (which has nothing to do
with the framework itself) is not Serializable, and will *not* operate correctly
in a distributed environment.  I'm not planning on changing that in the short
term, because it's only there to give you a quick "proof of concept" that Struts
is working, plus some examples of some Struts-related development techniques.

>
> Alex
>

Craig


>
> -Original Message-
> From: Matthew Heaton [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, December 07, 2000 2:14 PM
> To: '[EMAIL PROTECTED]'
> Subject: RE: Struts+Weblogic=Problems
>
> I posted my concerns on BEA's message board about Weblogic not allowing non
> Serialized objects to be placed inside the PageContext are two of the
> responses is below.  I was basically told that the servlet 2.3 spec disallow
> non serialized objects in the PageContext so built this into the current
> release of Weblogic.
>
> -Matt
>
> 
> 
>
> Matt,
>
> In order for the reload-on-modify to work correctly, we have to assume that
> any objects that go into servlet request, servlet context and HTTP session
> are serializable. Otherwise, it's quite easy to get yourself into
> ClassCastException situation.
>
> WLS comes with reload-on-modify turned on out of the box. You can turn it
> off by setting reload periods to -1 (never check). There are two separate
> params for JSP and servlets. The one for JSPs is set in weblogic.xml
> descriptor, the one for servlets is set in the console.
>
> Thanks, -ruslan
>
> Matt Heaton wrote:
>
> > After many unsuccessful attempts at getting Struts to work on Weblogic
> 5.1, I decided with give it a try on Weblogic 6.0 Beta 2
> >
> > Everything seems to be deploying correct except for I get the following
> error (which of course breaks everything):
> >
> >   
> <[WebAppServletContext(6802820,struts-example)] Cou
> > ld not deserialize context attribute
> > java.io.NotSerializableException: java.util.PropertyResourceBundle
> > at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1148)
> > at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:366)
> > at
> java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java:1841)
> > at
> java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:480)
> > at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1214)
> > at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:366)
> > at
> weblogic.servlet.internal.AttributeWrapper.getObject(AttributeWrapper.java:7
> 1)
> > at
> weblogic.servlet.internal.WebAppServletContext.getAttribute(WebAppServletCon
> text.java
> > :207)
> > at
> weblogic.servlet.jsp.PageContextImpl.getAttribute(PageContextImpl.java:164)
> > at
> org.apache.struts.taglib.bean.MessageTag.doStartTag(MessageTag.java:230)
> > at jsp_servlet._index._jspService(_index.java:105)
> > at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
> > at
> weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
> :208)
> > at
> weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
> :244)
> > at
> weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletCo
> ntext.jav
> > a:1107)
> > at
> weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java
> :1482)
> > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
> > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
> > >
> >
> > It appears that Weblogic requires any object that you use as a context
> attribute on a JSP page must be serializable. I went through some of the
> Struts sour

RE: Struts+Weblogic=Problems. Changes to struts?

2000-12-07 Thread Matthew Heaton

They told me that the spec will disallow it but I have no idea if that is
factual or not.  It could just be their interpretation of the spec, from the
snipets I've seen it definetly says you shouldn't put Non Serializable
objects into the session but isn't very clear about putting them into the
PageContext under different scopes.

-Matt

-Original Message-
From: Punyansky, Alex [mailto:[EMAIL PROTECTED]]
Sent: Thursday, December 07, 2000 2:17 PM
To: '[EMAIL PROTECTED]'
Subject: RE: Struts+Weblogic=Problems. Changes to struts?


Thanks Matt,

Does it mean that I need to modify Struts by removing support for
internationalization ( removing/replacing PropertiesResourceBundle from
MessageResources )? 

Craig, are you planning to change Struts so that it complies with Servlet
2.3 ( making all attributes Serializable )? 

Alex

-Original Message-
From: Matthew Heaton [mailto:[EMAIL PROTECTED]]
Sent: Thursday, December 07, 2000 2:14 PM
To: '[EMAIL PROTECTED]'
Subject: RE: Struts+Weblogic=Problems


I posted my concerns on BEA's message board about Weblogic not allowing non
Serialized objects to be placed inside the PageContext are two of the
responses is below.  I was basically told that the servlet 2.3 spec disallow
non serialized objects in the PageContext so built this into the current
release of Weblogic.

-Matt





Matt, 

In order for the reload-on-modify to work correctly, we have to assume that
any objects that go into servlet request, servlet context and HTTP session
are serializable. Otherwise, it's quite easy to get yourself into
ClassCastException situation. 

WLS comes with reload-on-modify turned on out of the box. You can turn it
off by setting reload periods to -1 (never check). There are two separate
params for JSP and servlets. The one for JSPs is set in weblogic.xml
descriptor, the one for servlets is set in the console. 

Thanks, -ruslan 

Matt Heaton wrote: 


> After many unsuccessful attempts at getting Struts to work on Weblogic
5.1, I decided with give it a try on Weblogic 6.0 Beta 2 
> 
> Everything seems to be deploying correct except for I get the following
error (which of course breaks everything): 
> 
>   
<[WebAppServletContext(6802820,struts-example)] Cou 
> ld not deserialize context attribute 
> java.io.NotSerializableException: java.util.PropertyResourceBundle 
> at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1148) 
> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:366) 
> at
java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java:1841) 
> at
java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:480) 
> at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1214) 
> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:366) 
> at
weblogic.servlet.internal.AttributeWrapper.getObject(AttributeWrapper.java:7
1) 
> at
weblogic.servlet.internal.WebAppServletContext.getAttribute(WebAppServletCon
text.java 
> :207) 
> at
weblogic.servlet.jsp.PageContextImpl.getAttribute(PageContextImpl.java:164) 
> at
org.apache.struts.taglib.bean.MessageTag.doStartTag(MessageTag.java:230) 
> at jsp_servlet._index._jspService(_index.java:105) 
> at weblogic.servlet.jsp.JspBase.service(JspBase.java:27) 
> at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
:208) 
> at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
:244) 
> at
weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletCo
ntext.jav 
> a:1107) 
> at
weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java
:1482) 
> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137) 
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120) 
> > 
> 
> It appears that Weblogic requires any object that you use as a context
attribute on a JSP page must be serializable. I went through some of the
Struts source and it's trying to use objects which aren't serializable as
JSP page context attributes. This looks like it may be a shortcoming in the
JSP spec because it makes sense that to support to failover of sessions you
would need to be able to serialize the attributes since a the attributes of
a PageContext may have the scope of an entire session. > > -Matt 


-Original Message-
From: Craig R. McClanahan [mailto:[EMAIL PROTECTED]]
Sent: Thursday, November 30, 2000 4:54 PM
To: [EMAIL PROTECTED]
Subject: Re: Struts+Weblogic=Problems but this time it looks like it's
Struts


Matthew Heaton wrote:

> The example application itself doesn't put non Serializable objects into
the
> Http session but all throughout the struts code non Serializable objects
are
> placed 

RE: Struts+Weblogic=Problems. Changes to struts?

2000-12-07 Thread Punyansky, Alex

Thanks Matt,

Does it mean that I need to modify Struts by removing support for
internationalization ( removing/replacing PropertiesResourceBundle from
MessageResources )? 

Craig, are you planning to change Struts so that it complies with Servlet
2.3 ( making all attributes Serializable )? 

Alex

-Original Message-
From: Matthew Heaton [mailto:[EMAIL PROTECTED]]
Sent: Thursday, December 07, 2000 2:14 PM
To: '[EMAIL PROTECTED]'
Subject: RE: Struts+Weblogic=Problems


I posted my concerns on BEA's message board about Weblogic not allowing non
Serialized objects to be placed inside the PageContext are two of the
responses is below.  I was basically told that the servlet 2.3 spec disallow
non serialized objects in the PageContext so built this into the current
release of Weblogic.

-Matt





Matt, 

In order for the reload-on-modify to work correctly, we have to assume that
any objects that go into servlet request, servlet context and HTTP session
are serializable. Otherwise, it's quite easy to get yourself into
ClassCastException situation. 

WLS comes with reload-on-modify turned on out of the box. You can turn it
off by setting reload periods to -1 (never check). There are two separate
params for JSP and servlets. The one for JSPs is set in weblogic.xml
descriptor, the one for servlets is set in the console. 

Thanks, -ruslan 

Matt Heaton wrote: 


> After many unsuccessful attempts at getting Struts to work on Weblogic
5.1, I decided with give it a try on Weblogic 6.0 Beta 2 
> 
> Everything seems to be deploying correct except for I get the following
error (which of course breaks everything): 
> 
>   
<[WebAppServletContext(6802820,struts-example)] Cou 
> ld not deserialize context attribute 
> java.io.NotSerializableException: java.util.PropertyResourceBundle 
> at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1148) 
> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:366) 
> at
java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java:1841) 
> at
java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:480) 
> at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1214) 
> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:366) 
> at
weblogic.servlet.internal.AttributeWrapper.getObject(AttributeWrapper.java:7
1) 
> at
weblogic.servlet.internal.WebAppServletContext.getAttribute(WebAppServletCon
text.java 
> :207) 
> at
weblogic.servlet.jsp.PageContextImpl.getAttribute(PageContextImpl.java:164) 
> at
org.apache.struts.taglib.bean.MessageTag.doStartTag(MessageTag.java:230) 
> at jsp_servlet._index._jspService(_index.java:105) 
> at weblogic.servlet.jsp.JspBase.service(JspBase.java:27) 
> at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
:208) 
> at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
:244) 
> at
weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletCo
ntext.jav 
> a:1107) 
> at
weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java
:1482) 
> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137) 
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120) 
> > 
> 
> It appears that Weblogic requires any object that you use as a context
attribute on a JSP page must be serializable. I went through some of the
Struts source and it's trying to use objects which aren't serializable as
JSP page context attributes. This looks like it may be a shortcoming in the
JSP spec because it makes sense that to support to failover of sessions you
would need to be able to serialize the attributes since a the attributes of
a PageContext may have the scope of an entire session. > > -Matt 


-Original Message-
From: Craig R. McClanahan [mailto:[EMAIL PROTECTED]]
Sent: Thursday, November 30, 2000 4:54 PM
To: [EMAIL PROTECTED]
Subject: Re: Struts+Weblogic=Problems but this time it looks like it's
Struts


Matthew Heaton wrote:

> The example application itself doesn't put non Serializable objects into
the
> Http session but all throughout the struts code non Serializable objects
are
> placed in the PageContext with a scopes of Application, Page, or Request.
> It appears that Weblogic 6.0 beta may be handling these as if they were
> placed with a Session context and disallowing non serializable objects.
> Whatever is going on it also appears WL is enforcing this rule in non when
>  is not set.
>

Yep.  Looking more closely at the error message, it is complaining about a
non-Serializable *context* attribute, not a *session* attribute.  I, like
others, jumped to the wrong conclusion there.

The spec provides no prohibitions on this -- only a warning that you cannot
use
a context attribute to share information globally in your application (the
way
that the example app does with its pseudo-database) in a distribu