javax.naming.NameNotFoundException

javax.naming.NameNotFoundException,java,jboss,jakarta-ee,ejb-3.0,jndi,Java,Jboss,Jakarta Ee,Ejb 3.0,Jndi,我正在运行一个使用JBoss5容器的ejb示例。我正在举一个例子 . 在这个示例中,我在JBoss中部署了bean,在Tomcat中部署了一个应用程序(从JBoss访问bean)。我在tomcat服务器的屏幕上看到错误 javax.naming.NameNotFoundException:greetJndi未绑定 (greetJndi是jboss.xml文件中的jndi名称) JBoss中是否有要部署的特定目录结构 谢谢,这个错误意味着您正在尝试查找未连接到任何EJB组件的JNDI名称-具有该名

我正在运行一个使用JBoss5容器的ejb示例。我正在举一个例子 .
在这个示例中,我在JBoss中部署了bean,在Tomcat中部署了一个应用程序(从JBoss访问bean)。我在tomcat服务器的屏幕上看到错误
javax.naming.NameNotFoundException:greetJndi未绑定

(greetJndi是jboss.xml文件中的jndi名称) JBoss中是否有要部署的特定目录结构


谢谢,这个错误意味着您正在尝试查找未连接到任何EJB组件的JNDI名称-具有该名称的组件不存在

就dir结构而言:您必须使用EJB组件创建一个JAR文件。据我所知,您希望使用EJB2.X组件(至少链接的示例表明),因此JAR文件的结构应该是:

/com/mypackage/MyEJB.class /com/mypackage/MyEJBInterface.class /com/mypackage/etc。。。等java类 /META-INF/ejb-jar.xml /META-INF/jboss.xml

JAR文件或多或少是ZIP文件,文件扩展名从ZIP更改为JAR

顺便说一句,如果您使用JBoss5,您可以使用EJB3.0,这更容易配置。最简单的组件是

@Stateless(mappedName="MyComponentName")
@Remote(MyEJBInterface.class)
public class MyEJB implements MyEJBInterface{
   public void bussinesMethod(){

   }
}
不需要ejb-jar.xml,只需要带有MyEJB和MyEJBInterface编译类的ejb-jar

现在,您需要在客户端代码中查找“MyComponentName”

我收到错误(…)javax.naming.NameNotFoundException:greetJndi未绑定

这意味着没有任何东西绑定到jndi名称
greetJndi
,这很可能是因为本教程的质量极低(请查看服务器日志)导致的部署问题。我会回来的

JBoss中是否有要部署的特定目录结构

ejbjar
的内部结构应该是这样的(使用糟糕的命名约定和默认包,如前面提到的链接所示):

以及
jboss.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
  <enterprise-beans>
    <session>
      <ejb-name>greetBean</ejb-name>
      <home>greetHome</home>
      <remote>greetRemote</remote>
      <ejb-class>greetBean</ejb-class>
      <session-type>Stateless</session-type>
      <transaction-type>Container</transaction-type>
    </session>
  </enterprise-beans>
</ejb-jar>
<?xml version="1.0"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 3.2//EN" "http://www.jboss.org/j2ee/dtd/jboss_3_2.dtd">
<jboss>
  <enterprise-beans>
    <session>
      <ejb-name>greetBean</ejb-name>
      <jndi-name>greetJndi</jndi-name>
    </session>
  </enterprise-beans>
</jboss>

鹰嘴豆
格里特基尼
在完成这些更改并重新打包ejb jar之后,我成功地部署了它:

21:48:06,512 INFO [Ejb3DependenciesDeployer] Encountered deployment AbstractVFSDeploymentContext@5060868{vfszip:/home/pascal/opt/jboss-5.1.0.GA/server/default/deploy/greet.jar/} 21:48:06,534 INFO [EjbDeployer] installing bean: ejb/#greetBean,uid19981448 21:48:06,534 INFO [EjbDeployer] with dependencies: 21:48:06,534 INFO [EjbDeployer] and supplies: 21:48:06,534 INFO [EjbDeployer] jndi:greetJndi 21:48:06,624 INFO [EjbModule] Deploying greetBean 21:48:06,661 WARN [EjbModule] EJB configured to bypass security. Please verify if this is intended. Bean=greetBean Deployment=vfszip:/home/pascal/opt/jboss-5.1.0.GA/server/default/deploy/greet.jar/ 21:48:06,805 INFO [ProxyFactory] Bound EJB Home 'greetBean' to jndi 'greetJndi' 21:48:06512信息[Ejb3DependenciesDeployer]遇到部署问题AbstractVFSDeploymentContext@5060868{vfszip:/home/pascal/opt/jboss-5.1.0.GA/server/default/deploy/greet.jar/} 21:48:06534信息[EjbDeployer]安装bean:ejb/#greetBean,uid19981448 21:48:06534具有依赖项的信息[EjbDeployer]: 21:48:06534信息[EjbDeployer]和供应品: 21:48:06534信息[EjbDeployer]jndi:greetJndi 21:48:06624信息[EjbModule]正在部署greetBean 21:48:06661警告[EjbModule]配置为绕过安全性的EJB。请验证是否有意这样做。Bean=greetBean部署=vfszip:/home/pascal/opt/jboss-5.1.0.GA/server/default/deploy/greet.jar/ 21:48:06805信息[ProxyFactory]将EJB主“greetBean”绑定到jndi“greetJndi” 该教程需要显著改进;我建议远离roseindia.net。

你能帮我写这篇文章吗: 21:48:06,512 INFO [Ejb3DependenciesDeployer] Encountered deployment AbstractVFSDeploymentContext@5060868{vfszip:/home/pascal/opt/jboss-5.1.0.GA/server/default/deploy/greet.jar/} 21:48:06,534 INFO [EjbDeployer] installing bean: ejb/#greetBean,uid19981448 21:48:06,534 INFO [EjbDeployer] with dependencies: 21:48:06,534 INFO [EjbDeployer] and supplies: 21:48:06,534 INFO [EjbDeployer] jndi:greetJndi 21:48:06,624 INFO [EjbModule] Deploying greetBean 21:48:06,661 WARN [EjbModule] EJB configured to bypass security. Please verify if this is intended. Bean=greetBean Deployment=vfszip:/home/pascal/opt/jboss-5.1.0.GA/server/default/deploy/greet.jar/ 21:48:06,805 INFO [ProxyFactory] Bound EJB Home 'greetBean' to jndi 'greetJndi'