500 erreur Interne du serveur sur serveur apache tomcat
j'ai un war
fichier et je l'ai déployé sur mon premier serveur. chaque chose est bien là.
vous pouvez le tester sur http://185.126.201.83:10808/crmapi/rest/v1/authentication/hi
(le port est différent parce qu'il est derrière un pare-feu)
mais dans mon nouveau serveur je obtenir l'erreur ci-dessous et de tout ce sont les mêmes dans les deux serveur. quel est le problème?
vous pouvez le tester sur : http://185.21.76.71:8080/crmapi/rest/v1/authentication/hi
type Exception report
message Servlet.init() for servlet com.crmapi.services.ApplicationConfig threw exception
description The server encountered an internal error that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Servlet.init() for servlet com.crmapi.services.ApplicationConfig threw exception
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:745)
root cause
java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map;
org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:309)
org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:315)
org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:170)
org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:358)
javax.servlet.GenericServlet.init(GenericServlet.java:158)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:745)
note The full stack trace of the root cause is available in the Apache Tomcat/8.0.36 logs.
ubuntu 16.04 Server x64
et Apache Tomcat/8.0.36
- avez-vous des ressources en double (fichiers jar) pour la même API, comme 2 fichiers jar pour Jersey avec différentes versions dans le classpath ?
- Comment puis-je le vérifier?
- vérifiez votre classpath, pour une application web principalement, il sera
WEB-INF/lib
à l'intérieur de votre webapp , ou tomcatlib
dossier, assurez-vous qu'il n'est pas dupliquer les fichiers jar commejersey1.0.jar
etjersey2.0.jar
(par exemple) - non.... il n'y a pas de doublons et la question est de savoir pourquoi le premier serveur a fonctionné correctement, mais la seconde a un problème?
- désolé je n'ai pas d'autre idée que ce
- Dites-moi une chose que vous êtes à l'aide de maven pour construire votre projet ?
- J'ai le même message d'erreur semblable à votre question. Avez-vous résoudre ce problème?
Vous devez vous connecter pour publier un commentaire.
Apache Tomcat trace de la pile raconte tout cela .Votre question est certainement le fait d'avoir plusieurs JAX-RS pots dans le classpath de votre application. Il ressemble à javax.ws.rs.de base.La classe d'Application est chargé à partir de certains Pot, mais il n'a pas la méthode getProperties() qui renvoie un Java.util.Carte . Vous devez strictement vérifier la présence de doublons de pots .Si vous n'êtes pas en mesure de trouver manuellement , vous pouvez utiliser un outil comme JHade pour détecter la présence de doubles pots .Mais si vous êtes trop sûr que demande le chemin de classe n'a qu'un seul JAX-RS jar , veuillez vérifier soigneusement qu'il est nécessaire getProperties() la méthode ou pas dans le javax.ws.rs.de base.La classe d'Application. Si vous déboguer votre code sur ces lignes, vous pouvez vous retrouver avec une solution. Laissez-moi savoir si cela vous aide à vous 🙂 . PS - JAX RS 1.x pots n'ont pas de méthode getProperties() mais JAX-RS 2.x ont .
Semble que vous avez jar incompatibilité de JAX-RS versions.
Utiliser maven pour contrôler votre JAX-RS version.
Si vous utilisez jersey, utilisez 2.23.2 ou plusieurs versions.
Vous pouvez vérifier la réussite de votre déploiement via http://185.21.76.71:8080/crmapi/application.wadl
Il semble que le JRE versions diffèrent sur vos serveurs.
L'un de l'autre erreur que nous sommes peut-être faire que nous ne sommes pas déclarer notre
servlet
classe commepublic
Cette chose que nous devons retenir, car
servlet
conteneur cherche toujoursservlet
classe dans l'espace public afin que nosservlet
fichier doit être publicSinon, nous allons l'obtenir
Erreur 500 - erreur interne du serveur.