Des erreurs tout en essayant de faire une bonne WebService avec Jersey
Je suis cette tutoriel pour créer un CRUD Reposant WebService.
Le tutoriel pour ce type de WebService commence au paragraphe 7. J'ai créer le Serveur et le Client.
Le Serveur semble fonctionner parfaitement bien, comme je le fais de ce que l'auteur suggère de le tester et tout fonctionne comme prévu.
Cependant , le Client me donne un moment difficile. Quand je le lance j'ai toujours cette erreur:
201
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><todoes><todo><id>3</id><summary>Blabla</summary></todo><todo><description>Read complete http://www.vogella.com</description><id>2</id><summary>Do something</summary></todo><todo><description>Read http://www.vogella.com/articles/REST/article.html</description><id>1</id><summary>Learn REST</summary></todo></todoes>
Exception in thread "main" com.sun.jersey.api.client.UniformInterfaceException: GET http://localhost:8080/CRUDserver/rest/todos returned a response status of 500 Internal Server Error
at com.sun.jersey.api.client.WebResource.handle(WebResource.java:686)
at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)
at com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:507)
at es.unican.cityInfo.client.Tester.main(Tester.java:34)
Quel est exactement le problème je ne peux pas comprendre ? Des idées ?
La seule hypothèse que je peux faire , est basé à cette phrase de l'auteur , dans le début de l'établissement du client :
Create a new Java project called de.vogella.jersey.todo.client. Create a lib folder and place all jersey libs in this folder. Add the jars to the classpath of the project.
Dit-il à lieu tous les jersey libs
à l'intérieur d'un dossier. Cependant, ce sont ces libs???
La seule chose que j'ai pour le client sont 2 fichiers jar : jersey-client.jar
et jersey-core.jar
que j'ai trouvé sur le site de jersey...
Comme suggéré ici, c'est le journal du serveur , lorsque je lance le client :
Apr 26, 2013 5:46:19 PM com.sun.jersey.spi.container.ContainerResponse write
SEVERE: A message body writer for Java class java.util.ArrayList, and Java type java.util.List<es.unican.cityInfo.model.Todo>, and MIME media type application/json was not found
Apr 26, 2013 5:46:19 PM com.sun.jersey.spi.container.ContainerResponse write
SEVERE: The registered message body writers compatible with the MIME media type are:
*/* ->
com.sun.jersey.core.impl.provider.entity.FormProvider
com.sun.jersey.core.impl.provider.entity.StringProvider
com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
com.sun.jersey.core.impl.provider.entity.FileProvider
com.sun.jersey.core.impl.provider.entity.InputStreamProvider
com.sun.jersey.core.impl.provider.entity.DataSourceProvider
com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General
com.sun.jersey.core.impl.provider.entity.ReaderProvider
com.sun.jersey.core.impl.provider.entity.DocumentProvider
com.sun.jersey.core.impl.provider.entity.StreamingOutputProvider
com.sun.jersey.core.impl.provider.entity.SourceProvider$SourceWriter
com.sun.jersey.server.impl.template.ViewableMessageBodyWriter
com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General
com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General
Apr 26, 2013 5:46:19 PM com.sun.jersey.spi.container.ContainerResponse logException
SEVERE: Mapped exception to response: 500 (Internal Server Error)
javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException: A message body writer for Java class java.util.ArrayList, and Java type java.util.List<es.unican.cityInfo.model.Todo>, and MIME media type application/json was not found
at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:285)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1479)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381)
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:662)
Caused by: com.sun.jersey.api.MessageException: A message body writer for Java class java.util.ArrayList, and Java type java.util.List<es.unican.cityInfo.model.Todo>, and MIME media type application/json was not found
... 24 more
Yeap! Mais est de me donner un moment difficile aujourd'hui :p
OriginalL'auteur | 2013-04-26
Vous devez vous connecter pour publier un commentaire.
Puisque vous obtenez une erreur 500, cela signifie que le code est erroring sur le côté serveur. Vous aurez à regarder le journal sur le côté serveur de comprendre ce qui s'est passé.
Les Codes d'État HTTP sont destinés à vous donner des informations sur la demande.
Voir ici
EDIT:
Il semble donc que votre type de retour de la méthode étant assignés à cette requête HTTP est JSON, mais vous n'avez pas enregistré au format JSON message de l'écrivain pour le Jersey à utiliser.
Édité pour vous
Hmm, j'ai remarqué que le code de l'erreur est à la ligne avec le Json message. Mais j'ai juste suivi le tuto 😀 Comment puis-je régler ce problème?
Essayez d'ajouter le jersey-json.jar bibliothèque
Google jersey-json.jar c'est le premier lien.
OriginalL'auteur thatidiotguy
Probablement les simples est d'utiliser Jersey POJO fonctionnalité de prise en charge. Pour l'activer, ajoutez le JSONConfiguration.FEATURE_POJO_MAPPING init paramètre à la servlet de configuration de votre web.xml:
Vous aurez probablement besoin d'ajouter un couple de pot, en plus de celles que vous avez déjà. Suivez ce lien pour une liste des dépendances: https://jersey.java.net/nonav/documentation/latest/chapter_deps.html#d4e1828
OriginalL'auteur Federico Raggi
Je pense que votre es.unican.cityInfo.de modèle.Todo classe est absent de la suite de l'annotation @XmlRootElement
c'est à dire
OriginalL'auteur rjdkolb