Pour tester une application, je crée des messages SOAP. Cela fonctionne lorsqu'il est exécuté directement depuis Eclipse (Oxygen.1a) mais après avoir été empaqueté sous forme de pot exécutable (option: empaqueter les bibliothèques requises dans le pot généré). erreur suivante:
javax.xml.soap.SOAPException: Unable to create SAAJ meta-factoryProvider com.Sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl not found
at javax.xml.soap.SAAJMetaFactory.getInstance(SAAJMetaFactory.Java:94)
at javax.xml.soap.MessageFactory.newInstance(MessageFactory.Java:138)
déclenché par:
MessageFactory factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
Je comprends donc que MessageFactory utilise un package Sun
static private final String DEFAULT_META_FACTORY_CLASS =
"com.Sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl";
Mais je ne sais absolument pas pourquoi il est incapable de trouver cette classe après l'empaquetage dans un JAR exécutable. Tous les conseils ou directions seraient grandement appréciés.
J'ai ajouté ce qui suit dépendance à mon projet:
<dependency>
<groupId>com.Sun.xml.messaging.saaj</groupId>
<artifactId>saaj-impl</artifactId>
<version>1.5.0</version>
</dependency>
J'ai ensuite créé le fichier META-INF/services/javax.xml.soap.SAAJMetaFactory
avec la ligne suivante pour fournir le nom complet de la classe d'usine SAAJ et cela a fonctionné:
com.Sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl
Le javax.xml.soap.saaj-api semble être abandonné. Et c'est très étrange qu'un paquet nommé com.Sun
est celui qui fonctionne. Quoi qu'il en soit, cela fonctionne.