Estoy buscando un poco tratando de entender cómo Java puede tener implementaciones de referencia estándar incluidas en el JRE (por ejemplo, JAXB/JAX-WS en JRE6), al tiempo que permite que las implementaciones de terceros anulen (por ejemplo, CXF).¿Cómo inicializa Java la implementación de JAXB/JAX-WS/etc?
He llegado al lugar en el que encontré el método javax.xml.ws.spi.FactoryFinder.find() que localiza la clase especificada en META-INF/services/java.xml.ws.spi. Provider o com.sun.xml.internal.ws.spi.ProviderImpl (para el caso JAX-WS) y crea una instancia de eso.
Lo que no puedo encontrar es cómo/dónde/en qué etapa el JRE llama a ese método FactoryFinder.find().
¿Alguien me puede aclarar?
[editar] He encontrado la respuesta, pero no se me permite publicar yo mismo durante otras 3 horas ...
Pero, ¿eso significa que el La lógica detrás de estos métodos de fábrica está básicamente codificada en la versión específica de JRE. Por ejemplo, JRE 6 ** sabe ** específicamente sobre JAX-WS/JSR224 (?) Y tiene algún gancho "onStartup" dentro que explícitamente llama a FactoryFinder.find() para aquellos estándares que conoce. –
Por lo que yo entiendo, "sabe" una implementación predeterminada. Pero uno puede anularlo implementando su propia ContextFactory y configurándola usando la propiedad del sistema mencionada. – AlexR