Coder Social home page Coder Social logo

Comments (7)

majulvez avatar majulvez commented on August 19, 2024

Hola @minifreak ,

he creado una rama con una configuración compatible con tomcat 8. La tienes aquí

https://github.com/majulvez/easyredsys/tree/tomcat-8

El tema es que no se está inyectando el bean AppConfig correctamente en tomcat 8 usando la anotación @Inject y como workaround lo que he hecho es coger ese bean del contexto mediante programación

https://github.com/majulvez/easyredsys/blob/tomcat-8/easyredsys-server/src/main/java/com/miguelangeljulvez/easyredsys/server/ws/rest/InotificacionSISRest.java#L35

Para usar esta versión, compila la rama "tomcat-8" con gradle build, replica la configuración de ejemplo de integration-example-tomcat-8-war en tu aplicación y copia easyredsys-client-1.1.4-SNAPSHOT.jar y easyredsys-server-1.1.4-SNAPSHOT.jar al directorio WEB-INF/lib de tu aplicación (marcando las dependencias de easyredsys como provided en tu pom.xml o build.gradle).

No integro este cambio en la rama general de momento porque quiero ver bien el tema de por qué no se inyecta correctamente en tomcat 8 (están los beans.xml por lo que no haría falta registrarlo en un binder, en teoría) y por que además tengo que programar una prueba correctamente con arquillian.

Un saludo

from easyredsys.

minifreak avatar minifreak commented on August 19, 2024

Hola @majulvez ,

Muchas gracias por tu respuesta.

Según he podido averiguar, no se inyecta porque Tomcat no implementa todo el stack J2EE, al ser simplemente un contenedor de Servlets, por lo que la inyección de beans en WebServices no funciona. Incluso Weld me indica que CDI está solo disponible en Servlets, Filters y Listeners.
Además he descubierto que existen proyectos como Meecrowave o TomEE que básicamente añaden las funcionalidades de la especificación J2EE no implementadas en Tomcat. En el caso del sistema que uso (ScipioERP basado en Apache OFBiz) no tiene mucho sentido, ya que Tomcat viene embebido. Y por supuesto que antes de reemplazar Tomcat por TomEE, lo reemplazaría por WildFly u otro AS open source. Pero vaya, eso esta fuera del cualquier escenario en estos momentos.

A todo esto, ayer conseguí que funcionara extendiendo tu clase InotificacionSISImpl y reemplazándola por la original definida en sun-jaxws.xml, con la anotación @webservice apuntando a tu endpointInterface original. De esta manera he podido substituir el @Inject por la instanciación de mi classe AppConfig directamente en el constructor y sobreescribir el método notificación. Funciona perfectamente

No he visto tu solución, pero después le echo un vistazo. Seguramente vaya en la misma línea. En caso contrario te creo un merge request si te interesa.

De todos modos, te agradezco mucho tu ayuda!

from easyredsys.

majulvez avatar majulvez commented on August 19, 2024

Lo que has hecho está perfecto.

También se podría solucionar usando reflexión en lugar de @Inject que es lo que uso para coger el bean de configuración en la implementación de axis. Aunque bueno, si pudiera evitar tener que usar reflexión y usar especificaciones casi que mejor. Aunque por otro lado, menos librerías necesarias para usarlo en tomcat (que al final es lo que mas se usa).

from easyredsys.

majulvez avatar majulvez commented on August 19, 2024

Sí, te confirmo que voy a usar reflexión en lugar de inyección para facilitar la integración con tomcat. He subido el código y las pruebas de integración en distintos servidores a tomcat-8. En unos días subiré a master y publicaré en repositorios maven.

from easyredsys.

minifreak avatar minifreak commented on August 19, 2024

Muchas gracias @majulvez

En cuanto lo tengas subido reemplazaré mi solución por la tuya. Así me será más fácil mantenerme alineado con tu implementación en futuros cambios que se puedan dar.

from easyredsys.

majulvez avatar majulvez commented on August 19, 2024

Hola @minifreak ,

acabo de publicar el cambio en los repositorios maven (v1.1.4). A lo largo del día de hoy estará disponible.

Cierro este ticket, pero si tuvieras cualquier problema con la nueva versión me dices. He creado un ejemplo de configuración para tomcat 8 y he programado unas pruebas, por lo que espero que no haya mucho problema.

Un saludo!

from easyredsys.

minifreak avatar minifreak commented on August 19, 2024

Hola @majulvez,

En cuanto pueda, lo pruebo y te comento. Lo tengo funcionando bien con mis cambios pero tarde o temprano actualizaré y usaré los tuyos.

Muchisimas gracias por tu ayuda!

Saludos!

from easyredsys.

Related Issues (6)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.