openwebbeans-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Lars-Fredrik Smedberg <itsme...@gmail.com>
Subject Re: Interceptors and @PostConstruct methods
Date Thu, 06 Feb 2014 13:07:59 GMT
I was not able to @PostConstruct annotate a interceptor method that had a
return type and threw a checked exception, I got the following exception at
startup

@PostConstruct
 public Object postConstructMethod(InvocationContext ctx) throws Exception {

[ERROR   ] @PostConstruct annotated method : postConstructMethod in class :
shb.rinf.util.CacheInterceptor must return void type
@PostConstruct annotated method : postConstructMethod in class :
shb.rinf.util.CacheInterceptor must return void type
[ERROR   ] An error occured while starting application context path :
[/rsea]

and when i just removed the return type

@PostConstruct
public void postConstructMethod(InvocationContext ctx) throws Exception {

[ERROR   ] @PostConstruct annotated method : postConstructMethod in class :
shb.rinf.util.CacheInterceptor can not throw any checked exception
@PostConstruct annotated method : postConstructMethod in class :
shb.rinf.util.CacheInterceptor can not throw any checked exception
[ERROR   ] An error occured while starting application context path :
[/rsea]

....

My test does not run the code in the interceptor before the exception is
thrown in the target class @PostConstruct and therefor nothing is
caught....

Did I miss out on something?

Regards
Fredrik




On Thu, Feb 6, 2014 at 1:49 PM, Romain Manni-Bucau <rmannibucau@gmail.com>wrote:

> My code catches the exception of @PostConstruct method of the bean so
> i should be missing sthg
> Romain Manni-Bucau
> Twitter: @rmannibucau
> Blog: http://rmannibucau.wordpress.com/
> LinkedIn: http://fr.linkedin.com/in/rmannibucau
> Github: https://github.com/rmannibucau
>
>
>
> 2014-02-06 Lars-Fredrik Smedberg <itsmeden@gmail.com>:
> > Hi
> >
> > The reason I didn't see any calls to the target method annotated
> > @PostConstruct was that it always threw an exception (since I wanted to
> try
> > to catch that).
> > When the target method annotated @PostConstruct does not throw an
> exception
> > I see a call to the interceptors @PostConstruct method...
> >
> > I was not however able to catch any exception thrown by the
> @PostConstruct
> > method as you show in your example (I also had to remove the checked
> > exception and set void as a return type in the interceptor method to be
> able
> > to pass the verification)
> >
> > Did I misundertand you or is it not possible to catch exceptions thrown
> in
> > the @PostConstruct in the same was as exceptions thrown from a business
> > method?
> >
> > Regards
> > Fredrik
> >
> >
> >
> >
> > On Thu, Feb 6, 2014 at 12:07 PM, Romain Manni-Bucau <
> rmannibucau@gmail.com>
> > wrote:
> >>
> >> not using interceptor spec AFAIK but constructors shouldn't throw an
> >> exception, it should be in a @PostConstruct:
> >>
> >> @CatchMe
> >> @Interceptor
> >> public class Inter {
> >> @PostConstruct
> >> public Object post(final InvocationContext ic) throws Exception {
> >> System.out.println(">>> ok");
> >> System.out.println(">>> ok");
> >> System.out.println(">>> ok");
> >> System.out.println(">>> ok");
> >> try {
> >> return ic.proceed();
> >> } catch (Exception e) {
> >> e.printStackTrace();
> >> return null;
> >> }
> >> }
> >> }
> >>
> >>
> >> @CatchMe
> >> public class Foo {
> >> @PostConstruct
> >> public void Foo() {
> >> throw new RuntimeException();
> >> }
> >>
> >> public void run() {}
> >> }
> >>
> >> Romain Manni-Bucau
> >> Twitter: @rmannibucau
> >> Blog: http://rmannibucau.wordpress.com/
> >> LinkedIn: http://fr.linkedin.com/in/rmannibucau
> >> Github: https://github.com/rmannibucau
> >>
> >>
> >>
> >> 2014-02-06 Lars-Fredrik Smedberg <itsmeden@gmail.com>:
> >> > so there is no need to call ic.proceed either then?
> >> >
> >> > Is there any way to intercept the exceptions thrown from the
> >> > @PostConstruct
> >> > method in the same way I can with business methods....?
> >> >
> >> > Regards
> >> > Fredrik
> >> >
> >> >
> >> > On Thu, Feb 6, 2014 at 11:59 AM, Romain Manni-Bucau
> >> > <rmannibucau@gmail.com>
> >> > wrote:
> >> >>
> >> >> after the bean construction so it will likely not work
> >> >> Romain Manni-Bucau
> >> >> Twitter: @rmannibucau
> >> >> Blog: http://rmannibucau.wordpress.com/
> >> >> LinkedIn: http://fr.linkedin.com/in/rmannibucau
> >> >> Github: https://github.com/rmannibucau
> >> >>
> >> >>
> >> >>
> >> >> 2014-02-06 Lars-Fredrik Smedberg <itsmeden@gmail.com>:
> >> >> > Hi Romain
> >> >> >
> >> >> > Maybe I misunderstood something about the use of it... some
> >> >> > questions:
> >> >> >
> >> >> > 1. When is the interceptor method called? Before the @PostConstruct
> >> >> > method
> >> >> > of the target bean I assume?
> >> >> > 2. Do I need to call ic.proceed() for the target been method to
be
> >> >> > called?
> >> >> >
> >> >> > I'm looking for a way to intercept any runtime exceptions thrown
by
> >> >> > the
> >> >> > @PostContstruct method of the target bean.
> >> >> >
> >> >> > Regards
> >> >> > Fredrik
> >> >> >
> >> >> >
> >> >> >
> >> >> > On Thu, Feb 6, 2014 at 11:50 AM, Romain Manni-Bucau
> >> >> > <rmannibucau@gmail.com>
> >> >> > wrote:
> >> >> >>
> >> >> >> seems it works for me:
> >> >> >>
> >> >> >> @CatchMe
> >> >> >> @Interceptor
> >> >> >> public class Inter {
> >> >> >> @PostConstruct
> >> >> >> public void post(final InvocationContext ic) {
> >> >> >> System.out.println(">>> ok");
> >> >> >> System.out.println(">>> ok");
> >> >> >> System.out.println(">>> ok");
> >> >> >> System.out.println(">>> ok");
> >> >> >> }
> >> >> >> }
> >> >> >>
> >> >> >>
> >> >> >> @InterceptorBinding
> >> >> >> @Target(ElementType.TYPE)
> >> >> >> @Retention(RetentionPolicy.RUNTIME)
> >> >> >> public @interface CatchMe {
> >> >> >> }
> >> >> >>
> >> >> >>
> >> >> >> Romain Manni-Bucau
> >> >> >> Twitter: @rmannibucau
> >> >> >> Blog: http://rmannibucau.wordpress.com/
> >> >> >> LinkedIn: http://fr.linkedin.com/in/rmannibucau
> >> >> >> Github: https://github.com/rmannibucau
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >> 2014-02-06 Lars-Fredrik Smedberg <itsmeden@gmail.com>:
> >> >> >> > Hi Romain
> >> >> >> >
> >> >> >> > In the Interceptor I tried:
> >> >> >> >
> >> >> >> > @PostConstruct
> >> >> >> > public void interceptPostConstructMethod(InvocationContext
ctx)
> {
> >> >> >> >    ...
> >> >> >> > }
> >> >> >> >
> >> >> >> >
> >> >> >> > On Thu, Feb 6, 2014 at 11:08 AM, Romain Manni-Bucau
> >> >> >> > <rmannibucau@gmail.com>
> >> >> >> > wrote:
> >> >> >> >>
> >> >> >> >> Hi
> >> >> >> >>
> >> >> >> >> what's the signature you used for your @PostContruct
method?
> >> >> >> >> Romain Manni-Bucau
> >> >> >> >> Twitter: @rmannibucau
> >> >> >> >> Blog: http://rmannibucau.wordpress.com/
> >> >> >> >> LinkedIn: http://fr.linkedin.com/in/rmannibucau
> >> >> >> >> Github: https://github.com/rmannibucau
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >> 2014-02-06 Lars-Fredrik Smedberg <itsmeden@gmail.com>:
> >> >> >> >> > Hi
> >> >> >> >> >
> >> >> >> >> > When looking at
> >> >> >> >> > http://docs.oracle.com/javaee/6/tutorial/doc/gkigq.html
> >> >> >> >> > it
> >> >> >> >> > looks like I could create an Interceptor with
a method
> >> >> >> >> > annotated
> >> >> >> >> > @PostConstruct which would get called when the
annotated
> target
> >> >> >> >> > class
> >> >> >> >> > @PostConstruct  annoted method is called.
> >> >> >> >> >
> >> >> >> >> > I cannot get this to work, however an Interceptor
having a
> >> >> >> >> > method
> >> >> >> >> > annotated
> >> >> >> >> > @AroundInvoke works fine when calling business
methods in the
> >> >> >> >> > annotated
> >> >> >> >> > target class.
> >> >> >> >> >
> >> >> >> >> > Can anyone point me in the right direction to
get it to work
> >> >> >> >> > (or
> >> >> >> >> > maybe
> >> >> >> >> > tell
> >> >> >> >> > it is not supposed to work as I think it should
:))
> >> >> >> >> >
> >> >> >> >> > Regards
> >> >> >> >> > Fredrik
> >> >> >> >> >
> >> >> >> >> > --
> >> >> >> >> > Med vänlig hälsning / Best regards
> >> >> >> >> >
> >> >> >> >> > Lars-Fredrik Smedberg
> >> >> >> >> >
> >> >> >> >> > STATEMENT OF CONFIDENTIALITY:
> >> >> >> >> > The information contained in this electronic
message and any
> >> >> >> >> > attachments to this message are intended for
the exclusive
> use
> >> >> >> >> > of
> >> >> >> >> > the
> >> >> >> >> > address(es) and may contain confidential or
privileged
> >> >> >> >> > information.
> >> >> >> >> > If
> >> >> >> >> > you are not the intended recipient, please notify
> Lars-Fredrik
> >> >> >> >> > Smedberg
> >> >> >> >> > immediately at itsmeden@gmail.com, and destroy
all copies of
> >> >> >> >> > this
> >> >> >> >> > message and any attachments.
> >> >> >> >
> >> >> >> >
> >> >> >> >
> >> >> >> >
> >> >> >> > --
> >> >> >> > Med vänlig hälsning / Best regards
> >> >> >> >
> >> >> >> > Lars-Fredrik Smedberg
> >> >> >> >
> >> >> >> > STATEMENT OF CONFIDENTIALITY:
> >> >> >> > The information contained in this electronic message
and any
> >> >> >> > attachments to this message are intended for the exclusive
use
> of
> >> >> >> > the
> >> >> >> > address(es) and may contain confidential or privileged
> >> >> >> > information.
> >> >> >> > If
> >> >> >> > you are not the intended recipient, please notify Lars-Fredrik
> >> >> >> > Smedberg
> >> >> >> > immediately at itsmeden@gmail.com, and destroy all copies
of
> this
> >> >> >> > message and any attachments.
> >> >> >
> >> >> >
> >> >> >
> >> >> >
> >> >> > --
> >> >> > Med vänlig hälsning / Best regards
> >> >> >
> >> >> > Lars-Fredrik Smedberg
> >> >> >
> >> >> > STATEMENT OF CONFIDENTIALITY:
> >> >> > The information contained in this electronic message and any
> >> >> > attachments to this message are intended for the exclusive use
of
> the
> >> >> > address(es) and may contain confidential or privileged information.
> >> >> > If
> >> >> > you are not the intended recipient, please notify Lars-Fredrik
> >> >> > Smedberg
> >> >> > immediately at itsmeden@gmail.com, and destroy all copies of this
> >> >> > message and any attachments.
> >> >
> >> >
> >> >
> >> >
> >> > --
> >> > Med vänlig hälsning / Best regards
> >> >
> >> > Lars-Fredrik Smedberg
> >> >
> >> > STATEMENT OF CONFIDENTIALITY:
> >> > The information contained in this electronic message and any
> >> > attachments to this message are intended for the exclusive use of the
> >> > address(es) and may contain confidential or privileged information. If
> >> > you are not the intended recipient, please notify Lars-Fredrik
> Smedberg
> >> > immediately at itsmeden@gmail.com, and destroy all copies of this
> >> > message and any attachments.
> >
> >
> >
> >
> > --
> > Med vänlig hälsning / Best regards
> >
> > Lars-Fredrik Smedberg
> >
> > STATEMENT OF CONFIDENTIALITY:
> > The information contained in this electronic message and any
> > attachments to this message are intended for the exclusive use of the
> > address(es) and may contain confidential or privileged information. If
> > you are not the intended recipient, please notify Lars-Fredrik Smedberg
> > immediately at itsmeden@gmail.com, and destroy all copies of this
> > message and any attachments.
>



-- 
Med vänlig hälsning / Best regards

Lars-Fredrik Smedberg

STATEMENT OF CONFIDENTIALITY:
The information contained in this electronic message and any
attachments to this message are intended for the exclusive use of the
address(es) and may contain confidential or privileged information. If
you are not the intended recipient, please notify Lars-Fredrik Smedberg
immediately at itsmeden@gmail.com, and destroy all copies of this
message and any attachments.

Mime
View raw message