users@jersey.java.net

[Jersey] Re: How to reject all POST/PUT/DELETE requests

From: John Yeary <johnyeary_at_gmail.com>
Date: Thu, 26 Jan 2012 09:37:58 -0500

I just saw Igor's method which looks like it may work, but requires Guice.
My suggestion does not require any external frameworks.

If you are familiar with Guice his suggestion may be the path you would
want to take.

John
____________________________

John Yeary
____________________________

<http://javaevangelist.blogspot.com/> <https://twitter.com/jyeary>
<http://www.youtube.com/johnyeary>
  <http://www.linkedin.com/in/jyeary>
<https://plus.google.com/112146428878473069965>
  <http://www.facebook.com/jyeary>
<http://feeds.feedburner.com/JavaEvangelistJohnYearysBlog>
  <http://netbeans.org/people/84414-jyeary>
____________________________

"Far better it is to dare mighty things, to win glorious triumphs, even
though checkered by failure, than to take rank with those poor spirits who
neither enjoy much nor suffer much, because they live in the gray twilight
that knows not victory nor defeat."
-- Theodore Roosevelt



On Thu, Jan 26, 2012 at 9:34 AM, Igor Skornyakov
<igor.skornyakov_at_gmail.com>wrote:

> As I wrote before there is such method. Define Guice module like that
>
> class ReadOnlyModule extends AbstractModule {
> @Override
> protected void configure() {
> MethodInterceptor blocker = new ChangeBlocker();
> bindInterceptor(Matchers.any(),
> Matchers.annotatedWith(POST.class), blocker);
> bindInterceptor(Matchers.any(), Matchers.annotatedWith(PUT.class),
> blocker);
> bindInterceptor(Matchers.any(),
> Matchers.annotatedWith(DELETE.class), blocker);
> }
>
> }
>
> Here ChangeBlocker just throws an appropriate Exception. That's it. You
> can install ot not install this module based on configuration.
>
>
> On Thu, Jan 26, 2012 at 6:27 PM, Pengfei Di <pengfei.di_at_match2blue.com>wrote:
>
>> **
>> Hi John,
>>
>> Thanks for the reply.
>> Yes, your method might be the straightest way. However, this means that I
>> have to code it hardly on many places. If I want to again allow these
>> requests, I have to recoded all these places back.
>> Hmm, I hope there would be a simpler way.
>>
>> Pengfei
>>
>>
>> On 01/26/2012 03:09 PM, John Yeary wrote:
>>
>> That is very easy. Simply configure your methods with @GET and @Produces
>> annotations. Any method like PUT, DELETE, or POST will automatically return
>> a 405 - Method Not Allowed response.
>> ____________________________
>>
>> John Yeary
>> ____________________________
>>
>> <http://javaevangelist.blogspot.com/> <https://twitter.com/jyeary> <http://www.youtube.com/johnyeary>
>> <http://www.linkedin.com/in/jyeary> <https://plus.google.com/112146428878473069965>
>> <http://www.facebook.com/jyeary> <http://feeds.feedburner.com/JavaEvangelistJohnYearysBlog>
>> <http://netbeans.org/people/84414-jyeary>
>> ____________________________
>>
>> "Far better it is to dare mighty things, to win glorious triumphs, even
>> though checkered by failure, than to take rank with those poor spirits who
>> neither enjoy much nor suffer much, because they live in the gray twilight
>> that knows not victory nor defeat."
>> -- Theodore Roosevelt
>>
>>
>>
>> On Thu, Jan 26, 2012 at 9:02 AM, Pengfei Di <pengfei.di_at_match2blue.com>wrote:
>>
>>> Hello,
>>>
>>> Is there any way to configure jersey to a read-only mode? That means
>>> only GET requests are allowed, and all POST/PUT/DELETE requests will be
>>> rejected.
>>> Thanks for any hints.
>>>
>>> Pengfei
>>>
>>>
>>
>>
>>
>