Comments (7)
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
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.
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.
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.
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.
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.
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.
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from easyredsys.