title: JavaEE 6: javax.naming.NameAlreadyBoundException: Use rebind to override
body: <p>I have a business interface being implemented by two EJBs.</p>
  
  <p><strong>UserManagementService</strong> </p>
  
  <pre><code>@Remote
  public interface UserManagementService {
      // ...
  }
  </code></pre>
  
  <p><strong>UserManagementServiceJpaImpl</strong></p>
  
  <pre><code>@Stateless(name="userManagementServiceJpaImpl")
  public class UserManagementServiceJpaImpl implements UserManagementService {
  
      @EJB(beanName="userManagementDaoJpaImpl")
      private UserManagementDao userManagementDao;
  
      // ...
  }
  </code></pre>
  
  <p><strong>UserManagementServiceMockImpl</strong> </p>
  
  <pre><code>@Stateless(name="userManagementServiceMockImpl")
  public class UserManagementServiceMockImpl implements UserManagementService {   
  
      @EJB(beanName="userManagementDaoMockImpl")
      private UserManagementDao userManagementDao;
  
      // ...
  
  }
  </code></pre>
  
  <p>When I deploy the application to Glassfish 3.1 I get the following error:</p>
  
  <pre><code>java.lang.RuntimeException: Error while binding JNDI name com.transbinary.imdb.service.UserManagementService for EJB : userManagementServiceMockImpl
      at com.sun.ejb.containers.BaseContainer.initializeHome(BaseContainer.java:1550)
      at com.sun.ejb.containers.StatelessSessionContainer.initializeHome(StatelessSessionContainer.java:202)
      at com.sun.ejb.containers.ContainerFactoryImpl.createContainer(ContainerFactoryImpl.java:167)
      at org.glassfish.ejb.startup.EjbApplication.loadContainers(EjbApplication.java:234)
      at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:290)
      at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:101)
      at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:186)
      at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:249)
      at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:460)
      at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
      at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:370)
      at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:360)
      at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:370)
      at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1067)
      at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:96)
      at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1247)
      at org.glassfish.deployment.autodeploy.AutoOperation.run(AutoOperation.java:145)
      at org.glassfish.deployment.autodeploy.AutoDeployer.deploy(AutoDeployer.java:577)
      at org.glassfish.deployment.autodeploy.AutoDeployer.deployAll(AutoDeployer.java:463)
      at org.glassfish.deployment.autodeploy.AutoDeployer.run(AutoDeployer.java:395)
      at org.glassfish.deployment.autodeploy.AutoDeployer.run(AutoDeployer.java:380)
      at org.glassfish.deployment.autodeploy.AutoDeployService$1.run(AutoDeployService.java:213)
      at java.util.TimerThread.mainLoop(Timer.java:512)
      at java.util.TimerThread.run(Timer.java:462)
  Caused by: javax.naming.NameAlreadyBoundException: Use rebind to override
      at com.sun.enterprise.naming.impl.TransientContext.doBindOrRebind(TransientContext.java:333)
      at com.sun.enterprise.naming.impl.TransientContext.bind(TransientContext.java:268)
      at com.sun.enterprise.naming.impl.SerialContextProviderImpl.bind(SerialContextProviderImpl.java:98)
      at com.sun.enterprise.naming.impl.LocalSerialContextProviderImpl.bind(LocalSerialContextProviderImpl.java:99)
      at com.sun.enterprise.naming.impl.SerialContext.bind(SerialContext.java:672)
      at com.sun.enterprise.naming.impl.SerialContext.bind(SerialContext.java:689)
      at javax.naming.InitialContext.bind(InitialContext.java:404)
      at javax.naming.InitialContext.bind(InitialContext.java:404)
      at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.publishObject(GlassfishNamingManagerImpl.java:208)
      at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.publishObject(GlassfishNamingManagerImpl.java:189)
      at com.sun.ejb.containers.BaseContainer$JndiInfo.publish(BaseContainer.java:5608)
      at com.sun.ejb.containers.BaseContainer.initializeHome(BaseContainer.java:1535)
      ... 23 more
  </code></pre>
  
  <p>Could someone help me understand why am I getting this error and how to resolve it?</p>