2009-09-09 4 views
1

Voici ce que j'essaie de faire: nous passons à JAXB et à Jersey pour tous nos services REST et nos besoins de sérialisation XML/JSON.Déploiement de la servlet compatible Jersey sur Tomcat: Exceptions

Jusqu'ici, j'ai pu obtenir un test simple où certains beans sont annotés, certains objets de test créés et ceux-ci sont parfaitement sérialisés en XML ou en JSON et retournés au client sur demande. J'ai surtout écrit ceci en me basant sur certains exemples sur Internet, où un serveur HTTPS est créé et démarré dans la méthode principale.

J'essaie maintenant de mettre ce même exemple dans un fichier WAR et de le déployer sur mon serveur Tomcat local pour que je puisse le tester dans un environnement plus proche de la production. Voyant que je n'étais pas en mesure de le faire fonctionner sur Tomcat 5.5.27 en suivant les instructions here je suis allé de l'avant et mis à niveau vers Tomcat 6.0. Mêmes instructions, même résultat, une énorme InvocationTargetException.

Qu'est-ce qui me manque exactement, les gars?

INFO: Scanning for root resource and provider classes in the paths: 
    /Library/Tomcat/Home/webapps/user/WEB-INF/lib 
    /Library/Tomcat/Home/webapps/user/WEB-INF/classes 
Sep 9, 2009 7:22:32 PM com.sun.jersey.api.core.ClasspathResourceConfig init 
INFO: Root resource classes found: 
    class example.HelloWorld 
Sep 9, 2009 7:22:32 PM com.sun.jersey.api.core.ClasspathResourceConfig init 
INFO: Provider classes found: 
java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
    at com.sun.jersey.impl.application.WebApplicationImpl$DefaultComponentProvider.getInstance(WebApplicationImpl.java:437) 
    at com.sun.jersey.impl.application.ComponentProviderCache.getComponent(ComponentProviderCache.java:187) 
    at com.sun.jersey.impl.application.ComponentProviderCache.getProvidersAndServices(ComponentProviderCache.java:122) 
    at com.sun.jersey.impl.application.InjectableProviderFactory.configure(InjectableProviderFactory.java:113) 
    at com.sun.jersey.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:582) 
    at com.sun.jersey.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:487) 
    at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:622) 
    at com.sun.jersey.spi.container.servlet.ServletContainer.load(ServletContainer.java:538) 
    at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:197) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4149) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4458) 

Cela fait partie du spinw ginormous dans catalina.out.

De plus, voici mon web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
     version="2.5"> 

    <servlet> 
     <servlet-name>ServletAdaptor</servlet-name> 
     <servlet-class>com.sun.jersey.impl.container.servlet.ServletAdaptor</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>ServletAdaptor</servlet-name> 
     <url-pattern>/resources/*</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout>30</session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 

Toute aide à ce serait grandement apprécié! Merci d'avance.

+0

L'exception InvocationTargetException doit être en train d'encapsuler l'exception de cause première, nous devons le voir. – skaffman

+0

Voici le tout: http://txtb.in/4wT –

+0

J'ai aussi essayé un nouveau web.xml, en vain: http://codepad.org/mcolfNt5 –

Répondre

1

Vous avez probablement un conflit quelque part, vérifiez vos fichiers jar et voir s'il n'y a pas de classes en double. Utilisez Tattletale pour localiser le problème

**Caused by: java.lang.NoSuchMethodError: javax.ws.rs.ext.Providers.getContextResolver(Ljava/lang/Class;Ljavax/ws/rs/core/MediaType;)Ljavax/ws/rs/ext/ContextResolver;** 
at com.sun.jersey.impl.provider.entity.AbstractJAXBProvider.<init>(AbstractJAXBProvider.java:81) 
at com.sun.jersey.impl.provider.entity.AbstractRootElementProvider.<init>(AbstractRootElementProvider.java:67) 
at com.sun.jersey.impl.provider.entity.XMLRootElementProvider.<init>(XMLRootElementProvider.java:66) 
at com.sun.jersey.impl.provider.entity.XMLRootElementProvider$App.<init>(XMLRootElementProvider.java:72) 
... 41 more 
Questions connexes