EJB未作为5.0.x部署在JBoss上

EJB未作为5.0.x部署在JBoss上,jboss,ejb,Jboss,Ejb,Im试图从Im阅读的关于JBoss 5(JBoss AS 5 DevelopmentSet)的书中构建一个示例,但是,即使是直接从书中获得的代码也无法工作 这是我的界面: @Remote public interface Mailer { public void sendMail(String aToEmailAddr, String aSubject, String aBody); } 这是实现此接口的EJB @Stateles

Im试图从Im阅读的关于JBoss 5(JBoss AS 5 DevelopmentSet)的书中构建一个示例,但是,即使是直接从书中获得的代码也无法工作

这是我的界面:

@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控制台中,我也无法看到远程/mailerejbbean

Im使用jboss-5.0.1.GA+JBDS+Java1.7.0


有人能帮我一下吗?

首先,您必须确保EJB在JBoss中正确部署,以及它所提供的绑定名称,因此如果您在JMX控制台的JNDIView中看不到bean,那么这肯定是一个部署问题。为了确保它被正确部署,您可以在部署EJB时检查JBoss日志(您可以使用EJB jar或ear),查找类似以下内容的行:

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 {... }

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

是否将
Java.naming.factory.url.pkgs
设置为
org.jboss.naming.client
帮助?我确定我的EJB没有部署,正如我所说的,我在jmx控制台和jboss服务器日志中都没有看到它。在这种情况下,问题并不在于对EJB的远程访问,而是EJB本身。部署EJB时,您应该在日志文件中看到一些内容,至少是错误。您能检查日志文件中的部署错误吗?这就是问题所在,我的日志中完全没有关于此EJB的内容。这些注释似乎被完全忽略了。是的,在日志中它没有显示任何EJB部署。如何部署ear/jar,将其放置在deploy目录中?它叫什么名字?顺便说一句,我不认为这是问题的真正原因,但是您正在使用OpenJDK1.7运行JBoss,请记住JBoss 5.x已经正式认证可以在JDK 1.6上运行。我认为这是问题的核心——部署方式。我遵循了教程,并通过JBDS部署了它。在创建项目时,我没有选中“将项目添加到ear”和“创建ejb客户机jar模块以保存客户机接口和类”。然后,我简单地将项目添加到服务器,并通过单击它并选择“完全发布”选项来部署它。然后简单地“启动”jboss服务器并部署项目。但是没有EJB。