Issue is described here in more detail. http://forum.springsource.org/archive/index.php/t-39087.html http://forum.springsource.org/archive/index.php/t-29765.html
On Mon, Mar 14, 2011 at 11:00 AM, anyz <[email protected]> wrote: > Unfortunately it didn't work. I have web.xml as: > > <listener> > > > <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> > </listener> > <context-param> > <param-name>log4jConfigLocation</param-name> > <param-value>/WEB-INF/classes/log4j-myapp.properties</param-value> > </context-param> > > > <filter> > <filter-name>RequestContextFilter</filter-name> > > <filter-class>org.springframework.web.filter.RequestContextFilter</filter-class> > </filter> > <filter-mapping> > <filter-name>RequestContextFilter</filter-name> > <url-pattern>/*</url-pattern> > <dispatcher>REQUEST</dispatcher> > <dispatcher>INCLUDE</dispatcher> > </filter-mapping> > <listener> > > > <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> > </listener> > <context-param> > <param-name>contextConfigLocation</param-name> > <param-value>/WEB-INF/applicationContext*.xml</param-value> > </context-param> > <context-param> > <param-name>webAppRootKey</param-name> > <param-value>myApp-root</param-value> > </context-param> > > > > On Sat, Mar 12, 2011 at 5:56 AM, Woonsan Ko <[email protected]> wrote: > >> >> --- On Fri, 3/11/11, anyz <[email protected]> wrote: >> >> > From: anyz <[email protected]> >> > Subject: Re: Storing Custom Object in Session on User Login >> > To: "Jetspeed Users List" <[email protected]> >> > Date: Friday, March 11, 2011, 10:44 AM >> > Thanx Woonsan, >> > I worked as you suggested. A object set into session in >> > Filter Class is >> > accessible to rest of portlets. However i am not able to >> > get and set the >> > stuff into the session-scoped spring bean defined in my >> > application. Its >> > seems to be problem with my spring related logic. This bean >> > is later wired >> > into business delegate classes. Without this i have to pass >> > session object >> > to every method of delegate where needed. >> > >> > It throws errors when i try to set a value in >> > session-scoped spring bean. >> > >> > "java.lang.IllegalStateException: No thread-bound request >> > found: Are you >> > referring to request attributes outside of an actual web >> > request, or >> > processing a request outside of the originally receiving >> > thread? If you are >> > actually operating within a web request and still receive >> > this message, your >> > code is probably running outside of >> > DispatcherServlet/DispatcherPortlet: In >> > this case, use RequestContextListener or >> > RequestContextFilter to expose the >> > current request." >> >> I'm afraid it's because your portlet filter is executed before the >> dispatcher portlet is executed. So, the error message seems reasonable. >> It could be fixed just by adding a filter configuration with >> org.springframework.web.filter.RequestContextFilter in the web.xml of your >> portlet application. >> For example, >> >> <filter> >> <filter-name>RequestContextFilter</filter-name> >> >> >> <filter-class>org.springframework.web.filter.RequestContextFilter</filter-class> >> </filter> >> >> <filter-mapping> >> <filter-name>RequestContextFilter</filter-name> >> <url-pattern>/*</url-pattern> >> <dispatcher>REQUEST</dispatcher> >> <dispatcher>INCLUDE</dispatcher> >> </filter-mapping> >> >> Be sure that the filter-mapping should have 'INCLUDE' dispatcher option >> because the portlet is invoked by including-dispatch from the portal. >> >> >> HTH, >> >> Woonsan >> >> >> >> > >> > I am going t post a question at Spring Forum about this. >> > >> > Thanks once again. >> > >> > >> > >> > On Thu, Mar 10, 2011 at 8:53 PM, Woonsan Ko <[email protected]> >> > wrote: >> > >> > > You may consider using a JSR 286 Portlet Filter, which >> > can intercept >> > > portlet request, so you can access portal session >> > through the portlet >> > > request. It seems possible to set an application-scope >> > session attribute >> > > there for your spring application through the portlet >> > request. >> > > >> > > Woonsan >> > > >> > > --- On Thu, 3/10/11, anyz <[email protected]> >> > wrote: >> > > >> > > > From: anyz <[email protected]> >> > > > Subject: Re: Storing Custom Object in Session on >> > User Login >> > > > To: "Jetspeed Users List" <[email protected]> >> > > > Date: Thursday, March 10, 2011, 12:22 PM >> > > > It could be some thing like a session >> > > > listner in portlet application. We can >> > > > capture event in this listener, when session is >> > created >> > > > (i.e. first request >> > > > to any of portlet in portlet application). >> > However at this >> > > > point we do not >> > > > have access to Portal session. >> > > > >> > > > On Thu, Mar 10, 2011 at 4:02 PM, anyz <[email protected]> >> > > > wrote: >> > > > >> > > > > Woonsan, >> > > > > >> > > > > I have successfully get the session object >> > in Portlet >> > > > applicaton that was >> > > > > set by Portal application in custom security >> > valve. >> > > > There is one more step >> > > > > left in process. Actually portlet >> > application has a >> > > > session-scoped spring >> > > > > bean. The values from session object (set by >> > portal >> > > > app) should be extracted >> > > > > and set into spring bean.This spring bean is >> > then >> > > > accessible to other >> > > > > classes through dependency injection >> > performed by >> > > > Spring. >> > > > > >> > > > > What could be point where i can set the >> > values in >> > > > portlet application >> > > > > session-scoped spring bean. For example >> > writing >> > > > listner kind of thing. Is >> > > > > jet speed providing some thing...a entry >> > point to >> > > > Portlet application? >> > > > > >> > > > > Thanks >> > > > > >> > > > > >> > > > > On Fri, Mar 4, 2011 at 11:14 AM, anyz <[email protected]> >> > > > wrote: >> > > > > >> > > > >> Thats right. Woonsan thank you very much >> > for your >> > > > time and effort. It >> > > > >> helped me a lot to come out of this >> > hard >> > > > situation. >> > > > >> >> > > > >> Thanks >> > > > >> >> > > > >> >> > > > >> On Thu, Mar 3, 2011 at 11:46 PM, Woonsan >> > Ko <[email protected]> >> > > > wrote: >> > > > >> >> > > > >>> As you already know, Jetspeed uses >> > shared >> > > > interfaces/classes if anything >> > > > >>> should be shared among applications. >> > For this >> > > > reason, jetspeed-api and >> > > > >>> jetspeed-commons jar files are >> > deployed into >> > > > the shared class path (e.g. >> > > > >>> $CATALINA_HOME/lib) >> > > > >>> >> > > > >>> Woonsan >> > > > >>> >> > > > >>> >> > > > >>> --- On Thu, 3/3/11, anyz <[email protected]> >> > > > wrote: >> > > > >>> >> > > > >>> > From: anyz <[email protected]> >> > > > >>> > Subject: Re: Storing Custom >> > Object in >> > > > Session on User Login >> > > > >>> > To: "Jetspeed Users List" >> > <[email protected]> >> > > > >>> > Date: Thursday, March 3, 2011, >> > 11:35 AM >> > > > >>> > Since the authenticated >> > Subject >> > > > that >> > > > >>> > was set in session by Portal >> > > > >>> > Application (jetspeed.war) is >> > availabel >> > > > in all portlet >> > > > >>> > applications. How did >> > > > >>> > it work and can't i make my >> > custom calass >> > > > behave >> > > > >>> > similarly. >> > > > >>> > >> > > > >>> > Thanks >> > > > >>> > >> > > > >>> > On Thu, Mar 3, 2011 at 3:21 PM, >> > anyz >> > > > <[email protected]> >> > > > >>> > wrote: >> > > > >>> > >> > > > >>> > > Now portlet development >> > contain lots >> > > > of >> > > > >>> > challenges...As i stated >> > actually i >> > > > >>> > > want to set a custom class >> > (say >> > > > MySessionClass) into >> > > > >>> > session. With security >> > > > >>> > > valve i have to have that >> > class in >> > > > jar file that >> > > > >>> > contains custom security >> > > > >>> > > valve and placed in >> > portal >> > > > application jetspeed. >> > > > >>> > > >> > > > >>> > > While getting this >> > attribute from my >> > > > portlet >> > > > >>> > application i have that >> > > > >>> > > MySessionClass in portlet >> > > > application classpath. Now >> > > > >>> > casting the session >> > > > >>> > > attribute to this causes >> > > > ClassCastException becuase >> > > > >>> > two classes are loaded >> > > > >>> > > by JVM from differnt >> > locations. >> > > > >>> > > >> > > > >>> > > One possible way could be >> > to place >> > > > the MySessionClass >> > > > >>> > in soem common lib or >> > > > >>> > > application server >> > (Tomcat) where >> > > > both portal and >> > > > >>> > portlet application can >> > > > >>> > > access it. But i wonder >> > how people >> > > > achieve this >> > > > >>> > behaviour...ins'nt there >> > > > >>> > > some more simple way. >> > > > >>> > > >> > > > >>> > > On Thu, >> > Mar 3, 2011 >> > > > at 12:12 PM, anyz >> > > > >>> > <[email protected]> >> > > > >>> > wrote: >> > > > >>> > > >> > > > >>> > >> Thank you woonsan, it >> > worked >> > > > like a charm. >> > > > >>> > >> >> > > > >>> > >> >> > > > >>> > >> On Thu, Mar 3, 2011 at >> > 4:36 AM, >> > > > Woonsan Ko <[email protected]> >> > > > >>> > wrote: >> > > > >>> > >> >> > > > >>> > >>> In your custom >> > valve, you >> > > > may have set an >> > > > >>> > attribute in an http session >> > of >> > > > >>> > >>> the portal >> > application. >> > > > >>> > >>> Now, you're trying >> > to get >> > > > the attribute in an >> > > > >>> > http session of a portlet >> > > > >>> > >>> application. Http >> > sessions >> > > > are not shared >> > > > >>> > between web applications. >> > > > >>> > >>> So, you can try >> > this from >> > > > your portlet code >> > > > >>> > with Jetspeed API to get >> > > > >>> > >>> accesses to the >> > portal >> > > > session attributes: >> > > > >>> > >>> >> > > > >>> > >>> import >> > > > >>> > >> > > > org.apache.jetspeed.request.RequestContext; >> > > > >>> > >>> >> > > > >>> > >>> RequestContext rc >> > = >> > > > (RequestContext) >> > > > >>> > >>> >> > > > >>> > >> > > > >> > portletRequest.getAttribute(RequestContext.REQUEST_PORTALENV); >> > > > >>> > >>> Object attr = >> > > > >>> > >> > > > rc.getSessionAttribute("some-attribute-name"); >> > > > >>> > >>> >> > > > >>> > >>> >> > > > >>> > >>> Woonsan >> > > > >>> > >>> >> > > > >>> > >>> --- On Wed, >> > 3/2/11, anyz >> > > > <[email protected]> >> > > > >>> > wrote: >> > > > >>> > >>> >> > > > >>> > >>> > From: anyz >> > <[email protected]> >> > > > >>> > >>> > Subject: Re: >> > Storing >> > > > Custom Object in >> > > > >>> > Session on User Login >> > > > >>> > >>> > To: "Jetspeed >> > Users >> > > > List" <[email protected]> >> > > > >>> > >>> > Date: >> > Wednesday, March >> > > > 2, 2011, 2:59 PM >> > > > >>> > >>> > I used >> > to get >> > > > session in valve as >> > > > >>> > >>> > >> > > > requestContext.getRequest().getSession() >> > > > >>> > >>> > and then set >> > attribute >> > > > in session. >> > > > >>> > However i am not able to >> > > > >>> > >>> > get this >> > > > >>> > >>> > attribute in >> > portlet >> > > > JSP page from >> > > > >>> > HttpSession or >> > > > >>> > >>> > >> > PortletSession. This >> > > > seems >> > > > >>> > >>> > to be same >> > problem as >> > > > given in another >> > > > >>> > thread at >> > > > >>> > >>> > >> > > > >>> >> http://permalink.gmane.org/gmane.comp.jakarta.jetspeed.user/23626 >> > > > >>> > >>> > >> > > > >>> > >>> > Probably if i >> > could set >> > > > the attribute in >> > > > >>> > portletsession and >> > > > >>> > >>> > with >> > > > >>> > >>> > >> > APPLICATION_SCOPE that >> > > > may be available. >> > > > >>> > But its not >> > > > >>> > >>> > possibel to >> > get >> > > > portlet >> > > > >>> > >>> > session in >> > valve. >> > > > >>> > >>> > >> > > > >>> > >>> > >> > > > >>> > >>> > >> > > > >>> > >>> > >> > > > >>> > >>> > >> > > > >>> > >>> > On Wed, Mar >> > 2, 2011 at >> > > > 5:54 PM, anyz >> > > > >>> > <[email protected]> >> > > > >>> > >>> > wrote: >> > > > >>> > >>> > >> > > > >>> > >>> > > In >> > custom security >> > > > valve if i set an >> > > > >>> > attribute in >> > > > >>> > >>> > session. >> > Later i 'm >> > > > not >> > > > >>> > >>> > > able to >> > get this >> > > > attribute in >> > > > >>> > portlet JSP page. It is >> > > > >>> > >>> > always >> > > > >>> > >>> > > NULL. >> > Application >> > > > is deployed on >> > > > >>> > Tomcat and already >> > > > >>> > >>> > have set >> > > > >>> > >>> > > >> > > > crossContext="true". Does the >> > > > >>> > session get overridden >> > > > >>> > >>> > somewhere? >> > > > >>> > >>> > > >> > > > >>> > >>> > > Thanks >> > > > >>> > >>> > > >> > > > >>> > >>> > >> > > > > On Wed, Mar 2, 2011 >> > > > >>> > at 3:59 PM, anyz >> > > > >>> > >>> > <[email protected]> >> > > > >>> > >>> > wrote: >> > > > >>> > >>> > > >> > > > >>> > >>> > >> I >> > think i got >> > > > it...added the >> > > > >>> > custom valve in >> > > > >>> > >>> > default >> > jetspeed >> > > > pipeline >> > > > >>> > >>> > >> that >> > is in the >> > > > following bean: >> > > > >>> > >>> > >> >> > > > >>> > >>> > >> >> > <bean >> > > > >>> > >> > id="jetspeed-pipeline"......../> >> > > > >>> > >>> > >> >> > > > >>> > >>> > >> It >> > is added >> > > > after <ref >> > > > >>> > >>> > >> > > > bean="loginValidationValve" /> in >> > > > >>> > constructor >> > > > >>> > >>> > >> >> > argument list. >> > > > Now subject and >> > > > >>> > everything is >> > > > >>> > >>> > available.] >> > > > >>> > >>> > >> >> > > > >>> > >>> > >> Is >> > this >> > > > correct way to do >> > > > >>> > things? >> > > > >>> > >>> > >> >> > > > >>> > >>> > >> >> > > > >>> > >>> > >> >> > > > >>> > >>> > >> >> > > > >>> > >>> > >> On >> > Wed, Mar 2, >> > > > 2011 at 3:37 PM, >> > > > >>> > anyz <[email protected]> >> > > > >>> > >>> > wrote: >> > > > >>> > >>> > >> >> > > > >>> > >>> > >>> >> > I added >> > > > custom valve in >> > > > >>> > "login-pipeline" bean >> > > > >>> > >>> > defined in >> > > > pipelines.xml >> > > > >>> > >>> > >>> >> > that is >> > > > probably not right >> > > > >>> > place to do. >> > > > >>> > >>> > >>> >> > > > >>> > >>> > >>> >> > > > >>> > >>> > >>> >> > > > >>> > >>> > >>> >> > On Wed, >> > > > Mar 2, 2011 at 3:10 >> > > > >>> > PM, anyz <[email protected]> >> > > > >>> > >>> > wrote: >> > > > >>> > >>> > >>> >> > > > >>> > >>> > >> > >>>> I >> > > > implemented my custom >> > > > >>> > valve by extending >> > > > >>> > >>> > >> > AbstractSecurityValve. >> > > > The >> > > > >>> > >>> > >> > >>>> >> > > > documentation says this >> > > > >>> > valve >> > > > >>> > >>> > >> > "Authenticates the user >> > > > or redirects to >> > > > >>> > Login >> > > > >>> > >>> > >> > >>>> if >> > > > necessary, adds the >> > > > >>> > authenticated >> > > > >>> > >>> > Subject to >> > the >> > > > RequestContext." >> > > > >>> > >>> > >> > >>>> >> > > > However in the invoke() >> > > > >>> > method as i try to >> > > > >>> > >>> > get subject >> > from >> > > > request >> > > > >>> > >>> > >> > >>>> >> > > > context its always >> > > > >>> > NULL. >> > > > >>> > >>> > >> > >>>> >> > > > >>> > >>> > >> > >>>> My >> > > > understanding is this >> > > > >>> > valve invokes >> > > > >>> > >>> > login module >> > to >> > > > authenticate user >> > > > >>> > >>> > >> > >>>> and >> > > > once authentication >> > > > >>> > done it sets teh >> > > > >>> > >>> > subject in >> > request >> > > > context. I have >> > > > >>> > >>> > >> > >>>> called >> > > > the >> > > > >>> > super.invoke(rc,vc) in my >> > > > >>> > >>> > custom valve >> > but >> > > > subject is always >> > > > >>> > >>> > >> > >>>> NULL. >> > > > >>> > >>> > >> > >>>> >> > > > >>> > >>> > >> > >>>> Could >> > > > you please guide >> > > > >>> > what am i missing? >> > > > >>> > >>> > >> > >>>> >> > > > >>> > >>> > >> > >>>> >> > > > Thanks >> > > > >>> > >>> > >> > >>>> >> > > > >>> > >>> > >> > >>>> >> > > > >>> > >>> > >> > >>>> >> > > > >>> > >>> > >> > >>>> On >> > > > Wed, Mar 2, 2011 at >> > > > >>> > 4:17 AM, Woonsan Ko >> > > > >>> > >>> > <[email protected]> >> > > > >>> > >>> > wrote: >> > > > >>> > >>> > >> > >>>> >> > > > >>> > >>> > >> > >>>>> >> > > > >>> > >>> > >> > >>>>> >> > > > --- On Tue, 3/1/11, >> > > > >>> > anyz <[email protected]> >> > > > >>> > >>> > wrote: >> > > > >>> > >>> > >> > >>>>> >> > > > >>> > >>> > >> > >>>>> >> > > > > From: anyz >> > > > >>> > <[email protected]> >> > > > >>> > >>> > >> > >>>>> >> > > > > Subject: >> > > > >>> > Storing Custom Object in >> > > > >>> > >>> > Session on >> > User Login >> > > > >>> > >>> > >> > >>>>> >> > > > > To: "Jetspeed >> > > > >>> > Users List" <[email protected]> >> > > > >>> > >>> > >> > >>>>> >> > > > > Date: Tuesday, >> > > > >>> > March 1, 2011, >> > > > >>> > >>> > 6:49 AM >> > > > >>> > >>> > >> > >>>>> >> > > > > I need to set a >> > > > >>> > custom class >> > > > >>> > >>> > object >> > > > >>> > >>> > >> > >>>>> >> > > > > into session >> > > > >>> > once user logged >> > > > >>> > >>> > into >> > > > >>> > >>> > >> > >>>>> >> > > > > Jetspeed. This >> > > > >>> > object will be >> > > > >>> > >>> > accessed and >> > used later >> > > > by >> > > > >>> > >>> > >> > >>>>> >> > > > > portlets. >> > > > >>> > After >> > > > >>> > >>> > >> > >>>>> >> > > > > searching into >> > > > >>> > email list and >> > > > >>> > >>> > forum i found >> > two ways >> > > > of >> > > > >>> > >>> > >> > >>>>> >> > > > > intercepting >> > > > >>> > J2 >> > > > >>> > >>> > >> > >>>>> >> > > > > login process: >> > > > >>> > >>> > >> > >>>>> >> > > > > >> > > > >>> > >>> > >> > >>>>> >> > > > > 1- Custom Login >> > > > >>> > Module >> > > > >>> > >>> > >> > >>>>> >> > > > > 2- Custom >> > > > >>> > Security Valve and >> > > > >>> > >>> > possibly >> > Filter (not >> > > > sure if >> > > > >>> > >>> > >> > >>>>> >> > > > > Filter works >> > > > >>> > in >> > > > >>> > >>> > >> > >>>>> >> > > > > Jetspeed 2.2.1 >> > > > >>> > or its for old >> > > > >>> > >>> > version) >> > > > >>> > >>> > >> > >>>>> >> > > > > >> > > > >>> > >>> > >> > >>>>> >> > > > > I manged to >> > > > >>> > plug my custom login >> > > > >>> > >>> > module >> > however i could >> > > > not >> > > > >>> > >>> > >> > >>>>> >> > > > > find a way to >> > > > >>> > >>> > >> > >>>>> >> > > > > get session in >> > > > >>> > login() method and >> > > > >>> > >>> > set my custom >> > class >> > > > >>> > >>> > >> > >>>>> >> > > > > object into >> > > > >>> > session. >> > > > >>> > >>> > >> > >>>>> >> > > > > Is it possible >> > > > >>> > to get HttpSession >> > > > >>> > >>> > in custom >> > login >> > > > module? >> > > > >>> > >>> > >> > >>>>> >> > > > >>> > >>> > >> > >>>>> It >> > > > is not possible >> > > > >>> > to access >> > > > >>> > >>> > HttpSession >> > in a JAAS >> > > > LoginModule. >> > > > >>> > >>> > >> > >>>>> >> > > > >>> > >>> > >> > >>>>> >> > > > > >> > > > >>> > >>> > >> > >>>>> >> > > > > If i have write >> > > > >>> > security valve, >> > > > >>> > >>> > do i also >> > need some >> > > > sort of >> > > > >>> > >>> > >> > >>>>> >> > > > > Serverlt >> > > > >>> > filter >> > > > >>> > >>> > >> > >>>>> >> > > > > where i can set >> > > > >>> > custom object >> > > > >>> > >>> > into >> > session. >> > > > >>> > >>> > >> > >>>>> >> > > > >>> > >>> > >> > >>>>> >> > > > You don't need a >> > > > >>> > servlet filter if you >> > > > >>> > >>> > use a custom >> > security >> > > > valve. >> > > > >>> > >>> > >> > >>>>> >> > > > Servlet filter such >> > > > >>> > as >> > > > >>> > >>> > >> > PoralLoginFilter is >> > > > enabled/used only for >> > > > >>> > some >> > > > >>> > >>> > >> > >>>>> >> > > > environment like WAS >> > > > >>> > instead of >> > > > >>> > >>> > Jetspeed >> > JAAS >> > > > LoginModule. >> > > > >>> > >>> > >> > >>>>> >> > > > >>> > >>> > >> > >>>>> >> > > > >>> > >>> > >> > >>>>> >> > > > Woonsan >> > > > >>> > >>> > >> > >>>>> >> > > > >>> > >>> > >> > >>>>> >> > > > > >> > > > >>> > >>> > >> > >>>>> >> > > > > >> > > > >>> > >>> > >> > >>>>> >> > > > > Thanks >> > > > >>> > >>> > >> > >>>>> >> > > > > >> > > > >>> > >>> > >> > >>>>> >> > > > >>> > >>> > >> > >>>>> >> > > > >>> > >>> > >> > >>>>> >> > > > >>> > >>> > >> > >>>>> >> > > > >>> > >>> > >> > >>>>> >> > > > >>> > >>> > >> > > > >>> > >> > > > >> > --------------------------------------------------------------------- >> > > > >>> > >>> > >> > >>>>> To >> > > > unsubscribe, >> > > > >>> > e-mail: >> > > > >>> > >>> [email protected] >> > > > >>> > >>> > >> > >>>>> >> > > > For additional >> > > > >>> > commands, e-mail: >> > > > >>> > >>> [email protected] >> > > > >>> > >>> > >> > >>>>> >> > > > >>> > >>> > >> > >>>>> >> > > > >>> > >>> > >> > >>>> >> > > > >>> > >>> > >>> >> > > > >>> > >>> > >> >> > > > >>> > >>> > > >> > > > >>> > >>> > >> > > > >>> > >>> >> > > > >>> > >>> >> > > > >>> > >>> >> > > > >>> > >>> >> > > > >>> > >>> >> > > > >>> > >> > > > >> > --------------------------------------------------------------------- >> > > > >>> > >>> To unsubscribe, >> > e-mail: >> > > > >>> [email protected] >> > > > >>> > >>> For additional >> > commands, >> > > > e-mail: >> > > > >>> [email protected] >> > > > >>> > >>> >> > > > >>> > >>> >> > > > >>> > >> >> > > > >>> > > >> > > > >>> > >> > > > >>> >> > > > >>> >> > > > >>> >> > > > >>> >> > > > >>> >> > > > >> > --------------------------------------------------------------------- >> > > > >>> To unsubscribe, e-mail: >> [email protected] >> > > > >>> For additional commands, e-mail: >> > > [email protected] >> > > > >>> >> > > > >>> >> > > > >> >> > > > > >> > > > >> > > >> > > >> > > >> > > >> > > >> > --------------------------------------------------------------------- >> > > To unsubscribe, e-mail: [email protected] >> > > For additional commands, e-mail: >> [email protected] >> > > >> > > >> > >> >> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> >> >
