JBOSS-EAP7什么是EJB接收器?如何让我的独立客户端应用程序提供一个?

时间:2017-01-10 20:51:17

标签: java-ee client ejb-3.0 jboss-eap-7

这是pathetic saga I presented earlier today

的延续

这里的基本问题是将古代EJB从Web Logic移植到JBoss。此bean具有必须从另一台服务器上运行的独立客户端应用程序调用的方法。

我从未解决过这个问题,但最终通过避免" ejb取得了一些进展:" JNDI命名策略。

遵循this article,其中概述了我尝试过第二种策略的3种策略," 2。远程命名项目"。本文将此描述为具有一些缺点,但可能更适合我的情况,它在从home接口调用的ejbCreate方法中执行bean初始化。遵循这个策略,我现在在查找bean之前初始化我的上下文:

        public InitialContext createInitialContext() throws NamingException {
            Properties prop = new Properties();
            prop.put(Context.INITIAL_CONTEXT_FACTORY,
                "org.jboss.naming.remote.client.InitialContextFactory");
            prop.put(Context.PROVIDER_URL, myUrl);
            prop.put(Context.SECURITY_PRINCIPAL, myUserName);
            prop.put(Context.SECURITY_CREDENTIALS, myPassword);
            prop.put("jboss.naming.client.ejb.context", true);

            return new InitialContext(prop);            
        }

无论如何,我的代码在实例化bean时不再失败,因为它使用了我正在使用的策略失败,但是当调用bean上的方法时它确实失败 - 出现以下错误:

java.lang.IllegalStateException: EJBCLIENT000027: No EJBReceiver available for node name myServerName
        at org.jboss.ejb.client.EJBClientContext.requireNodeEJBReceiver(EJBClientContext.java:904) ~[ttjd.jar:?]
        at org.jboss.ejb.client.EJBClientContext.requireNodeEJBReceiverContext(EJBClientContext.java:945) ~[ttjd.jar:?]
        at org.jboss.ejb.client.ReceiverInterceptor.handleInvocation(ReceiverInterceptor.java:68) ~[ttjd.jar:?]
        at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:186) ~[ttjd.jar:?]
        at org.jboss.ejb.client.EJBInvocationHandler.sendRequestWithPossibleRetries(EJBInvocationHandler.java:255) ~[ttjd.jar:?]
        at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:200) ~[ttjd.jar:?]
        at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:183) ~[ttjd.jar:?]
        at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:146) ~[ttjd.jar:?]
        at com.sun.proxy.$Proxy21.iAmAlive(Unknown Source) ~[?:?]
...

所以问题是"什么是EJBReceiver"我应该怎么做才能让我的客户成为一个客户?我需要在上下文中添加一些其他参数吗?

更新:将以下内容添加到createInitialContext()没有帮助:

prop.put("jboss.naming.client.endpoint.name", nameOfEjbServer);

0 个答案:

没有答案