users@jersey.java.net

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

From: Igor Skornyakov <igor.skornyakov_at_gmail.com>
Date: Thu, 26 Jan 2012 18:48:21 +0400

That's correct. Actually any AOP frameworks will work. In fact I think that
this is the most natural approach as the problem looks like a textbook
example of cross-cutting concern.
Regards,
Igor.


On Thu, Jan 26, 2012 at 6:37 PM, John Yeary <johnyeary_at_gmail.com> wrote:

> 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
>>>>
>>>>
>>>
>>>
>>>
>>
>