我有一个maven spring web应用程序,它部署在AWS Beanstalk上,工作正常。现在,我想将其转移到OCI VPS/VM,并使用maven命令使用tomcat 7-maven-plugin进行部署。使用命令行参数传递数据库凭据。已执行以下步骤,但部署失败。
1.安装了Maven和Tomcat 9。
1.在tomcat-users.xml中添加了角色为manager-script的用户
<user username="role-user<" password="role-pwd" roles="manager-script"/>
1.在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>
<username>role-user</username>
<password>role-pwd</password>
<path>/abc</path>
<update>true</update>
</configuration>
</plugin>
1.运行命令部署-mvn -Ddb.user=db-user -Ddb.pwd=db-pwd tomcat7:deploy
它在/webapps中上传WAR,然后失败并显示此消息FAIL - Deployed application at context path [/abc] but context failed to start
。
我在我的本地也试过,想也许在VM上的设置需要一些额外的配置,没有工作。
在日志中,它说没有找到db.user属性,因此由于某种原因无法读取命令行参数。
Invalid bean definition with name 'dataSource' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Could not resolve placeholder
在尝试上述步骤之前,我试图通过Tomcat UI上传WAR文件,但它不起作用,因为我不知道如何在那里传递额外的参数,或者是否可能。
如果有人能帮助这些方法中的任何一种,我们将不胜感激。
Tia
PS -我不是Java开发人员,这是我有时工作的一个附带项目,上一次我在一个项目中使用Java/Tomcat是7年多前的事了。所以,也许有一个愚蠢的错误或直接的解决方案,我不知道它。
2条答案
按热度按时间jdzmm42g1#
此命令并不意味着war将部署在具有这些系统属性(db.user、db.pwd)的tomcat虚拟机中。文档不够好(https://tomcat.apache.org/maven-plugin-2.2/run-mojo-features.html),但请查看
systemProperties
部分然后通过mvn命令运行:
希望能成功。
tf7tbtn22#
经过一些调整后,我能够使它工作
从插件详细信息中删除用户名,密码和url
使用以下命令部署
mvn -Ddb.user=db-user -Ddb.pwd=db-pwd tomcat7:run
它将启动自己的tomcat容器,因此不需要事先运行任何tomcat示例或在
tomcat-users.xml
中创建任何用户。当您在terminal/cmd上看到以下行时
应用程序已部署,可以在浏览器上检查
localhost:8080/abc
如果需要更改端口(例如-8081),则在
configuration
标签下添加<port>8081</port>
但现在我很好奇以前的事情是如何工作的,看到了很多关于这方面的帖子/博客。如果有人知道,请评论。