2010-01-22 9 views
2

JDK 1.6 inclut la possibilité d'utiliser les services Web FastInfoset via l'API JAX-WS. Les implémentations de ces derniers sont cachés au plus profond com.sun.xml.internal, les noms de paquets destinés à mettre la crainte de Dieu dans tout développeur java sensible (par exemple com.sun.xml.internal.fastinfoset.stax.StAXDocumentParser (qui met en œuvre XMLStreamReader) et com.sun.xml.internal.fastinfoset.stax.StAXDocumentSerializer (qui met en œuvre XMLStreamWriter).Mise en place des lecteurs et descripteurs FastInfoset

Ma compréhension est que la l'utilisation de ces implémentations FastInfoset fait partie de la logique interne de négociation de contenu JAX-WS, donc non exposée à l'API publique, mais je veux utiliser explicitement les implémentations de FastInfoset, en utilisant leurs interfaces publiques STAX, et de manière référentielle via un public classe d'usine, plutôt que la référence directe à ces paquets internes

Est-ce que quelqu'un sait si cet établissement est disponible? , peut-être via les usines STAX standard?

Répondre

2

XMLInputFactory et XMLOutputFactory semblent plausibles.

Chacun a trois implémentations dans mon environnement, dont l'une est cxf (exclue), l'autre de codehaus (exclu), l'autre provient du paquet fast infoset auquel vous faites référence.

J'ai trouvé ceci en utilisant Eclipse "References", parce que le javadoc n'inclut pas la section "Use".

+0

Mais ces usines vous donneront juste quelle implémentation ils pensent être la meilleure, vous ne pouvez pas dire "je veux une implémentation de FastInfoset" ... ou pouvez-vous? – skaffman

+0

Je pense que vous ne pouvez pas - ils utilisent la méthode statique FactoryFinder.find. Mais je pense que par défaut, ils devraient retourner ce dont vous avez besoin. – Bozho

+0

On dirait que je devrai passer le nom de classe de l'implémentation FastInfoset quand j'utilise 'XMLInputFactory.newFactory()'. Ce n'est pas mieux que de l'instancier directement, mais c'est un pas dans la bonne direction. – skaffman