Estoy desarrollando una aplicación utilizando OSGi (plataforma Equinox), y uno de los paquetes necesita analizar archivos XML. Hasta ahora he implementado esto con SAX (javax.xml.parsers.SAXParserFactory) y me gustaría recuperar el SAXParserFactory de la plataforma.Uso de la implementación del analizador XML como servicio OSGi
vi el estándar OSGi prevé un XMLParserActivator para permitir implementaciones JAXP a registrarse (http://www.osgi.org/javadoc/r4v41/org/osgi/util/xml/XMLParserActivator.html), así que yo creo que debe haber algunos paquetes que ofrecen la SAXParserFactory como un servicio.
Sin embargo, no pude determinar qué paquete agregar como dependencia para encontrar un servicio que ofrezca SAXParserFactory. Trato de recuperar una referencia de servicio utilizando
context.getServiceReferences(SAXParserFactory.class.getName(), "(&(parser.namespaceAware=true)(parser.validating=true))")
Teniendo en cuenta que el análisis de XML es una cosa bastante común de hacerlo, supongo que hay implementaciones disponibles, u otros medios para conseguir un servicio de intérprete XML desde la plataforma.
¡Cualquier ayuda sería bienvenida!
Hola, No estoy seguro con OSGi pero ¿por qué no utilizar la pila XML incluido con el JRE? – ATorras
Hola, sí, pero el mecanismo del cargador de clases OSGi es diferente, por lo que llamar a SAXParserFactory.newInstance() puede generar problemas, ya que el mecanismo cargador JAXP espera encontrar el analizador en el cargador de clases de hilo de la corriente y puede no ser necesariamente el caso . –