Overview

Configuration

Servers

Integrations

Community

Related Projects

Index

Feeds

 

Correct usage of PostConstruct, PreDestroy, PrePassivate, PostActivate, and AroundInvoke for EJBs and Interceptors.

For Stateful, Stateless, and MessageDriven, the syntax is as follows:

  • @PostConstruct <any-scope> void <method-name>()
  • @PreDestroy <any-scope> void <method-name>()
  • @PrePassivate <any-scope> void <method-name>()
  • @PostActivate <any-scope> void <method-name>()

For an Interceptor, the syntax includes InvocationContext as follows:

  • @PostConstruct <any-scope> void <method-name>(InvocationContext)
  • @PreDestroy <any-scope> void <method-name>(InvocationContext)
  • @PrePassivate <any-scope> void <method-name>(InvocationContext)
  • @PostActivate <any-scope> void <method-name>(InvocationContext)

The AroundInvoke syntax for an EJB or Interceptor is the same:

  • @AroundInvoke <any-scope> Object <method-name>(InvocationContext) throws Exception

Stateless

import javax.ejb.Stateless;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;

@Stateless
public class MyStatelessBean implements  MyBusinessInterface  {

    @PostConstruct
    public void constructed(){

    }

    @PreDestroy
    public void destroy(){

    }

    @AroundInvoke
    public Object invoke(InvocationContext invocationContext) throws Exception {
        return invocationContext.proceed();
    }
}

Stateful

import javax.ejb.Stateful;
import javax.ejb.PostActivate;
import javax.ejb.PrePassivate;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;

@Stateful
public class MyStatefulBean implements  MyBusinessInterface  {

    @PostConstruct
    public void constructed(){

    }

    @PreDestroy
    public void destroy(){

    }

    @AroundInvoke
    public Object invoke(InvocationContext invocationContext) throws Exception {
        return invocationContext.proceed();
    }

    @PostActivate
    public void activated(){

    }

    @PrePassivate
    public void passivate(){

    }
}

MessageDriven

import javax.ejb.MessageDriven;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;

@MessageDriven
public class MyMessageDrivenBean implements  MyListenerInterface  {

    @PostConstruct
    public void constructed(){

    }

    @PreDestroy
    public void destroy(){

    }

    @AroundInvoke
    public Object invoke(InvocationContext invocationContext) throws Exception {
        return invocationContext.proceed();
    }
}

Interceptor

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.interceptor.InvocationContext;
import javax.interceptor.AroundInvoke;
import javax.ejb.PostActivate;
import javax.ejb.PrePassivate;

public class MyInterceptor {

    @PostConstruct
    public void constructed(InvocationContext invocationContext){

    }

    @PreDestroy
    public void destroy(InvocationContext invocationContext){

    }

    @AroundInvoke
    public Object invoke(InvocationContext invocationContext) throws Exception {
        return invocationContext.proceed();
    }

    @PostActivate
    public void activated(InvocationContext invocationContext){

    }

    @PrePassivate
    public void passivate(InvocationContext invocationContext){

    }
}

   

Apache OpenEJB is an project of The Apache Software Foundation (ASF) - Website Privacy Policy -
Site Powered by Atlassian Confluence .
[ edit ]