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

使用多个EJB引用部署ear web应用程序时发生Glassfish错误

易招
2023-03-14

错误:

Exception while deploying the app [ociumfinal-ear] : Cannot resolve reference [Local ejb-ref name=net.ocium.ociumapp.modelo.ModeloApp/eventoEjb,Local 3.x interface =com.eventos.EventoFacadeLocal,ejb-link=null,lookup=,mappedName=,jndi-name=,refType=Session] because there are [2] ejbs in the application with interface com.eventos.EventoFacadeLocal. 

类ModeloApp:

public class ModeloApp {

private List<Evento> listEventEjb;
private List<GranEvento> listGranEvenEjb;
private List<Promocion> listPromocionEjb;
private EventBus eventBus;
private static String CHANNEL = "/app/";

@EJB
private EventoFacadeLocal eventoEjb;
@EJB
private GranEventoFacadeLocal granEventoEjb;
@EJB
private PromocionFacadeLocal promocionEjb;
@EJB
private QuedadaFacadeLocal quedadaEjb;
@EJB
private UsuarioFacadeLocal usuarioEjb;
@EJB
private PersonaFacadeLocal personaEjb;
@EJB
private ImagenFacadeLocal imagenEjb;
@EJB
private ProvinciaFacadeLocal provinciaEjb;
@EJB
private PoblacionFacadeLocal poblacionEjb;
@EJB
private BbddFacadeLocal bbddEjb;
@EJB
private EventoUsuarioFacadeLocal eventoUsuarioEjb;
@EJB
private EventoMensajeFacadeLocal eventoMensajeEjb;
@EJB
private QuedadaUsuarioFacadeLocal quedadaUsuarioEjb;
@EJB
private ConversacionFacadeLocal conversacionEjb;
@EJB
private RoomFacadeLocal roomEjb;
@EJB
private PropuestaQuedadaFacadeLocal propuestaQuedadaEjb;


@Inject
private ServletContext ctx;

public ModeloApp() {

}

public String dameListQuedadas() {

    return null;
}

public String dameListEvenHoy(String city) {
    String resultado = "Prueba correcta"; 
    city = (String)fromString(city);
    try {
        Context ctx = new InitialContext();///ocium-web-1.0-SNAPSHOT/
        eventoEjb = (EventoFacadeLocal) ctx.lookup("java:global/ocium-web/EventoFacade!com.eventos.EventoFacadeLocal");
        listEventEjb = new ArrayList<>();
        listEventEjb = eventoEjb.findByFechaHoyProvincia(dameProvinciaDesdeCity(city));
        resultado = "Contexto creado correcta size es:" + listEventEjb.size();
    } catch (NamingException ex) {
        Logger.getLogger(ModeloApp.class.getName()).log(Level.SEVERE, null, ex);
        System.out.println("kkkkk" + ex.getMessage());
    }
    ListEvenHoy listado = new ListEvenHoy();
    listado.setListadoEventos(listEventEjb);
    resultado = toString(listado);
    return resultado;
}

接口EventOfacade.java(第一行,它真的很大):

@Stateless
public class EventoFacade extends AbstractFacade<Evento> implements 
EventoFacadeLocal {

@PersistenceContext(unitName = "com.eventos_ocium-ejb_ejbPU")
private EntityManager em;

@Override
protected EntityManager getEntityManager() {
    return em;
}

public EventoFacade() {
    super(Evento.class);
}

@Override
public List<Evento> findByFechaHoy() {
    Date dateToday = new Date();
    Calendar tomorrow = Calendar.getInstance();
    tomorrow.add(Calendar.DAY_OF_YEAR, +1);
    tomorrow.set(Calendar.HOUR_OF_DAY, 0);
    tomorrow.set(Calendar.MINUTE, 0);
    tomorrow.set(Calendar.SECOND, 1);
    Date dateTomorrow = tomorrow.getTime();
    TypedQuery<Evento> consultaEventos = em.createNamedQuery("Evento.findByFechaHoy", Evento.class);
    consultaEventos.setParameter("today", dateToday, TemporalType.TIMESTAMP);
    consultaEventos.setParameter("tomorrow", dateTomorrow, TemporalType.TIMESTAMP);
    List<Evento> lista = consultaEventos.getResultList();
    return lista;
}

@Override
public List<Evento> findByFechaHoyProvincia(Provincia provinciaId) {
    Date dateToday = new Date();
    Calendar tomorrow = Calendar.getInstance();
    tomorrow.add(Calendar.DAY_OF_YEAR, +1);
    tomorrow.set(Calendar.HOUR_OF_DAY, 0);
    tomorrow.set(Calendar.MINUTE, 0);
    tomorrow.set(Calendar.SECOND, 1);
    Date dateTomorrow = tomorrow.getTime();
    TypedQuery<Evento> consultaEventos = em.createNamedQuery("Evento.findByFechaHoyProvincia", Evento.class);
    consultaEventos.setParameter("today", dateToday, TemporalType.TIMESTAMP);
    consultaEventos.setParameter("tomorrow", dateTomorrow, TemporalType.TIMESTAMP);
    consultaEventos.setParameter("provinciaId", provinciaId);
    List<Evento> lista = consultaEventos.getResultList();
    return lista;
}
@EJB(beanName="EventoFacade")
private EventoFacadeLocal eventoEjb;
@EJB(beanName="EventoFacade")
private GranEventoFacadeLocal granEventoEjb;
@EJB(beanName="EventoFacade")
private PromocionFacadeLocal promocionEjb;
@EJB(beanName="EventoFacade")
private QuedadaFacadeLocal quedadaEjb;
@EJB(beanName="EventoFacade")
private UsuarioFacadeLocal usuarioEjb;
@EJB(beanName="EventoFacade")
private PersonaFacadeLocal personaEjb;
@EJB(beanName="EventoFacade")
private ImagenFacadeLocal imagenEjb;
@EJB(beanName="EventoFacade")
private ProvinciaFacadeLocal provinciaEjb;
@EJB(beanName="EventoFacade")
private PoblacionFacadeLocal poblacionEjb;
@EJB(beanName="EventoFacade")
private BbddFacadeLocal bbddEjb;
@EJB(beanName="EventoFacade")
private EventoUsuarioFacadeLocal eventoUsuarioEjb;
@EJB(beanName="EventoFacade")
private EventoMensajeFacadeLocal eventoMensajeEjb;
@EJB(beanName="EventoFacade")
private QuedadaUsuarioFacadeLocal quedadaUsuarioEjb;
@EJB(beanName="EventoFacade")
private ConversacionFacadeLocal conversacionEjb;
@EJB(beanName="EventoFacade")
private RoomFacadeLocal roomEjb;
@EJB(beanName="EventoFacade")
private PropuestaQuedadaFacadeLocal propuestaQuedadaEjb;
Exception while deploying the app [ociumfinal-ear] : Warning : Unable to determine local  business vs. remote business designation for  EJB 3.0 ref Local ejb-ref name=net.ocium.ociumapp.modelo.ModeloApp/granEventoEjb,Local 3.x interface =com.eventos.GranEventoFacadeLocal,ejb-link=EventoFacade,lookup=,mappedName=,jndi-name=,refType=Session
<glassfish-ejb-jar>
<security-role-mapping>
<role-name>ADMINISTRATIVO</role-name>
<group-name>ADMINISTRATIVO</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>COMERCIAL</role-name>
<group-name>COMERCIAL</group-name>
<group-name>GERENCIA</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>CLIENTE</role-name>
<group-name>CLIENTE</group-name>
<group-name>GERENCIA</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>USUARIO</role-name>
<group-name>USUARIO</group-name>
<group-name>CLIENTE</group-name>
<group-name>COMERCIAL</group-name>
<group-name>ADMINISTRATIVO</group-name>
<group-name>COLABORADOR</group-name>
<group-name>GERENCIA</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>COLABORADOR</role-name>
<group-name>COLABORADOR</group-name>
<group-name>GERENCIA</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>GERENCIA</role-name>
<group-name>GERENCIA</group-name>
</security-role-mapping>
<enterprise-beans>
<ejb>
  <ejb-name>AcreedorFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/AcreedorFacade</jndi-name>
</ejb>
<ejb>
  <ejb-name>AnuncioFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/AnuncioFacade</jndi-name>
</ejb>
<ejb>
  <ejb-name>ClienteFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/ClienteFacade</jndi-name>
</ejb>
<ejb>
  <ejb-name>ContactoFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/ContactoFacade</jndi-name>
</ejb>
<ejb>
  <ejb-name>ContactoUsuarioFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/ContactoUsuarioFacadeLocal</jndi- 
name>
</ejb>
<ejb>
  <ejb-name>EmpleadoFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/EmpleadoFacade</jndi-name>
</ejb>
<ejb>
  <ejb-name>EventoFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/EventoFacade</jndi-name>
</ejb>
<ejb>
  <ejb-name>EventoMensajeFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/EventoMensajeFacade</jndi-name>
</ejb>
<ejb>
  <ejb-name>EventoUsuarioFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/EventoUsuarioFacade</jndi-name>
</ejb>
<ejb>
  <ejb-name>GranEventoFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/GranEventoFacade</jndi-name>
</ejb>
<ejb>
  <ejb-name>GrupoFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/Grupo</jndi-name>
</ejb>
<ejb>
  <ejb-name>ImagenFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/ImagenFacade</jndi-name>
</ejb>
<ejb>
  <ejb-name>NegocioFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/NegocioFacade</jndi-name>
</ejb>
<ejb>
  <ejb-name>PersonaFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/PersonaFacade</jndi-name>
</ejb>
<ejb>
  <ejb-name>PoblacionFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/PoblacionFacade</jndi-name>
</ejb>
<ejb>
  <ejb-name>PromocionFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/PromocionFacade</jndi-name>
</ejb>
<ejb>
  <ejb-name>VideoFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/VideoFacade</jndi-name>
</ejb>
<ejb>
  <ejb-name>UsuarioGrupoFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/UsuarioGrupoFacade</jndi-name>
</ejb>
<ejb>
  <ejb-name>UsuarioFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/UsuarioFacade</jndi-name>
  <ejb-ref>
    <ejb-ref-name>ejb_ref1</ejb-ref-name>
  </ejb-ref>
</ejb>
<ejb>
  <ejb-name>QuedadaUsuarioFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/QuedadaUsuarioFacade</jndi-name>
</ejb>
<ejb>
  <ejb-name>QuedadaFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/QuedadaFacade</jndi-name>
</ejb>
<ejb>
  <ejb-name>PropuestaQuedadaFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/PropuestaQuedadaFacade</jndi-name>
</ejb>
<ejb>
  <ejb-name>ProveedorFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/ProveedorFacade</jndi-name>
</ejb>
<ejb>
  <ejb-name>ProvinciaFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/ProvinciaFacade</jndi-name>
</ejb>
<ejb>
  <ejb-name>SeccionFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/SeccionFacade</jndi-name>
</ejb>
<ejb>
  <ejb-name>ConversacionFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/ConversacionFacadeLocal</jndi-name>
</ejb>
<ejb>
  <ejb-name>RoomFacade</ejb-name>
  <jndi-name>java:global/ocium-ejb/RoomFacadeLocal</jndi-name>
</ejb>
</enterprise-beans>
 </glassfish-ejb-jar>

感谢任何帮助

共有1个答案

麹鸿煊
2023-03-14

一个限定符注释将解决这一问题。

https://docs.oracle.com/javaee/6/tutorial/doc/gjbck.html

基本上,创建一个注释来区分您想要注入的实例,并使用匹配的限定符来注释实现。链接的教程应该能让你开始。

 类似资料:
  • 我需要你帮忙。我在一个需要velocity库的EJB中工作,但是当我部署和运行EJB时,抛出了一个异常:java.lang.noClassDefoundError:org/apache/commons/collections/extendedProperties 我不明白为什么。当我直接在会话Bean中使用该类时,没有任何问题。但是当这个类从Velocity实例化时,我会收到异常 我尝试将库声明为

  • 我正在使用以下内容: NetBeans IDE 7.3(构建:201306052037) Java:1.7.0_17;Java热点(TM)64位服务器VM 23.7-b01 NetBeans集成GlassFish服务器开源版3.1.2.2(构建5) 我用NetBeans创建了一个RESTful Web服务,并将其部署在NetBeans下,效果良好。 因此,我将生成的.war文件复制到另一台机器,该

  • 我知道Spring Boot应用程序可以作为war文件部署到生产环境中。但是部署spring boot应用程序的典型方式是什么?它只需要jvm而不需要容器吗?

  • 我想部署两个应用程序foo。war和条形图。war到同一个Tomcat实例。他们是否可以侦听不同端口上的连接,例如,foo侦听端口81,bar侦听端口82?如果是,我如何配置?我意识到应用程序没有必要监听不同的端口,但这正是我想要实现的。 此外,如果我将重命名为,使其在根上下文中运行,那么对该Tomcat实例的所有请求都将由foo应用程序处理,因此bar必须部署到单独的Tomcat实例,这是否正确

  • 我进去的时候 $git推送heroku master 它显示: 错误:已给出双重要求:telegram(from-r/tmp/build_996aa7e0/requirements.txt(第60行))(已在telegram==0.0.1(from-r/tmp/build_996aa7e0/requirements.txt(第47行))中,name='telegram') 这是所有日志: 枚举对象

  • 我想在同一个主机上部署两个不同的django应用程序:第一个对应于url/site1,第二个对应于url/site2。这是我的配置: 这是两个应用程序的wsgi.py文件 现在,我的问题来了。当我转到服务器时,假设http://app1.sites.gr/site1它有时加载site1,有时加载site2!!!!我访问时也是如此http://app1.sites.gr/site2 ... 有时我会