Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用@EJB注入或在Servlet筛选器中每次执行查找_Java_Jakarta Ee_Orm_Ejb 3.0 - Fatal编程技术网

Java 使用@EJB注入或在Servlet筛选器中每次执行查找

Java 使用@EJB注入或在Servlet筛选器中每次执行查找,java,jakarta-ee,orm,ejb-3.0,Java,Jakarta Ee,Orm,Ejb 3.0,我想将EJB(本地)注入Servlet过滤器,EAR部署在WebLogic11g上 我的问题是: @EJB注释应该在Weblogic 11g上工作还是被忽略? 或 我必须按如下方式查找并提及web.xml和weblogic xml文件中的引用: Hashtable env = new Hashtable(); env.put( Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory" ); Context c

我想将EJB(本地)注入Servlet过滤器,EAR部署在WebLogic11g上

我的问题是:

@EJB注释应该在Weblogic 11g上工作还是被忽略? 或 我必须按如下方式查找并提及web.xml和weblogic xml文件中的引用:

Hashtable env = new Hashtable();
env.put( Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory" );
Context ctx = new InitialContext( env );
ctx.lookup( "myejb" );

谢谢

我只想支持以下内容

更多重新参考:

远程和本地接口

    @Remote
    public interface IPersonEAORemote {
        public void show();
    }

    @Local
    public interface IPersonEAOLocal {
        public void show();
    }
EJB Bean

    @Stateless(name = "PersonEAO", mappedName = "PersonEAO")
    public class PersonEAOBean implements IPersonEAORemote, IPersonEAOLocal {
        /* if you use JPA
        @PersistenceContext(name = "EJB_DEMO")
        private EntityManager em;
        */

        public void show() {
            System.out.println("Good Luck!");
        }
    }
简单客户端

    public class Client {
        private IPersonEAORemote personEAO;

        private void init() {
            try {
                final Context context = getInitialContext();
                personEAO = (IPersonEAORemote)context.lookup("PersonEAO#<your package name>.IPersonEAORemote");
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }

        private static Context getInitialContext() throws NamingException {
            Hashtable env = new Hashtable();
            // WebLogic Server 10.x connection details
            env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
            env.put(Context.PROVIDER_URL, "t3://127.0.0.1:7101");
            return new InitialContext(env);
        }


        public void show() {
            personEAO.show());
        }

        public static void main(String[] args) {
            Client client = new Client();
            client.init();
            client.show();
        }
    }
对于JBoss5:

    Context.INITIAL_CONTEXT_FACTORY ---> org.jnp.interfaces.NamingContextFactory
    Context.PROVIDER_URL ---->http://localhost:1099

我问这个问题是因为当我使用@EJB时,它会抛出NPE,如果我真的查找它,那么它就可以正常工作。对不起,我在这里提供的信息很少。使用者使用要注入Servlet过滤器中的EJB本地接口,EAR部署在WebLogic11g上。在Servlet过滤器中注入的@EJB注释应该在Weblogic 11g上工作,还是像我在文章中提到的那样进行查找?
    Context.INITIAL_CONTEXT_FACTORY ---> org.jnp.interfaces.NamingContextFactory
    Context.PROVIDER_URL ---->http://localhost:1099