2323import javax .enterprise .inject .Default ;
2424import javax .enterprise .inject .spi .Bean ;
2525import javax .enterprise .inject .spi .BeanManager ;
26- import javax .enterprise .inject .spi .CDI ;
2726import javax .enterprise .util .AnnotationLiteral ;
27+ import javax .naming .InitialContext ;
28+ import javax .naming .NamingException ;
29+
2830import org .apache .ibatis .session .SqlSessionFactory ;
2931
3032/**
@@ -37,14 +39,27 @@ private CDIUtils() {
3739 // this class cannot be instantiated
3840 }
3941
42+ /**
43+ * Gets a CDI BeanManager instance
44+ *
45+ * @return BeanManager instance
46+ */
47+ private static BeanManager getBeanManager () {
48+ try {
49+ return InitialContext .doLookup ("java:comp/BeanManager" );
50+ } catch (NamingException e ) {
51+ throw new RuntimeException (e );
52+ }
53+ }
54+
4055 /**
4156 * Gets the registry.
4257 *
4358 * @param creationalContext the creational context
4459 * @return the registry
4560 */
4661 public static SqlSessionManagerRegistry getRegistry (CreationalContext creationalContext ) {
47- final BeanManager beanManager = CDI . current (). getBeanManager ();
62+ final BeanManager beanManager = getBeanManager ();
4863 Iterator <Bean <?>> beans = beanManager .getBeans (SqlSessionManagerRegistry .class ).iterator ();
4964 return (SqlSessionManagerRegistry ) beanManager .getReference (beans .next (), SqlSessionManagerRegistry .class ,
5065 creationalContext );
@@ -60,7 +75,7 @@ public static SqlSessionManagerRegistry getRegistry(CreationalContext creational
6075 */
6176 public static SqlSessionFactory findSqlSessionFactory (String name , Set <Annotation > qualifiers ,
6277 CreationalContext creationalContext ) {
63- final BeanManager beanManager = CDI . current (). getBeanManager ();
78+ final BeanManager beanManager = getBeanManager ();
6479 Set <Bean <?>> beans ;
6580 if (name != null ) {
6681 beans = beanManager .getBeans (name );
0 commit comments