【问题标题】:EJB not deployed on JBoss AS 5.0.xEJB 未部署在 JBoss AS 5.0.x 上
【发布时间】:2012-12-11 12:09:21
【问题描述】:

我试图从我正在阅读的有关 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 中我也根本看不到远程/MailerEJB Bean。

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

有人可以帮帮我吗?

【问题讨论】:

  • java.naming.factory.url.pkgs 设置为org.jboss.naming.client 有帮助吗?

标签: jboss ejb


【解决方案1】:

首先你要确定 EJB 已经正确部署在 JBoss 中并且绑定了它的名字,所以如果你在 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 的具体说明。

【讨论】:

  • 好吧,我确定我的 EJB 没有部署,正如我所说,我在 jmx-console 和 jboss 服务器日志中都没有看到它。
  • 在这种情况下,问题实际上并不在于对 EJB 的远程访问,而在于 EJB 本身。当您部署 EJB 时,您应该在日志文件中看到一些内容,至少是错误。您能否检查日志文件中的部署错误?
  • 这就是问题所在,我的日志中绝对没有关于这个 EJB 的内容。 pastebin.com/ehGUCbp7 。似乎这些注释被完全忽略了。
  • 是的,在日志中它没有显示任何 EJB 部署。您如何部署 ear/jar,将其放在部署目录中?它叫什么名字?顺便说一句,我认为这不是您问题的真正原因,但是您正在使用 OpenJDK1.7 运行 JBoss,请记住 JBoss 5.x 已获得官方认证,可以在 JDK 1.6 上运行。
  • 我认为这是问题的核心——部署方式。我按照教程进行操作,并通过 JBDS 进行部署。创建项目时,我未选中“将项目添加到耳朵”和“创建 ejb 客户端 jar 模块以保存客户端接口和类”。然后我简单地将项目添加到服务器,并通过单击它并选择“完整发布”选项来部署它。然后简单地“启动” jboss 服务器,项目就被部署了。但是没有 EJB。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-21
  • 2011-10-20
相关资源
最近更新 更多