javax.naming.NameNotFoundException

2024-05-11

我正在 JBoss 5 容器中运行 ejb 示例。我正在使用一个例子从这里开始(第一部分) http://www.roseindia.net/jboss/jboss_3.2.shtml.
在示例中,我在 JBoss 中部署了 bean,并在 Tomcat 中部署了一个应用程序(以从 JBoss 访问 bean)。我在 tomcat 服务器的屏幕上收到错误消息
javax.naming.NameNotFoundException:greetJndi 未绑定

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

Thanks


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

这意味着 jndi 名称没有绑定任何内容greetJndi,很可能是因为部署问题质量极低本教程的内容(检查服务器日志)。我会回来讨论这个。

JBoss 中部署有什么特定的目录结构吗?

内部结构ejb-jar应该是这样的(使用糟糕的命名约定和默认包如上述链接所示):



.
├── greetBean.java
├── greetHome.java
├── greetRemote.java
└── META-INF
    ├── ejb-jar.xml
    └── jboss.xml
  

但正如已经提到的,本教程充满了错误:

  • 有一个额外的字符(<enterprise-beans>]ejb-jar.xml (!)
  • 之后缺少一个空格PUBLIC in the ejb-jar.xml and jboss.xml (!!)
  • the jboss.xml是不正确的,它应该包含session元素而不是entity (!!!)

这是一个“固定”版本ejb-jar.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>

而其中的jboss.xml:

<?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'
  

该教程需要重大改进;我建议远离roseindia.net。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javax.naming.NameNotFoundException 的相关文章

随机推荐