⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jndiinjector.java

📁 This book shows you how to use JBoss to develop EJB projects.
💻 JAVA
字号:
package com.titan.interceptors;

import java.lang.reflect.*;
import com.titan.annotations.JndiInjected;
import javax.ejb.*;
import javax.interceptor.*;
import javax.naming.*;
import javax.annotation.PostConstruct;

public class JndiInjector {

   @PostConstruct
   public void jndiInject(InvocationContext invocation) {
      Object target = invocation.getBean();
      Field[] fields = target.getClass().getDeclaredFields();
      Method[] methods = target.getClass().getDeclaredMethods();

      // find all @JndiInjected fields methods and set them
      try {
         InitialContext ctx = new InitialContext();
         for (Method method : methods) {
            JndiInjected inject = method.getAnnotation(JndiInjected.class);
            if (inject != null) {
               Object obj = ctx.lookup(inject.value());
               method.setAccessible(true);
               method.invoke(target, obj);
            }
         }
         for (Field field : fields) {
            JndiInjected inject = field.getAnnotation(JndiInjected.class);
            if (inject != null) {
               Object obj = ctx.lookup(inject.value());
               field.setAccessible(true);
               field.set(target, obj);
            }
         }
         invocation.proceed();
      } catch (Exception ex) {
         throw new EJBException("Failed to execute @JndiInjected", ex);
      }
   }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -