已在上下文路径[/abc]部署应用程序,但上下文无法启动- Maven Spring项目问题

sulc1iza  于 2023-10-17  发布在  Maven
关注(0)|答案(2)|浏览(190)

我有一个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年多前的事了。所以,也许有一个愚蠢的错误或直接的解决方案,我不知道它。

jdzmm42g

jdzmm42g1#

mvn -Ddb.user=db-user -Ddb.pwd=db-pwd tomcat7:deploy

此命令并不意味着war将部署在具有这些系统属性(db.user、db.pwd)的tomcat虚拟机中。文档不够好(https://tomcat.apache.org/maven-plugin-2.2/run-mojo-features.html),但请查看systemProperties部分

<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>
     <systemProperties>
       <db.user>${db.user}</db.user>
       <db.pwd>${db.pwd}</db.pwd>
    </systemProperties>
 </configuration>
</plugin>

然后通过mvn命令运行:

mvn -Ddb.user=db-user -Ddb.pwd=db-pwd tomcat7:deploy

希望能成功。

tf7tbtn2

tf7tbtn22#

经过一些调整后,我能够使它工作
从插件详细信息中删除用户名,密码和url

<plugin>
 <groupId>org.apache.tomcat.maven</groupId>
 <artifactId>tomcat7-maven-plugin</artifactId>
 <version>2.2</version>
 <configuration>
     <path>/abc</path>
     <update>true</update>
     <systemProperties>
       <db.user>${db.user}</db.user>
       <db.pwd>${db.pwd}</db.pwd>
    </systemProperties>
 </configuration>
</plugin>

使用以下命令部署mvn -Ddb.user=db-user -Ddb.pwd=db-pwd tomcat7:run
它将启动自己的tomcat容器,因此不需要事先运行任何tomcat示例或在tomcat-users.xml中创建任何用户。
当您在terminal/cmd上看到以下行时

Aug 10, 2023 11:49:25 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]

应用程序已部署,可以在浏览器上检查localhost:8080/abc
如果需要更改端口(例如-8081),则在configuration标签下添加<port>8081</port>
但现在我很好奇以前的事情是如何工作的,看到了很多关于这方面的帖子/博客。如果有人知道,请评论。

相关问题