web-dev-qa-db-fra.com

tomcat: deploy: "Impossible d'appeler le gestionnaire Tomcat: connexion refusée"

J'ai essayé de déployer mon application sur Tomcat à l'aide de Maven et j'ai trouvé this sample.

C'est un fragment de mon pom.xml:

    <!-- Maven Tomcat Plugin -->
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>Tomcat-maven-plugin</artifactId>
        <configuration>
            <url>http://127.0.0.1:8080/</url>
            <server>TomcatServer</server>
        </configuration>
    </plugin>
    <!-- Maven compiler plugin -->
    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <source>1.6</source>
            <target>1.6</target>
        </configuration>
    </plugin>

Et quand je lance Tomcat:deploy, j'obtiens cette erreur: Cannot invoke Tomcat manager: Connection refused. C'est plein stacktrace:

[ERROR] Failed to execute goal org.codehaus.mojo:Tomcat-maven-plugin:1.1:deploy (default-cli) on project webapp: Cannot invoke Tomcat manager: Connection refused: connect -> [Help 1]
org.Apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:Tomcat-maven-plugin:1.1:deploy (default-cli) on project webapp: Cannot invoke Tomcat manager
    at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:217)
    at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:153)
    at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:145)
    at org.Apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.Java:84)
    at org.Apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.Java:59)
    at org.Apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.Java:183)
    at org.Apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.Java:161)
    at org.Apache.maven.DefaultMaven.doExecute(DefaultMaven.Java:320)
    at org.Apache.maven.DefaultMaven.execute(DefaultMaven.Java:156)
    at org.Apache.maven.cli.MavenCli.execute(MavenCli.Java:537)
    at org.Apache.maven.cli.MavenCli.doMain(MavenCli.Java:196)
    at org.Apache.maven.cli.MavenCli.main(MavenCli.Java:141)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:39)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:25)
    at Java.lang.reflect.Method.invoke(Method.Java:597)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.Java:290)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.Java:230)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.Java:409)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.Java:352)
    at org.codehaus.classworlds.Launcher.main(Launcher.Java:47)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:39)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:25)
    at Java.lang.reflect.Method.invoke(Method.Java:597)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.Java:120)
Caused by: org.Apache.maven.plugin.MojoExecutionException: Cannot invoke Tomcat manager
    at org.codehaus.mojo.Tomcat.AbstractCatalinaMojo.execute(AbstractCatalinaMojo.Java:149)
    at org.codehaus.mojo.Tomcat.AbstractWarCatalinaMojo.execute(AbstractWarCatalinaMojo.Java:70)
    at org.Apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.Java:101)
    at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:209)
    ... 25 more
Caused by: Java.net.ConnectException: Connection refused: connect
    at Java.net.PlainSocketImpl.socketConnect(Native Method)
    at Java.net.PlainSocketImpl.doConnect(PlainSocketImpl.Java:351)
    at Java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.Java:213)
    at Java.net.PlainSocketImpl.connect(PlainSocketImpl.Java:200)
    at Java.net.SocksSocketImpl.connect(SocksSocketImpl.Java:366)
    at Java.net.Socket.connect(Socket.Java:529)
    at Java.net.Socket.connect(Socket.Java:478)
    at Sun.net.NetworkClient.doConnect(NetworkClient.Java:163)
    at Sun.net.www.http.HttpClient.openServer(HttpClient.Java:388)
    at Sun.net.www.http.HttpClient.openServer(HttpClient.Java:523)
    at Sun.net.www.http.HttpClient.<init>(HttpClient.Java:227)
    at Sun.net.www.http.HttpClient.New(HttpClient.Java:300)
    at Sun.net.www.http.HttpClient.New(HttpClient.Java:317)
    at Sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.Java:970)
    at Sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.Java:911)
    at Sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.Java:836)
    at org.codehaus.mojo.Tomcat.TomcatManager.invoke(TomcatManager.Java:597)
    at org.codehaus.mojo.Tomcat.TomcatManager.deployImpl(TomcatManager.Java:662)
    at org.codehaus.mojo.Tomcat.TomcatManager.deploy(TomcatManager.Java:295)
    at org.codehaus.mojo.Tomcat.AbstractDeployWarMojo.deployWar(AbstractDeployWarMojo.Java:85)
    at org.codehaus.mojo.Tomcat.AbstractDeployMojo.invokeManager(AbstractDeployMojo.Java:85)
    at org.codehaus.mojo.Tomcat.AbstractCatalinaMojo.execute(AbstractCatalinaMojo.Java:141)
    ... 28 more

Je ne voulais pas utiliser l'authentification, j'ai donc ignoré ces étapes. Je pensais que cela pouvait entraîner mon erreur, mais lorsque j'ai essayé de les ajouter, rien n'a changé. Savez-vous où est mon erreur?

UPD: Désolé, mais je ne peux pas vérifier nos solutions car je ne travaille plus sur ce projet. Mais je ne fermerai pas cette question, donc si vous pensez que votre solution fonctionnera, n'hésitez pas à la laisser ici et peut-être que cela aidera quelqu'un.

28
uncle Lem

Lorsque vous utilisez le plug-in Tomcat 7, procédez comme suit:

pom.xml

<plugin>
    <groupId>org.Apache.Tomcat.maven</groupId>
    <artifactId>Tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <url>http://localhost:8080/manager/text</url>
        <server>tomcatserver</server>
        <path>/mycontext</path>
        <username>admin</username>
        <password>admin</password>
    </configuration>
</plugin>

settings.xml

<server>
    <id>tomcatserver</id>
    <username>admin</username>
    <password>admin</password>
</server>

Tomcat-users.xml

<user username="admin" password="admin" roles="manager-script"/>

courir

mvn Tomcat7:deploy
27
superkruger

J'ai eu le même problème. Dans mon cas, je résous le problème en exécutant run-war au lieu de deploy pour Tomcat7 avec configuration:

         <plugin>
            <groupId>org.Apache.Tomcat.maven</groupId>
            <artifactId>Tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <url>http://localhost:8080</url>
                <path>/</path>
            </configuration>
        </plugin>
15
levo4ka

Il a fallu un certain temps pour comprendre le déploiement du plug-in maven avec le mécanisme Tomcat 7, mais cela fonctionne comme suit:

A utiliser avec la commande:

mvn Tomcat7: deploy

Le serveur Tomcat doit d'abord être initialisé! Vous pouvez choisir de démarrer à partir de IDE ou au script de démarrage situé dans le dossier% Tomcat_HOME%\bin

Le résultat de son exécution devrait ressembler à ceci:  enter image description here

mvn Tomcat7: run-war

Tomcat n’a pas besoin d’être initialisé car le script ci-dessus va automatiquement démarrer le serveur. Cependant, le contexte / manager ne sera pas activé pour une utilisation dans le navigateur.

Le résultat de son exécution devrait ressembler à ceci:  enter image description here

Vous pouvez même exécuter la commande mvn clean package pour effectuer un nettoyage précédent du projet.

Quelques configurations supplémentaires:

[% Tomcat_HOME%\conf] Tomcat-users.xml

<role rolename="Tomcat"/>
<role rolename="admin-script"/>
<role rolename="manager-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="manager"/>
<role rolename="admin"/>

<user password="Tomcat" roles="Tomcat" username="Tomcat"/>
<user password="admin" roles="manager-gui" username="admin"/>
<user password="pass@Word1" roles="admin,admin-script,manager-gui,manager-script,manager-jmx,manager-status" username="mavenuser"/>

[% MAVEN_HOME%\conf] settings.xml

<server>
    <id>your_server</id>
    <username>mavenuser</username>
    <password>pass@Word1</password>
</server>

[% project%] pom.xml

<plugin>
    <groupId>org.Apache.Tomcat.maven</groupId>
    <artifactId>Tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <url>http://localhost:8080/manager/text</url>
        <server>your_server</server>
        <path>/project_context</path>
        <username>mavenuser</username>
        <password>pass@Word1</password>                 
    </configuration>
</plugin>

J'espère que ça aide!

9
aelkz

J'ai eu le même problème et il semblait être version Tomcat vs version plugin Maven . J'ai utilisé Tomcat 7 et essayé de déployer avec Tomcat:deploy-only au lieu de Tomcat7:deploy seulement . Si c'est votre cas, essayez Tomcat7:deploy-xxx.

6
ApriOri

Je pense qu’un point important ici est que vous devriez utiliser Tomcat 7 : deploy. Ne négligez pas le 7 .

J'utilisais l'auto-complétion et je finissais toujours par Tomcat: deploy et ignorais aveuglément le petit 7.

1
morecore

J'ai le même problème:

Caused by: org.Apache.maven.plugin.MojoExecutionException: Cannot invoke Tomcat manager
    at org.Apache.Tomcat.maven.plugin.Tomcat7.AbstractCatalinaMojo.execute(AbstractCatalinaMojo.Java:141)
    at org.Apache.Tomcat.maven.plugin.Tomcat7.AbstractWarCatalinaMojo.execute(AbstractWarCatalinaMojo.Java:68)
    at org.Apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.Java:134)
    at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:208)
    ... 20 more
Caused by: Java.net.SocketException: Connection reset
    at Java.net.SocketOutputStream.socketWrite(SocketOutputStream.Java:115)
    at Java.net.SocketOutputStream.write(SocketOutputStream.Java:155)
    at org.Apache.http.impl.io.AbstractSessionOutputBuffer.write(AbstractSessionOutputBuffer.Java:181)
    at org.Apache.http.impl.conn.LoggingSessionOutputBuffer.write(LoggingSessionOutputBuffer.Java:73)
    at org.Apache.http.impl.io.ContentLengthOutputStream.write(ContentLengthOutputStream.Java:115)
    at org.Apache.Tomcat.maven.common.deployer.TomcatManager$RequestEntityImplementation.writeTo(TomcatManager.Java:880)
    at org.Apache.http.entity.HttpEntityWrapper.writeTo(HttpEntityWrapper.Java:89)
    at org.Apache.http.impl.client.EntityEnclosingRequestWrapper$EntityWrapper.writeTo(EntityEnclosingRequestWrapper.Java:108)
    at org.Apache.http.impl.entity.EntitySerializer.serialize(EntitySerializer.Java:117)
    at org.Apache.http.impl.AbstractHttpClientConnection.sendRequestEntity(AbstractHttpClientConnection.Java:265)
    at org.Apache.http.impl.conn.ManagedClientConnectionImpl.sendRequestEntity(ManagedClientConnectionImpl.Java:203)
    at org.Apache.http.protocol.HttpRequestExecutor.doSendRequest(HttpRequestExecutor.Java:236)
    at org.Apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.Java:121)
    at org.Apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.Java:682)
    at org.Apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.Java:486)
    at org.Apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.Java:863)
    at org.Apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.Java:82)
    at org.Apache.Tomcat.maven.common.deployer.TomcatManager.invoke(TomcatManager.Java:742)
    at org.Apache.Tomcat.maven.common.deployer.TomcatManager.deployImpl(TomcatManager.Java:705)
    at org.Apache.Tomcat.maven.common.deployer.TomcatManager.deploy(TomcatManager.Java:388)
    at org.Apache.Tomcat.maven.plugin.Tomcat7.deploy.AbstractDeployWarMojo.deployWar(AbstractDeployWarMojo.Java:85)
    at org.Apache.Tomcat.maven.plugin.Tomcat7.deploy.AbstractDeployMojo.invokeManager(AbstractDeployMojo.Java:82)
    at org.Apache.Tomcat.maven.plugin.Tomcat7.AbstractCatalinaMojo.execute(AbstractCatalinaMojo.Java:132)
    ... 23 more

Je vérifie le journal de Tomcat (dir: log/localhost_access.xxx, puis j’ai constaté que, lorsque maven télécharge le fichier .wawr sur Tomcat, le code d’état http de la réponse est 403, ce qui signifie que l’accès était interdit.

Ensuite, j'ai vérifié que les applications manager et Host avaient le même répertoire: META-INF. Dans ce répertoire, j'ai trouvé le fichier context.xml, ce fichier limitant l'accès de manager et Host app. le texte clé est ci-dessous:

<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.Apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
  <Manager sessionAttributeValueClassNameFilter="Java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.Apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|Java\.util\.(?:Linked)?HashMap"/>
</Context>

Modifiez l'attribut allow pour laisser votre adresse IP accéder aux variables manager et Host, puis le problème sera résolu.

0
ziyao_zou