Re: t5: adding http header
Thanks!! Yep, even though java -version on command line shows 1.6, the Eclipse (right click) project --> properties --> java compiler shows using "JDK 1.5 compliance". Changed that to 1.6 and sure enough no complaints on the @Override annotation anymore. And thanks for that typo catch ;-). In fact, off-topic, but in case anyone would like to use this code, the whole expires date can be made redundant by using max-age in the HTTP request header, per RFC 2616 14.21. response.setHeader(CACHE_CTRL, "no-cache, no-store, max-age=0, must-revalidate"); Also see: http://www.mnot.net/blog/2007/05/15/expires_max-age (this also has a link to an excellent tutorial on caches - must read - basic message being cache control is probably best handled by web server, if you can control it, rather than in your application) -- View this message in context: http://tapestry.1045711.n5.nabble.com/t5-adding-http-header-tp3369097p5716463.html Sent from the Tapestry - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: t5: adding http header
you've got a typo here :) > private static final String EXPIRE_DATE = "Exprires"; s/Exprires/Expires/g i haven't tried it but may give it a go l8r, useful looking service! off topic but [1] seems relevant there is a jquery prefilter suggestion when using jquery [1] = http://stackoverflow.com/questions/12506897/is-safari-on-ios-6-caching-ajax-results On 24/09/2012, at 5:25 AM, netdawg wrote: > Wulf: Why (rather how) the @Override annotation ? I actually had to remove > it for it work. > > Anyhooo...here is the complete working example (right or wrong, not > sure)...comments welcome... > > Step 1. Created a class in your src/main/java -- SERVICES package - where > you will find AppModule.java already installed by Tapestry. In my case, I > created a class called RevalidateHTTPHeader > > package org.yourGroupId.yourArtifactId.services; > > import java.io.IOException; > > import org.apache.tapestry5.services.Request; > import org.apache.tapestry5.services.RequestFilter; > import org.apache.tapestry5.services.RequestHandler; > import org.apache.tapestry5.services.Response; > > > public class RevalidateHTTPHeader implements RequestFilter > { > > private static final String CACHE_CTRL = "Cache-Control"; > private static final String EXPIRE_DATE = "Exprires"; > > public boolean service(Request request, Response response, RequestHandler > handler) throws IOException > { >response.setHeader(CACHE_CTRL, "no-cache, no-store, must-revalidate"); >response.setHeader(EXPIRE_DATE, "Sun, 07 Dec 1941 07:55:00 GMT"); >return handler.service(request, response); > } > } > > > Step 2. Within AppModule.java, do two things - > > a. declare the following member variable > > RevalidateHTTPHeader nocache = new RevalidateHTTPHeader(); > > b. add the following within contributeRequestHandler method: > >public void contributeRequestHandler(OrderedConfiguration > configuration, > @Local > RequestFilter filter) >{ >// Each contribution to an ordered configuration has a name, When > necessary, you may >// set constraints to precisely control the invocation order of the > contributed filter >// within the pipeline. > >/// >// ADD the custom nocache HTTP header(s) > > configuration.add("NoCache", nocache); > > // > // > > >configuration.add("Timing", filter); >} > > Step 3: Run Jetty to verify/examine headers - I am using Google Chrome - > which has a free HTTP Headers extension. > http://localhost:8080/yourArtifactId/[yourPage] > > Name Extension > Content-Encoding gzip > Exprires Sun, 07 Dec 1941 07:55:00 GMT > Transfer-Encoding chunked > Server Jetty(6.1.26) > Content-Type text/html; charset=utf-8 > Cache-Controlno-cache, no-store, must-revalidate > > > > > > -- > View this message in context: > http://tapestry.1045711.n5.nabble.com/t5-adding-http-header-tp3369097p5716459.html > Sent from the Tapestry - User mailing list archive at Nabble.com. > > - > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org >
Re: t5: adding http header
"probably", not "problem", sorry. On Sun, Sep 23, 2012 at 3:36 PM, Bob Harner wrote: > If the compiler complained about @Override, you are problem using a > 1.5 JDK and Wulf (I assume) was using 1.6. > > On Sun, Sep 23, 2012 at 3:25 PM, netdawg wrote: >> Wulf: Why (rather how) the @Override annotation ? I actually had to remove >> it for it work. >> >> Anyhooo...here is the complete working example (right or wrong, not >> sure)...comments welcome... >> >> Step 1. Created a class in your src/main/java -- SERVICES package - where >> you will find AppModule.java already installed by Tapestry. In my case, I >> created a class called RevalidateHTTPHeader >> >> package org.yourGroupId.yourArtifactId.services; >> >> import java.io.IOException; >> >> import org.apache.tapestry5.services.Request; >> import org.apache.tapestry5.services.RequestFilter; >> import org.apache.tapestry5.services.RequestHandler; >> import org.apache.tapestry5.services.Response; >> >> >> public class RevalidateHTTPHeader implements RequestFilter >> { >> >> private static final String CACHE_CTRL = "Cache-Control"; >> private static final String EXPIRE_DATE = "Exprires"; >> >> public boolean service(Request request, Response response, RequestHandler >> handler) throws IOException >> { >> response.setHeader(CACHE_CTRL, "no-cache, no-store, must-revalidate"); >> response.setHeader(EXPIRE_DATE, "Sun, 07 Dec 1941 07:55:00 GMT"); >> return handler.service(request, response); >> } >> } >> >> >> Step 2. Within AppModule.java, do two things - >> >> a. declare the following member variable >> >> RevalidateHTTPHeader nocache = new RevalidateHTTPHeader(); >> >> b. add the following within contributeRequestHandler method: >> >> public void contributeRequestHandler(OrderedConfiguration >> configuration, >> @Local >> RequestFilter filter) >> { >> // Each contribution to an ordered configuration has a name, When >> necessary, you may >> // set constraints to precisely control the invocation order of the >> contributed filter >> // within the pipeline. >> >> /// >> // ADD the custom nocache HTTP header(s) >> >>configuration.add("NoCache", nocache); >> >>// >> // >> >> >> configuration.add("Timing", filter); >> } >> >> Step 3: Run Jetty to verify/examine headers - I am using Google Chrome - >> which has a free HTTP Headers extension. >> http://localhost:8080/yourArtifactId/[yourPage] >> >> Name Extension >> Content-Encodinggzip >> Exprires Sun, 07 Dec 1941 07:55:00 GMT >> Transfer-Encoding chunked >> ServerJetty(6.1.26) >> Content-Type text/html; charset=utf-8 >> Cache-Control no-cache, no-store, must-revalidate >> >> >> >> >> >> -- >> View this message in context: >> http://tapestry.1045711.n5.nabble.com/t5-adding-http-header-tp3369097p5716459.html >> Sent from the Tapestry - User mailing list archive at Nabble.com. >> >> - >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> For additional commands, e-mail: users-h...@tapestry.apache.org >> - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: t5: adding http header
If the compiler complained about @Override, you are problem using a 1.5 JDK and Wulf (I assume) was using 1.6. On Sun, Sep 23, 2012 at 3:25 PM, netdawg wrote: > Wulf: Why (rather how) the @Override annotation ? I actually had to remove > it for it work. > > Anyhooo...here is the complete working example (right or wrong, not > sure)...comments welcome... > > Step 1. Created a class in your src/main/java -- SERVICES package - where > you will find AppModule.java already installed by Tapestry. In my case, I > created a class called RevalidateHTTPHeader > > package org.yourGroupId.yourArtifactId.services; > > import java.io.IOException; > > import org.apache.tapestry5.services.Request; > import org.apache.tapestry5.services.RequestFilter; > import org.apache.tapestry5.services.RequestHandler; > import org.apache.tapestry5.services.Response; > > > public class RevalidateHTTPHeader implements RequestFilter > { > > private static final String CACHE_CTRL = "Cache-Control"; > private static final String EXPIRE_DATE = "Exprires"; > > public boolean service(Request request, Response response, RequestHandler > handler) throws IOException > { > response.setHeader(CACHE_CTRL, "no-cache, no-store, must-revalidate"); > response.setHeader(EXPIRE_DATE, "Sun, 07 Dec 1941 07:55:00 GMT"); > return handler.service(request, response); > } > } > > > Step 2. Within AppModule.java, do two things - > > a. declare the following member variable > > RevalidateHTTPHeader nocache = new RevalidateHTTPHeader(); > > b. add the following within contributeRequestHandler method: > > public void contributeRequestHandler(OrderedConfiguration > configuration, > @Local > RequestFilter filter) > { > // Each contribution to an ordered configuration has a name, When > necessary, you may > // set constraints to precisely control the invocation order of the > contributed filter > // within the pipeline. > > /// > // ADD the custom nocache HTTP header(s) > >configuration.add("NoCache", nocache); > >// > // > > > configuration.add("Timing", filter); > } > > Step 3: Run Jetty to verify/examine headers - I am using Google Chrome - > which has a free HTTP Headers extension. > http://localhost:8080/yourArtifactId/[yourPage] > > Name Extension > Content-Encodinggzip > Exprires Sun, 07 Dec 1941 07:55:00 GMT > Transfer-Encoding chunked > ServerJetty(6.1.26) > Content-Type text/html; charset=utf-8 > Cache-Control no-cache, no-store, must-revalidate > > > > > > -- > View this message in context: > http://tapestry.1045711.n5.nabble.com/t5-adding-http-header-tp3369097p5716459.html > Sent from the Tapestry - User mailing list archive at Nabble.com. > > - > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
RE: t5: adding http header
Wulf: Why (rather how) the @Override annotation ? I actually had to remove it for it work. Anyhooo...here is the complete working example (right or wrong, not sure)...comments welcome... Step 1. Created a class in your src/main/java -- SERVICES package - where you will find AppModule.java already installed by Tapestry. In my case, I created a class called RevalidateHTTPHeader package org.yourGroupId.yourArtifactId.services; import java.io.IOException; import org.apache.tapestry5.services.Request; import org.apache.tapestry5.services.RequestFilter; import org.apache.tapestry5.services.RequestHandler; import org.apache.tapestry5.services.Response; public class RevalidateHTTPHeader implements RequestFilter { private static final String CACHE_CTRL = "Cache-Control"; private static final String EXPIRE_DATE = "Exprires"; public boolean service(Request request, Response response, RequestHandler handler) throws IOException { response.setHeader(CACHE_CTRL, "no-cache, no-store, must-revalidate"); response.setHeader(EXPIRE_DATE, "Sun, 07 Dec 1941 07:55:00 GMT"); return handler.service(request, response); } } Step 2. Within AppModule.java, do two things - a. declare the following member variable RevalidateHTTPHeader nocache = new RevalidateHTTPHeader(); b. add the following within contributeRequestHandler method: public void contributeRequestHandler(OrderedConfiguration configuration, @Local RequestFilter filter) { // Each contribution to an ordered configuration has a name, When necessary, you may // set constraints to precisely control the invocation order of the contributed filter // within the pipeline. /// // ADD the custom nocache HTTP header(s) configuration.add("NoCache", nocache); // // configuration.add("Timing", filter); } Step 3: Run Jetty to verify/examine headers - I am using Google Chrome - which has a free HTTP Headers extension. http://localhost:8080/yourArtifactId/[yourPage] Name Extension Content-Encodinggzip Exprires Sun, 07 Dec 1941 07:55:00 GMT Transfer-Encoding chunked ServerJetty(6.1.26) Content-Type text/html; charset=utf-8 Cache-Control no-cache, no-store, must-revalidate -- View this message in context: http://tapestry.1045711.n5.nabble.com/t5-adding-http-header-tp3369097p5716459.html Sent from the Tapestry - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
RE: t5: adding http header
Hello Angelo, best use a request Filter. For example: public class IEStandardModeHeader implements RequestFilter { private static final String HEADER_KEY = "X-UA-Compatible"; @Override public boolean service(Request request, Response response, RequestHandler handler) throws IOException { response.setHeader(HEADER_KEY, "IE=8"); return handler.service(request, response); } } To activate the filter you need to contribute it in AppModule: public static void contributeRequestHandler( OrderedConfiguration configuration) { Configuration.add(...); } Hope this helps! Kind Regards, Wulf -Original Message- From: Angelo C. [mailto:angelochen...@gmail.com] Sent: Donnerstag, 3. Februar 2011 12:10 To: users@tapestry.apache.org Subject: t5: adding http header Hi, I need to add some http headers into response, like Access-Control-Allow-Origin: "*", how to achieve this? Thanks, Angelo -- View this message in context: http://tapestry.1045711.n5.nabble.com/t5-adding-http-header-tp3369097p3369097.html Sent from the Tapestry - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: t5: adding http header
On Thu, 03 Feb 2011 09:10:11 -0200, Angelo C. wrote: Hi, Hi! I need to add some http headers into response, like Access-Control-Allow-Origin: "*", how to achieve this? Thanks, The better way depends on which pages do you want to do this. If it's all, create a RequestFilter and use the Response's setHeader(String name, String value) method. If it's just one, @Inject Response and use the same method. -- Thiago H. de Paula Figueiredo Independent Java, Apache Tapestry 5 and Hibernate consultant, developer, and instructor Owner, Ars Machina Tecnologia da Informação Ltda. http://www.arsmachina.com.br - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org