部署 ear Web 应用程序时出现 Glassfish 错误
Glassfish error while deploying ear web application
几周来我一直在处理这个错误,我从来没有使用过 java 网络应用程序,所以我真的迷失了。
我的设置是:
- 玻璃鱼 5.0
- Netbeans IDE 8.2
- Java 8 更新 181(64 位)
- Java10.0.2(64 位)
- Java SE 开发套件 8 更新 181(64 位)
- Java(TM) SE 开发套件 10.0.2(64 位)
错误如下:
Grave: Exception while deploying the app [ociumfinal-ear] : Cannot resolve reference [Local ejb-ref name=chat.ChatUsers/usuarioEjb,Local 3.x interface =com.eventos.UsuarioFacadeLocal,ejb-link=null,lookup=,mappedName=,jndi-name=,refType=Session] because there are [2] ejbs in the application with interface com.eventos.UsuarioFacadeLocal.
接口(UsuarioFacadeLocal.java):
package com.eventos;
import java.util.List;
import javax.ejb.Local;
import javax.ejb.Remote;
@Local
public interface UsuarioFacadeLocal {
void create(Usuario usuario);
void edit(Usuario usuario);
void remove(Usuario usuario);
Usuario find(Object id);
List<Usuario> findByUsuario(String usuario);
List<Usuario> findAll();
List<Usuario> findAllUsuarioCliente();
List<Usuario> findRange(int[] range);
List<Usuario> findUsuarioLosed(String email);
int count();
}
实施(UsuarioFacade.java):
package com.eventos;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
@Stateless
public class UsuarioFacade extends AbstractFacade<Usuario> implements
UsuarioFacadeLocal {
@PersistenceContext(unitName = "com.eventos_ocium-ejb_ejbPU")
private EntityManager em;
@Override
protected EntityManager getEntityManager() {
return em;
}
public UsuarioFacade() {
super(Usuario.class);
}
@Override
public List<Usuario> findAll(){
TypedQuery<Usuario> consultaUsuario= em.createNamedQuery("Usuario.findAll", Usuario.class);
List<Usuario> lista= consultaUsuario.getResultList();
return lista;
}
@Override
public List<Usuario> findAllUsuarioCliente(){
TypedQuery<Usuario> consultaUsuario= em.createNamedQuery("Usuario.findAllUsuarioCliente", Usuario.class);
List<Usuario> lista= consultaUsuario.getResultList();
return lista;
}
@Override
public List<Usuario> findByUsuario(String usuario) {
TypedQuery<Usuario> consultaUsuario= em.createNamedQuery("Usuario.findByUsuario", Usuario.class);
consultaUsuario.setParameter("usuario", usuario);
List<Usuario> lista= consultaUsuario.getResultList();
return lista;
}
@Override
public List<Usuario> findUsuarioLosed(String email){
TypedQuery<Usuario> consultaUsuario= em.createNamedQuery("Usuario.findUsuarioLosed", Usuario.class);
consultaUsuario.setParameter("email", email);
List<Usuario> lista= consultaUsuario.getResultList();
return lista;
}
}
错误本身的代码(ChatUsers.java)(相当大,但我猜它只是@EJB 的重要部分..):
package chat;
import com.eventos.Usuario;
import com.eventos.UsuarioFacadeLocal;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
@ManagedBean
@ApplicationScoped
public class ChatUsers implements Serializable {
private List<Usuario> usuariosConectados;
private List<Usuario> usuariosConectadosGeneral;
private List<Usuario> usuariosConectadosMayores;
private List<Usuario> usuariosConectadosMenores;
//(beanName = "ChatUsers")
@EJB
private UsuarioFacadeLocal usuarioEjb;
@PostConstruct
public void init() {
usuariosConectados = new ArrayList<>();
usuariosConectadosGeneral = new ArrayList<>();
usuariosConectadosMayores = new ArrayList<>();
usuariosConectadosMenores = new ArrayList<>();
}
public List<Usuario> getUsuariosConectados() {
return usuariosConectados;
}
public void setUsuariosConectados(List<Usuario> usuariosConectados) {
this.usuariosConectados = usuariosConectados;
}
public List<Usuario> getUsuariosConectadosGeneral() {
return usuariosConectadosGeneral;
}
public void setUsuariosConectadosGeneral(List<Usuario> usuariosConectadosGeneral) {
this.usuariosConectadosGeneral = usuariosConectadosGeneral;
}
public List<Usuario> getUsuariosConectadosMayores() {
return usuariosConectadosMayores;
}
public void setUsuariosConectadosMayores(List<Usuario> usuariosConectadosMayores) {
this.usuariosConectadosMayores = usuariosConectadosMayores;
}
public List<Usuario> getUsuariosConectadosMenores() {
return usuariosConectadosMenores;
}
public void setUsuariosConectadosMenores(List<Usuario> usuariosConectadosMenores) {
this.usuariosConectadosMenores = usuariosConectadosMenores;
}
public void removeUser(String user) {
usuariosConectados.remove(dameUsuario(user));
}
public void addUser(String user) {
Usuario usuario = dameUsuario(user);
boolean add = true;
for(Usuario item:usuariosConectados){
if(item.getUsuario().equals(usuario.getUsuario())){
add = false;
}
}
if(add){
usuariosConectados.add(usuario);
}
}
public boolean containsUser(String user) {
return usuariosConectados.contains(dameUsuario(user));
}
public void removeGeneralUser(String user) {
usuariosConectadosGeneral.remove(dameUsuario(user));
}
public void addGeneralUser(String user) {
Usuario usuario = dameUsuario(user);
boolean add = true;
for(Usuario item:usuariosConectadosGeneral){
if(item.getUsuario().equals(usuario.getUsuario())){
add = false;
}
}
if(add){
usuariosConectadosGeneral.add(usuario);
}
}
public boolean containsGeneralUser(String user) {
return usuariosConectadosGeneral.contains(dameUsuario(user));
}
public void removeMayorUser(String user) {
usuariosConectadosMayores.remove(dameUsuario(user));
}
public void addMayorUser(String user) {
Usuario usuario = dameUsuario(user);
boolean add = true;
for(Usuario item:usuariosConectadosMayores){
if(item.getUsuario().equals(usuario.getUsuario())){
add = false;
}
}
if(add){
usuariosConectadosMayores.add(usuario);
}
}
public boolean containsMayorUser(String user) {
return usuariosConectadosMayores.contains(dameUsuario(user));
}
public void removeMinorUser(String user) {
usuariosConectadosMenores.remove(dameUsuario(user));
}
public void addMinorUser(String user) {
Usuario usuario = dameUsuario(user);
boolean add = true;
for(Usuario item:usuariosConectadosMenores){
if(item.getUsuario().equals(usuario.getUsuario())){
add = false;
}
}
if(add){
usuariosConectadosMenores.add(usuario);
}
}
public boolean containsMinorUser(String user) {
return usuariosConectadosMenores.contains(dameUsuario(user));
}
public Usuario dameUsuario(String user){
System.out.println(">>>>>>>>>>>>>>>>>>> dame usuario");
Usuario usuario = usuarioEjb.findByUsuario(user).get(0);
System.out.println(">>>>>>>>>>>>>>>>>>> dame usuario"+usuario.getUsuario());
System.out.println(">>>>>>>>>>>>>>>>>>> dame usuario"+usuario.getClave());
return usuario;
}
}
我也试过这个 post 的解决方案:Cannot resolve reference Local ejb-ref
如果我"solve"这个界面(用上面post的解决方案)在另一个界面重复这个错误,如果我也申请这个界面return .无论如何,我不确定我能否很好地应用该解决方案。
我也尝试过将@Local 更改为@Remote 但没有成功。
在这里的任何帮助就像在沙漠中找到一片绿洲。
谢谢
编辑:
这个接口的错误似乎已经解决了,因为我喜欢@kret 的回答(和另一个 post)并将 @EJB 命名为:
@EJB(beanName="UsuarioFacade")
private UsuarioFacadeLocal usuarioEjb;
名字我写错了(必须是接口的名字)
现在它在另一个参考中给了我同样的错误:
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.
模型应用程序:
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;
}
错误是一样的,所以我试过了:
@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.xml:
<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>
真的欢迎任何想法
谢谢
编辑:
创建了一个新的 post,其中包含详细的新错误:Glassfish error while deploying ear web application with multiple EJB references
"Cannot resolve reference (...) because there are [2] ejbs in the application with interface com.eventos.UsuarioFacadeLocal"。注入有问题,容器不知道你想注入哪一个 bean。
在@EJB 注释
中删除一个实现或定义想要的 bean 的名称
几周来我一直在处理这个错误,我从来没有使用过 java 网络应用程序,所以我真的迷失了。
我的设置是:
- 玻璃鱼 5.0
- Netbeans IDE 8.2
- Java 8 更新 181(64 位)
- Java10.0.2(64 位)
- Java SE 开发套件 8 更新 181(64 位)
- Java(TM) SE 开发套件 10.0.2(64 位)
错误如下:
Grave: Exception while deploying the app [ociumfinal-ear] : Cannot resolve reference [Local ejb-ref name=chat.ChatUsers/usuarioEjb,Local 3.x interface =com.eventos.UsuarioFacadeLocal,ejb-link=null,lookup=,mappedName=,jndi-name=,refType=Session] because there are [2] ejbs in the application with interface com.eventos.UsuarioFacadeLocal.
接口(UsuarioFacadeLocal.java):
package com.eventos;
import java.util.List;
import javax.ejb.Local;
import javax.ejb.Remote;
@Local
public interface UsuarioFacadeLocal {
void create(Usuario usuario);
void edit(Usuario usuario);
void remove(Usuario usuario);
Usuario find(Object id);
List<Usuario> findByUsuario(String usuario);
List<Usuario> findAll();
List<Usuario> findAllUsuarioCliente();
List<Usuario> findRange(int[] range);
List<Usuario> findUsuarioLosed(String email);
int count();
}
实施(UsuarioFacade.java):
package com.eventos;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
@Stateless
public class UsuarioFacade extends AbstractFacade<Usuario> implements
UsuarioFacadeLocal {
@PersistenceContext(unitName = "com.eventos_ocium-ejb_ejbPU")
private EntityManager em;
@Override
protected EntityManager getEntityManager() {
return em;
}
public UsuarioFacade() {
super(Usuario.class);
}
@Override
public List<Usuario> findAll(){
TypedQuery<Usuario> consultaUsuario= em.createNamedQuery("Usuario.findAll", Usuario.class);
List<Usuario> lista= consultaUsuario.getResultList();
return lista;
}
@Override
public List<Usuario> findAllUsuarioCliente(){
TypedQuery<Usuario> consultaUsuario= em.createNamedQuery("Usuario.findAllUsuarioCliente", Usuario.class);
List<Usuario> lista= consultaUsuario.getResultList();
return lista;
}
@Override
public List<Usuario> findByUsuario(String usuario) {
TypedQuery<Usuario> consultaUsuario= em.createNamedQuery("Usuario.findByUsuario", Usuario.class);
consultaUsuario.setParameter("usuario", usuario);
List<Usuario> lista= consultaUsuario.getResultList();
return lista;
}
@Override
public List<Usuario> findUsuarioLosed(String email){
TypedQuery<Usuario> consultaUsuario= em.createNamedQuery("Usuario.findUsuarioLosed", Usuario.class);
consultaUsuario.setParameter("email", email);
List<Usuario> lista= consultaUsuario.getResultList();
return lista;
}
}
错误本身的代码(ChatUsers.java)(相当大,但我猜它只是@EJB 的重要部分..):
package chat;
import com.eventos.Usuario;
import com.eventos.UsuarioFacadeLocal;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
@ManagedBean
@ApplicationScoped
public class ChatUsers implements Serializable {
private List<Usuario> usuariosConectados;
private List<Usuario> usuariosConectadosGeneral;
private List<Usuario> usuariosConectadosMayores;
private List<Usuario> usuariosConectadosMenores;
//(beanName = "ChatUsers")
@EJB
private UsuarioFacadeLocal usuarioEjb;
@PostConstruct
public void init() {
usuariosConectados = new ArrayList<>();
usuariosConectadosGeneral = new ArrayList<>();
usuariosConectadosMayores = new ArrayList<>();
usuariosConectadosMenores = new ArrayList<>();
}
public List<Usuario> getUsuariosConectados() {
return usuariosConectados;
}
public void setUsuariosConectados(List<Usuario> usuariosConectados) {
this.usuariosConectados = usuariosConectados;
}
public List<Usuario> getUsuariosConectadosGeneral() {
return usuariosConectadosGeneral;
}
public void setUsuariosConectadosGeneral(List<Usuario> usuariosConectadosGeneral) {
this.usuariosConectadosGeneral = usuariosConectadosGeneral;
}
public List<Usuario> getUsuariosConectadosMayores() {
return usuariosConectadosMayores;
}
public void setUsuariosConectadosMayores(List<Usuario> usuariosConectadosMayores) {
this.usuariosConectadosMayores = usuariosConectadosMayores;
}
public List<Usuario> getUsuariosConectadosMenores() {
return usuariosConectadosMenores;
}
public void setUsuariosConectadosMenores(List<Usuario> usuariosConectadosMenores) {
this.usuariosConectadosMenores = usuariosConectadosMenores;
}
public void removeUser(String user) {
usuariosConectados.remove(dameUsuario(user));
}
public void addUser(String user) {
Usuario usuario = dameUsuario(user);
boolean add = true;
for(Usuario item:usuariosConectados){
if(item.getUsuario().equals(usuario.getUsuario())){
add = false;
}
}
if(add){
usuariosConectados.add(usuario);
}
}
public boolean containsUser(String user) {
return usuariosConectados.contains(dameUsuario(user));
}
public void removeGeneralUser(String user) {
usuariosConectadosGeneral.remove(dameUsuario(user));
}
public void addGeneralUser(String user) {
Usuario usuario = dameUsuario(user);
boolean add = true;
for(Usuario item:usuariosConectadosGeneral){
if(item.getUsuario().equals(usuario.getUsuario())){
add = false;
}
}
if(add){
usuariosConectadosGeneral.add(usuario);
}
}
public boolean containsGeneralUser(String user) {
return usuariosConectadosGeneral.contains(dameUsuario(user));
}
public void removeMayorUser(String user) {
usuariosConectadosMayores.remove(dameUsuario(user));
}
public void addMayorUser(String user) {
Usuario usuario = dameUsuario(user);
boolean add = true;
for(Usuario item:usuariosConectadosMayores){
if(item.getUsuario().equals(usuario.getUsuario())){
add = false;
}
}
if(add){
usuariosConectadosMayores.add(usuario);
}
}
public boolean containsMayorUser(String user) {
return usuariosConectadosMayores.contains(dameUsuario(user));
}
public void removeMinorUser(String user) {
usuariosConectadosMenores.remove(dameUsuario(user));
}
public void addMinorUser(String user) {
Usuario usuario = dameUsuario(user);
boolean add = true;
for(Usuario item:usuariosConectadosMenores){
if(item.getUsuario().equals(usuario.getUsuario())){
add = false;
}
}
if(add){
usuariosConectadosMenores.add(usuario);
}
}
public boolean containsMinorUser(String user) {
return usuariosConectadosMenores.contains(dameUsuario(user));
}
public Usuario dameUsuario(String user){
System.out.println(">>>>>>>>>>>>>>>>>>> dame usuario");
Usuario usuario = usuarioEjb.findByUsuario(user).get(0);
System.out.println(">>>>>>>>>>>>>>>>>>> dame usuario"+usuario.getUsuario());
System.out.println(">>>>>>>>>>>>>>>>>>> dame usuario"+usuario.getClave());
return usuario;
}
}
我也试过这个 post 的解决方案:Cannot resolve reference Local ejb-ref
如果我"solve"这个界面(用上面post的解决方案)在另一个界面重复这个错误,如果我也申请这个界面return .无论如何,我不确定我能否很好地应用该解决方案。
我也尝试过将@Local 更改为@Remote 但没有成功。
在这里的任何帮助就像在沙漠中找到一片绿洲。 谢谢
编辑:
这个接口的错误似乎已经解决了,因为我喜欢@kret 的回答(和另一个 post)并将 @EJB 命名为:
@EJB(beanName="UsuarioFacade")
private UsuarioFacadeLocal usuarioEjb;
名字我写错了(必须是接口的名字)
现在它在另一个参考中给了我同样的错误:
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.
模型应用程序:
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;
}
错误是一样的,所以我试过了:
@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.xml:
<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>
真的欢迎任何想法
谢谢
编辑:
创建了一个新的 post,其中包含详细的新错误:Glassfish error while deploying ear web application with multiple EJB references
"Cannot resolve reference (...) because there are [2] ejbs in the application with interface com.eventos.UsuarioFacadeLocal"。注入有问题,容器不知道你想注入哪一个 bean。 在@EJB 注释
中删除一个实现或定义想要的 bean 的名称