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:申し訳ありませんが、このプロジェクトに取り組んでいないため、ソリューションを確認できません。しかし、私はこの質問を閉じませんので、あなたのソリューションがうまくいくと思うならば、ここにそれを残して自由に感じて、それが誰かに役立つかもしれません。
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
同じ問題がありました。私の場合、実行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>
Tomcat 7メカニズムを使用したmavenプラグインのデプロイメントを理解するにはしばらく時間がかかりましたが、次のように機能します。
コマンドで使用する場合:
mvn Tomcat7:deploy
Tomcatサーバーを最初に初期化する必要があります! IDEから開始するか、%Tomcat_HOME%\ binフォルダーにある起動スクリプトで開始するかを選択できます。
mvn Tomcat7:run-war
上記のスクリプトは自動的にサーバーを起動するため、Tomcatを初期化する必要はありません。ただし、コンテキスト/ managerは、ブラウザーで使用可能になりません。
コマンド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>
それが役に立てば幸い!
同じ問題があり、TomcatバージョンとMavenプラグインバージョンのように見えました。 Tomcat 7を使用し、Tomcat:deploy-only
の代わりに Tomcat7:deploy
のみ。この場合は、Tomcat7:deploy-xxx
。
ここで重要な点は、Tomcat 7:deployを使用する必要があることです。 7を見落とさないでください。
私はオートコンプリートを使用しており、常にTomcat:deployで終了し、小さな7を盲目的に無視しました。
私は同様の問題を抱えています:
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
であり、アクセスが禁止されたことを確認しました。
次に、manager
とHost
アプリのディレクトリが同じであることを確認しました: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にアクセスできるようにすると、問題は解決しました。