当前位置: 首页 > 知识库问答 >
问题:

NameAlreadyBoundException使用JNDI

水麒
2023-03-14

我使用以下代码创建了一个会话bean:

package ejb2;
import javax.annotation.Resource;
import javax.ejb.SessionContext;
import javax.ejb.Stateless;

@Stateless(name = "TestEJB", mappedName = "EJB2-Project1-TestEJB")
public class TestEJBBean implements TestEJB, TestEJBLocal {
    @Resource
    SessionContext sessionContext;

    public TestEJBBean() {
    }

    public String getHello(String who_welcome) {
        return "Hello " + who_welcome;
    }
}

如您所见,它几乎是一个默认代码(除了getHello方法)。除此之外,我还有一个客户:

package ejb2;

import java.util.Hashtable;

import javax.naming.CommunicationException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class TestEJBClient {
    public static void main(String[] args) {
        try {
            final Context context = getInitialContext();
            TestEJB testEJB = (TestEJB) context.lookup("EJB2-Project1-TestEJB#ejb2.TestEJB");
            System.out.println(testEJB.getHello("Student"));
        } catch (CommunicationException ex) {
            System.out.println(ex.getClass().getName());
            System.out.println(ex.getRootCause().getLocalizedMessage());
            System.out.println("\n*** A CommunicationException was raised.  This typically\n*** occurs when the target WebLogic server is not running.\n");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    private static Context getInitialContext() throws NamingException {
        Hashtable env = new Hashtable();
        // WebLogic Server 10.x/12.x connection details
        env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
        env.put(Context.PROVIDER_URL, "t3://localhost:7101");
        return new InitialContext(env);
    }
}

第一次它像一个魅力。但后来我创建了另一个bean:

package ejb2;
import javax.annotation.Resource;
import javax.ejb.Stateless;
import javax.ejb.SessionContext;
import javax.naming.Context;
import javax.naming.InitialContext;

@Stateless(name = "ClientEJB", mappedName = "EJB2-Project1-ClientEJB")
public class ClientEJBBean implements ClientEJB, ClientEJBLocal {
    @Resource
    SessionContext sessionContext;
    TestEJB testEJB;

    public ClientEJBBean() {
        try {
            final Context context = new InitialContext();
            testEJB = (TestEJB) context.lookup("EJB2-Project1-TestEJB#ejb2.TestEJB");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    public String getHelloFromBean(String who) {
        return testEJB.getHello(who);
    }
}

现在豆子不起作用了。我得到这样一个错误:

weblogic.application.ModuleException:无法将Business Interface绑定到JNDI名称:EJB2Project1WebApp_warClientEJB_Home,抛出异常javax.naming.NameAlreadyBoundException:[EJB: 011224]无法将接口ejb2. ClientEJB绑定到ClientEJB。另一个EJB已经将接口绑定到该名称。;剩余名称“EJB2-Project1-ClientEJB#ejb2”。嵌套异常消息是:[EJB: 011224]无法将接口ejb2. ClientEJB绑定到ClientEJB。另一个EJB已经将接口绑定到该名称。

这些代码有什么问题?

共有1个答案

吴高畅
2023-03-14

据我所知,您尝试部署两个具有相同JNDI名称的无状态EJB尝试取消部署当前应用程序,从管理控制台检查JNDI树,并确保该树没有您认为重复的JNDI名称。

 类似资料:
  • 我有一个基于Java 1.6和Weblogic 10.3.6的运行应用程序。现在我正在迁移到Java 1.8和Weblogic 12cR2(12.2.1.3)。我有一个EAR文件,它构建在ANT上,部署在Weblogic中。 我已经在我的系统中安装了JDK 1.8和Weblogic 12cR2。我已经编译了我的代码库,并成功地在ANT上构建了它。生成的EAR文件没有任何错误。现在,我正试图在我最新

  • 我的应用程序目前使用WebLogic10.3和Java1.6。现在我们试图将相同的应用程序部署到WebLogic12CR2&Java1.8上,下面是我们面临的错误。

  • 有没有办法在使用 jongo 查询 MongoDB 时添加 ?我发现这样的错误 - '排序超出了 104857600 字节的内存限制,但没有选择加入外部排序。正在中止操作。传递 allowDiskUse:true 可以选择加入,可以通过以下方式阻止,您的聚合看起来像 但据我所知,Jongo 中的类仅将管道应用于自身,然后您可以使用 方法执行。 是否有任何方法可以将该参数传递给mongo而不从Jon

  • 问题内容: 我在远程服务器上有一个管理Web应用程序。该应用程序是使用MEAN堆栈编写的,我列出了连接到Web应用程序所需的所有RESTful路由。 我正在编写一个Java客户端应用程序,该应用程序需要从该管理应用程序发送和接收数据。如果我具有服务器的IP地址和REST路由,如何将客户端连接到Web应用程序? 我想我需要提供到服务器和REST API文件的URL连接,然后仅调用诸如和的路由功能。

  • 问题内容: 我使用spring数据和方法来获取模型。调用此方法时如何使用查询提示? 上面的源代码工作正常,但是我不能为我的JPA提供程序(在我的情况下为EclipseLink)设置QueryHint。 以上是我使用spring-data使用查询提示的方式, 我还发现了这个尚未解决的问题。 问题答案: 当我想使用spring-data创建查询时,请遵循上述算法。 1)是否已经提供的查询 通过弹簧数据

  • 我使用spring数据和方法获取模型。调用此方法时如何使用查询提示 上面的源代码运行良好,但我无法为我的JPA提供者(在我的例子中是EclipseLink)设置QueryHint。 我使用spring数据使用查询提示的方式如下:, 我也发现这个还没有解决。