问题描述
更新2020年8月12日上午11:00-我在tomcat9($ CATALINA_BASE)文件夹中检查了日志文件夹catalina.2020-08-12.log日志,发现三个异常“ org.apache.catalina.LifecycleException:协议处理程序初始化失败”,“ java .net.BindException:地址已在使用中(绑定失败)“,” java.lang.IllegalArgumentException:在HTTP协议[HTTP / 1.10x0aHost:]中发现无效字符。 这里是完整的错误日志:https://drive.google.com/file/d/1pSk5ESHLIRP5Srxwr4R1Tp_1TTcYMf2Y/view?usp=sharing和https://drive.google.com/file/d/1C-RALR3066_hYKeoo4dIJqTKwNDOQ0R0/view?usp=sharing。
更新2020年8月12日上午11:30-重新启动tomcat并尝试再次访问我的api时,通过检查localhost.2020-08-12.log日志,我发现有两个servlet调度程序正在运行:https://drive.google.com/file/d/1GFKUIDLtZrAraHyMjyyWV9kXK33gQ-Mu/view?usp=sharing。
更新2020年8月12日上午11:35-HA HAAAA我看了看catalina.out日志(最终你们中的一些人可能在屏幕上大喊大叫,例如“ CHECK the CATALINA.OUT FILE”)。我检查了一下,发现异常:“ java.lang.IllegalArgumentException:需要dataSource或dataSourceClassName或jdbcUrl”:https://drive.google.com/file/d/1A7ZLh70IHOmWXfQ56bgtq951EE_AX68P/view?usp=sharing。现在,如果我进入我的Hikari配置所在的PostgresDataSource类:https://drive.google.com/file/d/1lYN1dTqiAM4ZqliRGC5J5_VWhNeN-k2d/view?usp=sharing,并查看先前的https://drive.google.com/file/d/1xvPhPneVjMU4BoN6F0Q63l2wCnF20BYq/view?usp=sharing的application.yaml文件,则存在jdbc url,因为它是同一URL我用来开发。现在postgres已经设置好了,我在ubuntu小滴上手动制作了所有表格。我尚未下载适用于tomcat的jdbc postgresql驱动程序。
更新2020年8月12日1:20 PM-现在设置了jdbc驱动程序后,我从catalina.out日志中收到此错误:“无法获取jdbcUrl = java:/ comp / env / jdbc:postgresql:// localhost:5432 / **的驱动程序实例**”,然后出现“原因:java.sql.sqlException:没有合适的驱动程序”。我使用此链接的postgresql部分进行了设置:https://tomcat.apache.org/tomcat-9.0-doc/jndi-datasource-examples-howto.html。
嗨,我正在将Digital Ocean与apache tomcat 9配合使用,以部署使用IntelliJ生成的war文件。我有使用mvn clean install生成的war文件,当我访问端口8080上的Drop IP地址时,我得到了默认的tomcat页面。我不确定为什么即使我的Spring Boot应用程序也出现了500错误而没有堆栈跟踪信息当我在IntelliJ中运行它时,效果很好。当我转到托管应用程序时,我试图在我的application.yml文件中配置一些内容,但CSS样式也未显示,但仍然无法正常工作。我认为这可能与CORS的春季安全性问题有关,但是我对此领域的知识不足,无法确定。我使用sudo $ CATALINA_HOME / bin / startup.sh启动了服务器,并说tomcat已启动,并且在浏览器中显示默认的tomcat页面。我在目标文件夹中使用了hobynapi.war文件,可以在https://drive.google.com/file/d/1XXga1Bgf5-_81gceuWjpvVIX6J0jiNgQ/view?usp=sharing上查看目标文件夹目录的图片。我将使用mvn全新安装后生成的war文件复制到了/ var / lib / tomcat9 / webapps文件夹中。然后,我再次运行sudo $ CATALINA_HOME / bin / startup.sh,它再次成功运行了tomcat。然后,当我尝试使用具有Spring Security基本身份验证的admin帐户登录时,发生了错误,并出现500错误。如果这意味着任何意义,那么我在项目结构设置的构件部分中也没有构件。
更新2020年8月12日上午10:00-我删除了pom.xml文件中的排除标签以及文件底部的个人档案标签。这是因为我在这里阅读到,使用spring-boot-starter-tomcat依赖关系会为您删除嵌入式服务器:https://developer.okta.com/blog/2019/04/16/spring-boot-tomcat。
这是应该没有CSS样式的屏幕:
https://drive.google.com/file/d/1CEKuB556ek8pTZspvprNTa9M5XCI7qtT/view?usp=sharing
这是我没有堆栈跟踪的错误:
https://drive.google.com/file/d/19gYGQFhZdZ_4IwwGE5tQzb4dTqlBpg9L/view?usp=sharing
https://drive.google.com/file/d/1ir5uBuBuJqCb_U8Jarly9mraO468QA_y/view?usp=sharing https://drive.google.com/file/d/1ma1_EPro4NvJiOy8lWPrAmGLMrVWHZPS/view?usp=sharing https://drive.google.com/file/d/11NDIwA9g02zkCKnsmYSLSNF5R-BrFpgt/view?usp=sharing https://drive.google.com/file/d/1p6T9-oOwyfj7NUsLxTRLtqXKHU4qHrZx/view?usp=sharing https://drive.google.com/file/d/1spD7KT-3WBo7KFF0Hb_WgJ5dVKRHF-un/view?usp=sharing https://drive.google.com/file/d/16QtJQtT9zaU7nGcpnm2KXJ6jiLywNt5s/view?usp=sharing https://drive.google.com/file/d/1cnZJshFS5xW-HbeaH_C_e6KcDo9xYRdY/view?usp=sharing
这是我的application.yml文件:
https://drive.google.com/file/d/1xvPhPneVjMU4BoN6F0Q63l2wCnF20BYq/view?usp=sharing https://drive.google.com/file/d/1B9_5WueRvqQv4ODsJAfbUzGIm-xaaSYV/view?usp=sharing
这是我的主要应用程序Java文件:
https://drive.google.com/file/d/1K9lzzlzIKT8irqXsPY1WeiBvN-9vsoWT/view?usp=sharing
这是我的配置包中的Web配置文件:
https://drive.google.com/file/d/19EYa2kkqqPu9Wh8nN-U02szSVBT30lOP/view?usp=sharing https://drive.google.com/file/d/11Zw8dLrAu6c_OI29j0NsljvXdeDam0-t/view?usp=sharing
这是我的配置包中的spring安全配置文件:
https://drive.google.com/file/d/1inqlTjfxahcF6ZeJ_xkJM18UgsDu119n/view?usp=sharing https://drive.google.com/file/d/1nTeYiKhiNOH71Km-s_T4IT1BKRyJG4mS/view?usp=sharing
我希望这些图片有助于诊断问题。
解决方法
我知道了。首先,我将postgres jdbc url更改回原来的URL,然后将数据源配置文件更改为以下内容:https://drive.google.com/file/d/1Zmv8cfnVzW8NcQfjNxN14D4aKFaXpdfU/view?usp=sharing。我还搞砸了的一件重要事情是,在下载postgresql时没有为默认用户“ postgres”设置密码。我这样做的原因是“ ALTER USER postgres PASSWORD'myPassword';”在postgresql命令行中。在postgresql命令行中对postgresql进行任何更改之后,还请确保使用systemctl restart postgresql。