web-dev-qa-db-ja.com

tomcat:deploy: "Tomcatマネージャーを起動できません:接続が拒否されました"

Mavenを使用してアプリをTomcatにデプロイしようとしましたが、 this サンプルが見つかりました。

それは私の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>

そして、Tomcat:deployこのエラーが表示されます:Cannot invoke Tomcat manager: Connection refused。それは完全なスタックトレースです:

[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

認証を使用したくなかったため、これらの手順をスキップしました。これによりエラーが発生する可能性があると考えましたが、追加しようとしても何も変わりませんでした。私の間違いがどこにあるか知っていますか?

UPD:申し訳ありませんが、このプロジェクトに取り組んでいないため、ソリューションを確認できません。しかし、私はこの質問を閉じませんので、あなたのソリューションがうまくいくと思うならば、ここにそれを残して自由に感じて、それが誰かに役立つかもしれません。

32
uncle Lem

Tomcat 7プラグインを使用する場合、次の手順を実行します。

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"/>

走る

mvn Tomcat7:deploy
28
superkruger

同じ問題がありました。私の場合、実行run-war設定のあるTomcat7のdeployの代わりに:

         <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>
17
levo4ka

Tomcat 7メカニズムを使用したmavenプラグインのデプロイメントを理解するにはしばらく時間がかかりましたが、次のように機能します。

コマンドで使用する場合:

mvn Tomcat7:deploy

Tomcatサーバーを最初に初期化する必要があります! IDEから開始するか、%Tomcat_HOME%\ binフォルダーにある起動スクリプトで開始するかを選択できます。

実行からの出力は次のようになります。 enter image description here

mvn Tomcat7:run-war

上記のスクリプトは自動的にサーバーを起動するため、Tomcatを初期化する必要はありません。ただし、コンテキスト/ managerは、ブラウザーで使用可能になりません。

実行からの出力は次のようになります。 enter image description here

コマンドmvn clean packageを実行して、プロジェクトの以前のクリーニングを実行することもできます。

いくつかの追加構成:

[%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>

それが役に立てば幸い!

9
aelkz

同じ問題があり、TomcatバージョンとMavenプラグインバージョンのように見えました。 Tomcat 7を使用し、Tomcat:deploy-only の代わりに Tomcat7:deployのみ。この場合は、Tomcat7:deploy-xxx

6
ApriOri

ここで重要な点は、Tomcat 7:deployを使用する必要があることです。 7を見落とさないでください。

私はオートコンプリートを使用しており、常にTomcat:deployで終了し、小さな7を盲目的に無視しました。

1
morecore

私は同様の問題を抱えています:

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

Tomcat(dir:log/localhost_access.xxxのログを確認し、mavenが.wawrファイルをTomcatにアップロードすると、応答のhttpステータスコードが403であり、アクセスが禁止されたことを確認しました。

次に、managerHostアプリのディレクトリが同じであることを確認しました:META-INF。このディレクトリで、context.xmlというファイルを見つけました。このファイルは、managerおよびHost appのアクセスを制限します。キーテキストは以下のとおりです。

<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>

属性allowを変更して、IPがmanagerおよびHost appにアクセスできるようにすると、問題は解決しました。

0
ziyao_zou