es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Invocando el método EJB desde JUnit: “No existe tal método EJB”

Estoy intentando llamar un método en un EJB remoto en una prueba JUnit que ejecutará SQL contra una base de datos y devolverá resultados. Aquí está el mensaje de la excepción:

java.lang.IllegalArgumentException: No se encontró tal método EJB org.jboss.ejb.client.EJBMethodLocator@3c2f505 en SiViewDBFacadeEAR-0.0.1-SNAPSHOT/SiViewDBFacadeEJB-0.0.1-SNAPSHOT/SiViewMMDBAccessBean

En primer lugar, este error parece ser intermitente. Tengo algunos métodos diferentes en el EJB que ejecutan SQL diferente y devuelven resultados como HashMap. En mi prueba JUnit estaba llamando a estos métodos uno tras otro y noté que la llamada al segundo método siempre fallaba incluso si cambiaba el orden de las llamadas. Recientemente, intenté llamar al mismo método exacto dos veces y funciona la primera vez, pero falla la segunda vez.

¿A alguien le suena esta firma de problema? Soy algo nuevo en el trabajo con EJB, pero este problema parece extraño en su naturaleza inconsistente.

Gracias a todos.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Según el mensaje de error, parece que la prueba JUnit está intentando llamar a un método en el EJB remoto que no existe. El objeto localizador del método que se pasó en el argumento no coincide con ninguno de los métodos disponibles en el EJB.

    Esto podría ser causado por algunas cosas:
    – El nombre del método o los tipos de parámetros son incorrectos en el código de prueba JUnit.
    – El EJB se ha implementado incorrectamente o falta el método al que la prueba JUnit intenta llamar.
    – Hay una discrepancia de versión entre la prueba JUnit y el EJB, lo que hace que el objeto localizador del método no coincida con ningún método disponible.

    En cuanto a la naturaleza intermitente del error, podría estar relacionado con la carga del servidor o la congestión de la red. Es posible que el EJB no responda a tiempo o que haya problemas de comunicación entre la prueba JUnit y el EJB.

    Para solucionar este problema, recomendaría revisar el código del EJB y el código de la prueba JUnit en busca de discrepancias en los nombres de los métodos o los tipos de parámetros. Adicionalmente, verificar los registros del servidor en busca de errores relacionados con la implementación del EJB o la conectividad de red.

Comments are closed.