我正在制作Maven项目并使用UDP侦听器部署到Wildfly 10服务器,我的Facade已连接到我的数据库(MariaDB)。 我有一个测试网页,我发送一个字符串来完成这个过程,问题出现在我尝试使用UDP监听器进行同样的过程时。使用实体管理器的Nullpointerexception
我的UDP服务器侦听端口并获取消息,但使用我在网页中使用的相同过程将我的门面上的nullpointerexception带给我,并且每当使用实体管理器时我都会发现它。
我的UDP服务器主类(这是我用来测试的类,但它发生的情况与部署的类相同)。
public class UDPServerRun {
public static void main(String[] args) {
System.out.println("UDP Server");
try {
DatagramSocket serverSocket = new DatagramSocket(8282);
byte[] receiveData = new byte[9];
byte[] sendData = new byte[9];
while (true) {
RegistrarEntrada entrada = new RegistrarEntrada();
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
String sentence = new String(receivePacket.getData());
System.out.println("RECEIVED: " + sentence + "!");
entrada.setCadenaEntrada(sentence);
String cadena = entrada.registrar();
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
sendData = cadena.getBytes();
DatagramPacket sendPacket
= new DatagramPacket(sendData, sendData.length, IPAddress, port);
serverSocket.send(sendPacket);
}
} catch (Exception ex) {
Logger.getLogger(RegistrarEntrada.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
这是与Facade(也是测试类)连接的类。
public class RegistrarEntrada implements Serializable {
private AsistenciasFacadeLocal facade = new AsistenciasFacade();
private String cadenaEntrada;
public RegistrarEntrada() {
}
public String registrar() {
Calendar cal = Calendar.getInstance();
int idPersonal = -1;
String entradas[] = cadenaEntrada.split(" ");
String idChecador = entradas[0];
String idTarjeta = entradas[1];
//String idChecador = "A1";
//String idTarjeta = "F37C96";
DateFormat timeFormat = new SimpleDateFormat("HH:mm");
//try {
idPersonal = facade.consultarIdPersonal(idTarjeta);
// } catch (Exception e) {
// System.out.println(e);
// }
if (idPersonal != -1) {
Personal persona = facade.consultarPersona(idPersonal);
if (persona != null) {
facade.registrarEntrada(idPersonal, idChecador);
return persona.getNombre() + " se registro a las: " + timeFormat.format(cal.getTime());
} else {
return "Error 02";
}
} else {
return "Error 01";
}
}
//Getters and Setters
public String getCadenaEntrada() {
return cadenaEntrada;
}
public void setCadenaEntrada(String cadenaEntrada) {
this.cadenaEntrada = cadenaEntrada;
}
public AsistenciasFacadeLocal getFacade() {
return facade;
}
public void setFacade(AsistenciasFacadeLocal facade) {
this.facade = facade;
}
}
门面(我将标记我得到错误的线)。
@Stateless
public class AsistenciasFacade implements AsistenciasFacadeLocal, AsistenciasFacadeRemote {
@PersistenceContext(unitName = "uvaqAsistenciasPU")
private EntityManager em;
protected EntityManager getEntityManager() {
return em;
}
public AsistenciasFacade() {
getEntityManager();
}
@Override
public void registrarEntrada(int idPersonal, String idChecador) {
Registros registro = new Registros();
Calendar fecha = Calendar.getInstance();
registro.setIdpersonal(idPersonal);
registro.setFechahoraregistro(fecha.getTime());
registro.setIdchecador(idChecador);
em.persist(registro);
}
@Override
public Personal consultarPersona(int idPersonal) {
String query = "SELECT * FROM personal WHERE IDPERSONAL=" + idPersonal;
List<Personal> objList = null;
objList = em.createNativeQuery(query, Personal.class).getResultList();
if (objList.size() != 0) {
return objList.get(0);
} else {
return null;
}
}
@Override
public int consultarIdPersonal(String idTarjeta) {
int idPersonal;
String query = "SELECT * FROM credenciales WHERE IDTARJETA = '" + idTarjeta + "'";
List<Credenciales> objList = null;
objList = em.createNativeQuery(query, Credenciales.class).getResultList(); //<====== The error happens here and also in every place where I use the entity manager
if (objList.size() != 0) {
idPersonal = Integer.parseInt(objList.get(0).getIdpersonal());
return idPersonal;
} else {
return -1;
}
}
@Override
public void sincronizarPersonal(List<String[]> personal) {
System.out.println("Funcion Sincronizar Personal en Asistencias");
List<Personal> nuevoPersonaltodos = new ArrayList<>();
for (int i = 0; i < personal.size(); i++) {
Personal nuevoPersonal = new Personal();
nuevoPersonal.setIdpersonal(Integer.parseInt(personal.get(i)[0]));
nuevoPersonal.setNombre(personal.get(i)[1]);
nuevoPersonal.setApellidopat(personal.get(i)[2]);
nuevoPersonal.setApellidomat(personal.get(i)[3]);
nuevoPersonal.setIdstatusper(Integer.parseInt(personal.get(i)[4]));
nuevoPersonaltodos.add(nuevoPersonal);
}
try {
em.persist(nuevoPersonaltodos);
} catch (Exception e) {
System.out.println(e);
}
}
}
我试图解释这个问题,我现在还没有服务器日志,但只要我能得到它,我将它写在这里。
编辑: 我的日志说这个。
GRAVE: null
java.lang.NullPointerException
欢迎来到Stack Overflow!请查看我们的[SO问题清单](http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist)来帮助你提出一个好问题,从而得到一个很好的答案。 –
发布异常堆栈跟踪。 – lexicore