Maven tomcat 插件 - 无法调用 Tomcat 管理器
Maven tomcat plugin - cannot invoke Tomcat manager
我正在尝试使用 Maven(版本 3.3.3)在 Tomcat 7 上部署我的 Web 应用程序,但我遇到了标题中列出的异常。
我尝试了很多解决方案,但没有一个适合我。
我有:
已编辑 tomcat-users.xml
($CATALINA_HOME/conf/tomcat-user.xml):
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="user" password="pass" roles="manager-script"/>
<user username="user2" password="pass2" roles="manager-gui"/>
</tomcat-users>
已编辑 settings.xml
($USER_HOME/.m2/settings.xml):
<servers>
<server>
<id>RemoteServer</id>
<username>user</username>
<password>pass</password>
</server>
</servers>
已配置 pom.xml
($MY_PROJECT/pom.xml):
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<server>RemoteServer</server>
<url>http://my.public.ip.address:8080/manager/text</url>
<username>user</username>
<password>pass</password>
</configuration>
</plugin>
已编辑 context.xml
($CATALINA_HOME/webapps/manager/META-INF/context.xml)
<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>
补充说明:
我尝试同时部署到 8.0.45 和 8.5.16(对于后者服务器,context.xml 中的配置是基础配置)
我可以毫无问题地访问管理器 GUI
pom "should" 中的 username/password 有点矫枉过正,但我读到它可能会有所帮助,无论如何我也尝试过不使用这些属性
如果我测试 manager/text(例如 manager/text/从浏览器部署),我会收到响应(失败 - 为命令 [/deploy] 提供的参数无效并且没关系)
我得到的错误是:
[ERROR] 无法在项目 ShareRideServer 上执行目标 org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy (default-cli): 无法调用 Tomcat 经理:连接被拒绝:连接 -> [帮助 1]
org.apache.maven.lifecycle.LifecycleExecutionException: 无法在项目 ShareRideServer 上执行目标 org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy (default-cli): 无法调用 Tomcat 管理器
在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216)
在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
在 org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
在 org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
在 org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
在 org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
在 org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
在 org.apache.maven.cli.MavenCli.execute(MavenCli.java:862)
在 org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)
在 org.apache.maven.cli.MavenCli.main(MavenCli.java:197)
在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在 java.lang.reflect.Method.invoke(Method.java:497)
在 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
在 org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
在 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
在 org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
原因:org.apache.maven.plugin.MojoExecutionException:无法调用 Tomcat 管理器
在 org.apache.tomcat.maven.plugin.tomcat7.AbstractCatalinaMojo.execute(AbstractCatalinaMojo.java:141)
在 org.apache.tomcat.maven.plugin.tomcat7.AbstractWarCatalinaMojo.execute(AbstractWarCatalinaMojo.java:68)
在 org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 还有 20 个
原因:java.net.ConnectException:连接被拒绝:连接
在 java.net.DualStackPlainSocketImpl.connect0(本机方法)
在 java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
在 java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
在 java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
在 java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
在 java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
在 java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
在 java.net.Socket.connect(Socket.java:589)
在 org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:117)
在 org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:178)
在 org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:304)
在 org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:610)
在 org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:445)
在 org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:863)
在 org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
在 org.apache.tomcat.maven.common.deployer.TomcatManager.invoke(TomcatManager.java:742)
在 org.apache.tomcat.maven.common.deployer.TomcatManager.deployImpl(TomcatManager.java:705)
在 org.apache.tomcat.maven.common.deployer.TomcatManager.deploy(TomcatManager.java:388)
在 org.apache.tomcat.maven.plugin.tomcat7.deploy.AbstractDeployWarMojo.deployWar(AbstractDeployWarMojo.java:85)
在 org.apache.tomcat.maven.plugin.tomcat7.deploy.AbstractDeployMojo.invokeManager(AbstractDeployMojo.java:82)
在 org.apache.tomcat.maven.plugin.tomcat7.AbstractCatalinaMojo.execute(AbstractCatalinaMojo.java:132)
... 还有 23 个
答案是:配置正确。然而,总是检查你的防火墙是否在工作......我尝试了另一个连接,我没有遇到任何问题。似乎防火墙正在默默地杀死所有请求。
我正在尝试使用 Maven(版本 3.3.3)在 Tomcat 7 上部署我的 Web 应用程序,但我遇到了标题中列出的异常。
我尝试了很多解决方案,但没有一个适合我。
我有:
已编辑
tomcat-users.xml
($CATALINA_HOME/conf/tomcat-user.xml):<tomcat-users> <role rolename="manager-gui"/> <role rolename="manager-script"/> <user username="user" password="pass" roles="manager-script"/> <user username="user2" password="pass2" roles="manager-gui"/> </tomcat-users>
已编辑
settings.xml
($USER_HOME/.m2/settings.xml):<servers> <server> <id>RemoteServer</id> <username>user</username> <password>pass</password> </server> </servers>
已配置
pom.xml
($MY_PROJECT/pom.xml):<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <server>RemoteServer</server> <url>http://my.public.ip.address:8080/manager/text</url> <username>user</username> <password>pass</password> </configuration> </plugin>
已编辑
context.xml
($CATALINA_HOME/webapps/manager/META-INF/context.xml)<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>
补充说明:
我尝试同时部署到 8.0.45 和 8.5.16(对于后者服务器,context.xml 中的配置是基础配置)
我可以毫无问题地访问管理器 GUI
pom "should" 中的 username/password 有点矫枉过正,但我读到它可能会有所帮助,无论如何我也尝试过不使用这些属性
如果我测试 manager/text(例如 manager/text/从浏览器部署),我会收到响应(失败 - 为命令 [/deploy] 提供的参数无效并且没关系)
我得到的错误是:
[ERROR] 无法在项目 ShareRideServer 上执行目标 org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy (default-cli): 无法调用 Tomcat 经理:连接被拒绝:连接 -> [帮助 1] org.apache.maven.lifecycle.LifecycleExecutionException: 无法在项目 ShareRideServer 上执行目标 org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy (default-cli): 无法调用 Tomcat 管理器 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) 在 org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) 在 org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) 在 org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) 在 org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) 在 org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) 在 org.apache.maven.cli.MavenCli.execute(MavenCli.java:862) 在 org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286) 在 org.apache.maven.cli.MavenCli.main(MavenCli.java:197) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:497) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 在 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 在 org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 原因:org.apache.maven.plugin.MojoExecutionException:无法调用 Tomcat 管理器 在 org.apache.tomcat.maven.plugin.tomcat7.AbstractCatalinaMojo.execute(AbstractCatalinaMojo.java:141) 在 org.apache.tomcat.maven.plugin.tomcat7.AbstractWarCatalinaMojo.execute(AbstractWarCatalinaMojo.java:68) 在 org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) ... 还有 20 个 原因:java.net.ConnectException:连接被拒绝:连接 在 java.net.DualStackPlainSocketImpl.connect0(本机方法) 在 java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) 在 java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) 在 java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 在 java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 在 java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 在 java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 在 java.net.Socket.connect(Socket.java:589) 在 org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:117) 在 org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:178) 在 org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:304) 在 org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:610) 在 org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:445) 在 org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:863) 在 org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) 在 org.apache.tomcat.maven.common.deployer.TomcatManager.invoke(TomcatManager.java:742) 在 org.apache.tomcat.maven.common.deployer.TomcatManager.deployImpl(TomcatManager.java:705) 在 org.apache.tomcat.maven.common.deployer.TomcatManager.deploy(TomcatManager.java:388) 在 org.apache.tomcat.maven.plugin.tomcat7.deploy.AbstractDeployWarMojo.deployWar(AbstractDeployWarMojo.java:85) 在 org.apache.tomcat.maven.plugin.tomcat7.deploy.AbstractDeployMojo.invokeManager(AbstractDeployMojo.java:82) 在 org.apache.tomcat.maven.plugin.tomcat7.AbstractCatalinaMojo.execute(AbstractCatalinaMojo.java:132) ... 还有 23 个
答案是:配置正确。然而,总是检查你的防火墙是否在工作......我尝试了另一个连接,我没有遇到任何问题。似乎防火墙正在默默地杀死所有请求。