Tengo una aplicación web MVC simple donde el código javascript envía solicitudes ajax al controlador y el controlador devuelve las respuestas.
Desarrollé la aplicación hace 2 años y todo solía funcionar bien. Ahora traté de ejecutar la aplicación nuevamente localmente y me encontré con el siguiente problema: cada vez que se envía una solicitud Ajax desde la interfaz al controlador (que se ejecuta en localhost), el localhost se niega a conectarse y aparece un mensaje ERR_CONNECTION_REFUSED en javascript (de Chrome) -consola. (En la consola javascript de Safari aparece el siguiente mensaje de error: "Error al cargar el recurso: no se pudo conectar con el servidor").
Estoy ejecutando la aplicación usando NetBeans 11.2. Mi NetBeans IDE usa GlassFish como servidor:
Eliminé el servidor Glassfish de NetBeans IDE, eliminé su carpeta en mi directorio de inicio y luego agregué el servidor Glassfish nuevamente en mi NetBeans IDE (lo que también implicó descargar la versión más nueva del servidor Glassfish).
Aún así, el servidor se niega a aceptar cualquier solicitud de la interfaz.
También intenté usar Payara Server (versión 5.193). Eso tampoco marcó la diferencia.
Por cierto, la interfaz en sí se ve bien a primera vista. Es decir, ir a http://localhost:8080/myapp carga la interfaz de la aplicación. Sin embargo, las características dinámicas de la aplicación no funcionan porque el servidor se niega a aceptar cualquier solicitud de Ajax proveniente de la interfaz (e iniciada mediante clics del mouse).
¿Cómo puedo arreglar esto?
Creo que encontré la razón del problema:
En mi archivo javascript tengo la siguiente línea de código:
var url = "http://localhost:8080/myapp/Controller";La variable "url" se pasa a todas las solicitudes AJAX enviadas a localhost. Pero aquí está la locura: las solicitudes AJAX no se envían a " http://localhost:8080/myapp/Controller " sino a " http://localhost:8081/myapp/Controller " !!!!!
¡¿Qué diablos está pasando aquí?!
Si el valor del atributo http-listener es localhost , rechazará la conexión externa.
Puede verificar usando su valor usando el comando
asadmin> get server-config.network-config.network-listeners.network-listener.http-listener-1.*Se debe devolver información similar a la siguiente:
server.http-service.http-listener.http-listener-1.acceptor-threads = 1 server.http-service.http-listener.http-listener-1.address = 0.0.0.0 server.http-service.http-listener.http-listener-1.blocking-enabled = false server.http-service.http-listener.http-listener-1.default-virtual-server = server server.http-service.http-listener.http-listener-1.enabled = true server.http-service.http-listener.http-listener-1.external-port = server.http-service.http-listener.http-listener-1.family = inet server.http-service.http-listener.http-listener-1.id = http-listener-1 server.http-service.http-listener.http-listener-1.port = 8080 server.http-service.http-listener.http-listener-1.redirect-port = server.http-service.http-listener.http-listener-1.security-enabled = false server.http-service.http-listener.http-listener-1.server-name = server.http-service.http-listener.http-listener-1.xpowered-by = trueModifique un atributo utilizando el subcomando set.
Este ejemplo establece el atributo de address de http-listener-1 en 0.0.0.0 :
asadmin> set server.http-service.http-listener.http-listener-1.address = 0.0.0.0Referencia:
https://docs.oracle.com/cd/E19798-01/821-1751/ablaq/index.html
¿Utilizó el puerto 8081 antes y luego cambió la variable "url" al nuevo puerto 8080? En este caso, tal vez la variable aún tenga el valor anterior en el caché. Reinicie su computadora y vea si esto soluciona el problema.