35 * container. The method annotated with PreDestroy is typically used to |
35 * container. The method annotated with PreDestroy is typically used to |
36 * release resources that it has been holding. This annotation MUST be |
36 * release resources that it has been holding. This annotation MUST be |
37 * supported by all container managed objects that support PostConstruct |
37 * supported by all container managed objects that support PostConstruct |
38 * except the application client container in Java EE 5. The method on which |
38 * except the application client container in Java EE 5. The method on which |
39 * the PreDestroy annotation is applied MUST fulfill all of the following |
39 * the PreDestroy annotation is applied MUST fulfill all of the following |
40 * criteria:<ul> |
40 * criteria: |
41 * <li>The method MUST NOT have any parameters except in the case of EJB |
41 * <p> |
42 * interceptors in which case it takes an InvocationContext object as defined |
42 * <ul> |
43 * by the EJB specification.</li> |
43 * <li>The method MUST NOT have any parameters except in the case of |
44 * <li>The return type of the method MUST be void.</li> |
44 * interceptors in which case it takes an InvocationContext object as |
45 * <li>The method MUST NOT throw a checked exception.</li> |
45 * defined by the Interceptors specification.</li> |
|
46 * <li>The method defined on an interceptor class MUST HAVE one of the |
|
47 * following signatures: |
|
48 * <p> |
|
49 * void <METHOD>(InvocationContext) |
|
50 * <p> |
|
51 * Object <METHOD>(InvocationContext) throws Exception |
|
52 * <p> |
|
53 * <i>Note: A PreDestroy interceptor method must not throw application |
|
54 * exceptions, but it may be declared to throw checked exceptions including |
|
55 * the java.lang.Exception if the same interceptor method interposes on |
|
56 * business or timeout methods in addition to lifecycle events. If a |
|
57 * PreDestroy interceptor method returns a value, it is ignored by |
|
58 * the container.</i> |
|
59 * </li> |
|
60 * <li>The method defined on a non-interceptor class MUST HAVE the |
|
61 * following signature: |
|
62 * <p> |
|
63 * void <METHOD>() |
|
64 * </li> |
46 * <li>The method on which PreDestroy is applied MAY be public, protected, |
65 * <li>The method on which PreDestroy is applied MAY be public, protected, |
47 * package private or private.</li> |
66 * package private or private.</li> |
48 * <li>The method MUST NOT be static.</li> |
67 * <li>The method MUST NOT be static.</li> |
49 * <li>The method MAY be final.</li> |
68 * <li>The method MAY be final.</li> |
50 * <li>If the method throws an unchecked exception it is ignored except in the |
69 * <li>If the method throws an unchecked exception it is ignored except in the |
51 * case of EJBs where the EJB can handle exceptions.</li> |
70 * case of EJBs where the EJB can handle exceptions.</li> |
|
71 * </ul> |
52 * |
72 * |
53 * @see javax.annotation.PostConstruct |
73 * @see javax.annotation.PostConstruct |
54 * @see javax.annotation.Resource |
74 * @see javax.annotation.Resource |
55 * @since Common Annotations 1.0 |
75 * @since Common Annotations 1.0 |
56 */ |
76 */ |