2010-06-16 14 views
3

Il existe des classes identiques de Java WebServices API & IMPL dans ces groupes de packages, seuls les noms de package sont différents.WS Libs: com.sun.xml vs javax.xml

Lesquelles dois-je utiliser dans mon code? Je préférerais NON-com.sun. * Selon les conventions java, mais mes dépendances (par exemple Spring) utilisent des implémentations de com.sun. * OU je ne trouve pas de package d'implémentation dans javax.xml

Quelqu'un at-il une expérience à ce sujet?

Répondre

2

Utilisez les packages javax.xml - les packages com.sun ne font pas partie de l'API publique Java et peuvent changer entre les versions Java, ou n'existent même pas si vous utilisez quelqu'un d'autre que l'implémentation Java de Sun.

Voir: Why Developers Should Not Write Programs That Call 'sun' Packages

Je ne sais pas ce que vous avez tout à fait d'essayer de le faire, mais vous ne normalement pas besoin de traiter les paquets de mise en œuvre directement. Habituellement, il existe des classes et des méthodes d'usine pour obtenir une instance de par exemple un analyseur XML, et votre programme n'a pas besoin de savoir quelle implémentation est utilisée derrière les scènes. Par exemple, pour obtenir un analyseur SAX, vous faites:

import javax.xml.parsers.*; 

SAXParserFactory factory = SAXParserFactory.newInstance(); 
SAXParser parser = factory.newSAXParser(); 
+0

oui, c'est vrai. J'utilise Spring WS qui utilise par ex. MessageFactory, alors je peux passer le MessageFactory.newInstance() ou MessageFactory.newInstance ("Protocol"), mais par exemple. Apache CXF ne veut pas travailler sans impliquer par exemple. saaj-impl et quelques autres qui ne sont que de com.sun. * – Zilvinas