java - Ejb3 GlassFish - JNDI 查找在 SerialContext 中失败 - NameNotFoundException

标签 java jakarta-ee ejb-3.0 glassfish-3

我正在使用 EJB3、GlassFish 3.0.1 和 eclipse helios

我有一个远程EJB

@Stateless (mappedName="TestBean")
public class TestBean implements TestBeanRemote {
public int add(int a, int b){
return a+b;
}
}

和远程接口(interface)

@Remote
public interface TestBeanRemote {
    public int add(int a, int b);
}

应用程序.xml

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:application="http://java.sun.com/xml/ns/javaee/application_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd" id="Application_ID" version="6">
  <application-name>ear.proj</application-name>
  <display-name>ear.proj</display-name>
  <module>
    <web>
      <web-uri>war.proj</web-uri>
      <context-root>/war</context-root>
    </web>
  </module>
  <module>
    <ejb>ejb.proj.jar</ejb>
  </module>
</application>

我有一个空的 sun-ejb-jar.xml 并且我没有定义 ejb-jar.xml 因为我读到它自 EJB3 以来是可选的 我将我的 EJB 与 WEB 一起放在 EAR 中

我试图在 POJO 类中调用这个 EJB

InitialContext ic = new InitialContext();
ic.lookup("java:global/ear.proj/ejb.proj/TestBean");

我得到以下异常 javax.naming.NamingException:在 SerialContext 中查找 java:global/ear.proj/ejb.proj/TestBean' 失败 [根异常是 javax.naming.NameNotFoundException: ear.proj]

我猜问题出在我的 EAR 中的 EJB 设置中,正如 GlassFish EJB FAQ 中所说,每个可移植的全局 JNDI 名称在部署期间都打印到 server.log,而我在日志

相反,我可以看到以下内容 信息:在应用程序包中找不到模块 ejb.proj.ejb.jar

有什么我想念的吗?

最佳答案

确保如果您正在部署 EJB 项目,您会在 server.log 中收到有关此的通知

INFO: Portable JNDI names for EJB ${EJB_Name}: 
INFO: Glassfish-specific (Non-portable) JNDI names for EJB ${EJB_Name}:

在那里你会看到上下文路径。

PS 为了查看这些日志,根据配置,您可能需要更改记录器设置,甚至您将被迫浏览服务器上的 server.log 文件。

关于java - Ejb3 GlassFish - JNDI 查找在 SerialContext 中失败 - NameNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9375468/

相关文章:

java - 在 TomCat 上运行的 POI 导致违反加载程序约束

jakarta-ee - WebSphere Portal : name space bindings. 如何获取变量?

java - 我如何开始使用 EJB3 和 JBoss?

java - EJB3 Weblogic 10.3.6 JNDI 查找

java - Android服务尚未绑定(bind)

java - 任何 Java IDE 中的文件 "rollback"

Java垃圾收集器

java - Spring Autowiring 自动检测

java - 将 EJB3 注入(inject)基于注释的 JSF2 支持 bean 导致 javax.naming.NameNotFoundException :

java - 我应该为我的业务层使用 EJB3 还是 Spring?