Saya telah membaca dengan cermat artikel tentang Interceptors dalam dokumentasi Seam/Weld dan menerapkan InterceptorBinding
:
@InterceptorBinding
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface MyLog {}
dan kelas Interceptor
:
@MyLog @Interceptor
public class ErpLogInterceptor implements Serializable
{
@AroundInvoke
public Object logMethodEntry(InvocationContext invocationContext) throws Exception
{..}
@PostConstruct
public Object logPostConstruct(InvocationContext invocationContext) throws Exception
{...}
}
Tidak, saya mencoba mengaktifkan interseptor di kacang @Named @ViewScoped
:
@javax.inject.Named;
@javax.faces.bean.ViewScoped
public class MyBean implements Serializable
{
@PostConstruct @MyLog
public void init()
{...}
@MyLog public void toggleButton()
{..}
}
Jika saya menekan tombol di halaman JSF saya, metode toggleButton
dipanggil dengan benar dan metode Interceptor logMethodEntry
dipanggil. Tapi sepertinya metode @PostConstruct
(saya tertarik) tidak pernah dicegat oleh kelas saya.
Pertanyaannya sepertinya terkait dengan Java EE Interceptors dan @ViewScoped bean tetapi sebenarnya interseptor saya berfungsi normal metode.
@ViewScoped
khusus JSF jika tidak, tidak akan berfungsi di@Named
khusus CDI. - person BalusC   schedule 08.11.2012@javax.enterprise.context.SessionScoped
, tetapi tidak melakukan apa pun selama@PostConstruct
- person Thor   schedule 09.11.2012