aspose file tools*
The moose likes EJB Certification (SCBCD/OCPJBCD) and the fly likes Multiple postconstruct and predestroy methods. Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of JavaScript Promises Essentials this week in the JavaScript forum!
JavaRanch » Java Forums » Certification » EJB Certification (SCBCD/OCPJBCD)
Bookmark "Multiple postconstruct and predestroy methods." Watch "Multiple postconstruct and predestroy methods." New topic
Author

Multiple postconstruct and predestroy methods.

Deepak Jain
Ranch Hand

Joined: Aug 05, 2006
Posts: 637
You can have multiple PostConstruct and PreDestroy callbacks for a given bean.


PlaceBidBean has two PostConstruct callbacks initBean() and initializeBean().
Exception:
17:37:54,031 WARN [ServiceController] Problem starting service jboss.j2ee:service=EJB3,module=myEJB-ejb.jar
java.lang.RuntimeException: An exception occurred initialising interceptors for class com.ejb3inaction.actionbazaar.buslogic.PlaceBidBean.addBid
at org.jboss.ejb3.interceptor.EJB3InterceptorsFactory.createPerJoinpoint(EJB3InterceptorsFactory.java:108)
at org.jboss.aop.advice.AspectFactoryDelegator.createPerJoinpoint(AspectFactoryDelegator.java:119)
at org.jboss.aop.advice.ScopedInterceptorFactory.create(ScopedInterceptorFactory.java:113)
at org.jboss.aop.Advisor.createInterceptorChain(Advisor.java:618)
Caused by: java.lang.RuntimeException: Interceptors can only have one post-construct/@PostConstruct method - com.ejb3inaction.actionbazaar.buslogic.PlaceBidBean
at org.jboss.ejb3.interceptor.InterceptorInfo.setPostConstruct(InterceptorInfo.java:147)
at org.jboss.ejb3.interceptor.InterceptorInfoRepository$AnnotationInitialiser.getInfo(InterceptorInfoRepository.java:688)
at org.jboss.ejb3.interceptor.InterceptorInfoRepository.initialiseFromAnnotations(InterceptorInfoRepository.java:481)
at org.jboss.ejb3.interceptor.InterceptorInfoRepository.getOrInitialiseFromAnnotations(InterceptorInfoRepository.java:466)

1) Why multiple callbacks are not allowed for stateless session bean?
2) I dont understand why the exception has "Interceptors" words. I have just used a plain stateless session bean as shown in the code.
Please clarify.
What about PreDestroy, PrePassivate and PostActivate callbacks?
3) Is the book incorrect?


SCJP, SCWCD, SCBCD
LakshmiNarayana Kodali
Greenhorn

Joined: Oct 30, 2008
Posts: 16
You can have mutiple callbacks for a given bean.It is correct.

But the condition is you cannot define mutiple callback methods for a single lifecycle event in a Single bean class


Ex. In the above example, you mentioned 2 callback methods initBean() and initializeBean() for a PostConstuct event in 1 bean class PlcaeBidBean. This is wrong


However you can remove the one of the postConstruct methods and can put it in bean superclass or also in Bean Interceptor classes so that both methods will be called.

Simply to say, atmost 1 lifecycle callback method should be declared for each lifecycle event in each class ( it can be bean class or its super class or its interceptor class)


2. Lifecycle callback methods are also called as lifecycle callback interceptor methods.
I think because of that the exception has "Interceptors" words. Not sure

3. EJB3 in Action is really good book for EJB3 beginners. The authors did an excellent work.
The points mentioned by the authors are from the Specs only.
But there are few concepts which they need to explain clearly.

I looked at the questions raised by you. Really good. I'm also looking for answers for some questions. Let's see

-------------------------------------
LakshmiNarayana Kodali
SCJP 5(98%), SCWCD(100%), SCBCD in progress
Deepak Jain
Ranch Hand

Joined: Aug 05, 2006
Posts: 637

EJB3 in Action is really good book for EJB3 beginners. The authors did an excellent work. The points mentioned by the authors are from the Specs only.
But there are few concepts which they need to explain clearly.


Please don't get me wrong. I highly appreciate their work. Infact am reading EJB in Action to understand about EJB. Before reading the book i had 0 knowledge on EJB.
Marcin Faryna
Greenhorn

Joined: Jul 16, 2009
Posts: 15
Yes in "EJB in Action" (2007) is written "Note that you can have multiple PostConstruct and PreDestroy callbacks for a given bean (although this is seldom used) in a class or in a separate interceptor class (discussed in chapter 5)." . Which can direct to the false assumption that in single class definition you can have more then one @PostConstruct and @PreDestroy annotated method.

SCJP 6, SCBCD 5
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Multiple postconstruct and predestroy methods.