EJB未部署在JBoss AS 5.0.x上

时间:2012-12-11 12:09:21

标签: jboss ejb

我正在尝试从阅读有关JBoss 5(JBoss AS 5 Developmet)的书中构建一个示例,但是直接来自本书的代码根本不起作用。

这是我的界面:

@Remote
public interface Mailer {

    public void sendMail(String aToEmailAddr, 
                         String aSubject, String aBody);

}

这是实现此接口的EJB

@Stateless  
@RemoteBinding(jndiBinding="remote/MailerEJB")

public  class MailerBean implements Mailer {... }

这是尝试查找bean的客户端应用程序。

public class MailClient {
     public static void main(String[] args) throws Exception
       {
          InitialContext ctx = new InitialContext();
          Mailer mailer = (Mailer) ctx.lookup("remote/MailerEJB");


       }

}

当我尝试运行MailClient类时,我得到了以下异常

Exception in thread "main" javax.naming.NameNotFoundException: remote not bound

我还有jndi.properties文件,我将其添加到构建路径中,它看起来像这样>

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=jnp://localhost:1099
java.naming.factory.url.pkgs=org.jnp.interfaces

即使在jmx-console中,我也无法看到remote / MailerEJB Bean。

我正在使用jboss-5.0.1.GA + JBDS + java 1.7.0

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

首先,您要确保在JBoss中正确部署EJB及其给出的绑定名称,因此如果您无法在JMX控制台的JNDIView中看到该bean,那肯定是部署问题。为了确保它已正确部署,您可以在部署EJB(ejb-jar或ear)时查看JBoss日志,查找类似于以下内容的行:

EJBBindingName - EJB3.x Default Remote Business Interface

在您的情况下,如果您定义的绑定是正确的,则应该是:

remote/MailerEJB - EJB3.x Default Remote Business Interface

此行表示给予EJB的真实JNDI名称,它是您在远程调用中使用的名称。

另一方面,尝试删除注释和类定义之间的界限:

@Stateless  
@RemoteBinding(jndiBinding="remote/MailerEJB")
public  class MailerBean implements Mailer {... }

此外,在this post中,您可以找到有关如何从简单的命令行Java程序远程调用EJB的具体说明。