AVERTISSEMENT: Fournisseur de com.soleil.xml.interne.bind.v2.ContextFactory pas trouvé
J'ai intégré au sein d'une application JSF quelques services web par le biais de Jersey
. Tout fonctionne bien, même OAuth d'identification est de travail. MAIS! Lors du démarrage de mon serveur, j'ai TOUJOURS cette erreur :
INFO: Scanning for root resource and provider classes in the packages:
com.mysite.webService
INFO: Root resource classes found:
class com.mysite.webService.Accounts
INFO: No provider classes found.
INFO: Initiating Jersey application, version 'Jersey: 1.17 01/17/2013 03:31 PM'
SEVERE: The provider class, class com.sun.jersey.oauth.server.OAuthProviderInjectionProvider, could not be instantiated. Processing will continue but the class will not be utilized
java.lang.RuntimeException: No OAuthProvider implementation found in the list of providers.
at com.sun.jersey.oauth.server.OAuthProviderInjectionProvider.<init>(OAuthProviderInjectionProvider.java:71)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
(edit2: ci-dessus est maintenant résolu)
et cet avertissement:
...
WARNING: Provider com.sun.xml.internal.bind.v2.ContextFactory not found
javax.xml.bind.JAXBException: Provider com.sun.xml.internal.bind.v2.ContextFactory not found
- with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory not found by com.sun.jersey.glassfish.v3.osgi.jersey-gf-server [157]]
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:148)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:361)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:446)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:409)
at com.sun.jersey.server.impl.wadl.WadlApplicationContextImpl.<init>(WadlApplicationContextImpl.java:95)
Voici mon web.xml
les entrées pertinentes :
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>my.site.webService</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
Mes classes de regarder en tant que tel :
@Path("/rest")
public class MyClass {
@GET
@Path("/{id}/results")
@Produces("application/json")
public String getResults(@Context HttpContext hc, @PathParam("id")) {
//...
}
}
Je suis en utilisant Majorra 2.1.20
sur Glassfish 2.1.2.2
avec PrimeFaces 3.4.1
et Jersey 1.17
comme addons. Développer dans Eclipse Juno
si cela affecte rien.
Modifier
Cela ne m'empêche pas d'avoir tout en ordre de marche en ce qui concerne les services web. Mais à chaque fois que je republier quelque chose sur Glassfish, l'erreur s'affiche.
Comme mentionné dans la réponse ci-dessous, ce qui devrait avoir été corrigé dans la version 1.7 selon JIRA bug JERSEY-709. Mais je suis très bien sur v. 1.17 et je suis encore en train de ce.
J'ai également ajouté un Avertissement que je suis arriver dans la trace de la pile. Si cela peut aider à déterminer le problème!
La recherche sur le web : j'ai trouvé La même question en suspens ici
Edit 2
Comme réponse ci-dessous, la mise à jour de mon OAuthClient.jar
ont permis de résoudre le premier error
. Je suis ENCORE en train de la WARNING: Provider com.sun.xml.internal.bind.v2.ContextFactory not found
.
Modifier 3 - Tentative De Solution
Essayé la mise à jour de JAXB après ce que j'ai pensé que cela pourrait être un chef de file sur cette question. Cela n'a pas conduit à quelque chose de réussi. Même avertissement. Lors du retrait du Maillot de bits dans mon web.xml
cet avertissement s'arrête en montrant (juste pour confirmer ce qui est vraiment de l'initiation de la question).
Vous devez vous connecter pour publier un commentaire.
Dans un autre contexte : Application Java autonome, à l'aide de Maven
Dans pom.xml, jaxb a été définie à l'aide de ces lignes :
Projet de compilation est réussie, mais lors de l'exécution, j'ai reçu la même Exception
(java.lang.ClassNotFoundException: com.soleil.xml.bind.v2.ContextFactory)
Problème a été résolu en ajoutant ces lignes avant de jaxb-api dépendance
Cette erreur a disparu lors de la mise à Jersey 1.18.
Voir https://java.net/jira/browse/JERSEY-1932
À la mise à niveau de Glassfish à Jersey 1.18 voir : https://jersey.java.net/nonav/documentation/1.18/glassfish.html
Ce qui devrait avoir été corrigé dans la v1.7 comme par JERSEY-709.
INFO: Initiating Jersey application, version 'Jersey: 1.17 01/17/2013 03:31 PM'
. Même erreur.1.17
comme dans : Un point de dix-Sept ans.one dot seven
vsone dot seventeen
. 17 > 7. Peut-être que je manque quelque chose. Je suis sûr que je suis sous la version la plus récente de Jersey.oauth-client.jar
etoauth-server.jar
etoauth-signature.jar
n'ont pas été mis à jour ainsi que ce ne sont pas emballés par défaut en Jersey (je suppose). La mise à jour de ces résolu la première erreur que j'ai eu, encore uneWarning
sur la charge du serveur (voir mise à jour 2).M8, j'ai rencontré ce que bien sur:
Mais il pourrait travailler avec:
Alors, l'exception n'existent plus.
Je ne suis pas encore tout à fait sûr de savoir comment il est résolu, mais j'espère que cela peut vous aider.