gpt4 book ai didi

java - 将 Java 网站部署到 AWS Elastic Beanstalk

转载 作者:行者123 更新时间:2023-12-02 04:22:24 25 4
gpt4 key购买 nike

我正在尝试部署一个由 1 个 html、1 个 jsp 和 3 个 servlet(以及一些 css 和图像)组成的 Web 应用程序。该 Web 应用程序使用我在 AWS RDS 实例中托管的 mysql 数据库。我用过this guide

我部署了 Web 应用程序,没有收到任何错误,但仅加载 html 页面。我使用工具带直接从 eclipse 进行部署。

在 tomcat v9 服务器上本地部署和测试工作正常,页面之间的流程也很好。但是,当我部署到运行以下平台的 AWS elastic beanstalk 服务器时: Tomcat 8 和 Java 8 在 64 位 Amazon Linux/3.1.5 上运行(它允许我使用的最新版 tomcat 是 v8,这可能是个问题吗?) ,那么唯一可以加载的页面就是html。当尝试加载 jsp 或提交 servlet 时,它最终会说此页面无法正常工作。

文件概述:

  • orderform.html

  • requests.jsp

  • sendRequest.java

  • fillRequest.java

  • 下载.java

html 只是提交给 servlet sendRequest 的表单。该 jsp 显示 mySQL 数据库中的一个表,还允许您通过将其发送到 fillRequest 来更改表中的列,还允许您使用 download.java servlet 下载作为 BLOB 存储在数据库中的文件。

这是我第一次部署到 AWS beanstalk,我不确定在此过程中是否做错了什么。由于代码在本地运行,我不确定应该包含哪些代码,请让我知道哪些其他信息对发布有帮助,然后我将编辑我的问题。非常感谢任何有关我应该在哪里查找问题所在以及如何解决此问题的帮助!

日志:

日志摘要:1.

17-Jun-2019 09:22:05.095 SEVERE [http-nio-8080-exec-3] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [sendRequest] in context with path [] threw exception
java.lang.ClassCastException: java.io.ByteArrayInputStream cannot be cast to java.io.FileInputStream
at requests.sendRequest.doPost(sendRequest.java:65)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:684)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1152)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1539)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1495)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)

我尝试解决的问题:

我看了这篇文章:Why did Servlet.service() for servlet jsp throw this exception?

因此,我将以下内容添加到我的 pom.xml 中:

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>

然而,一切都没有改变。我还看了这篇文章:I need save some picture,how can I fix that ByteArrayInputStream to FileInputStream?

结果我改变了:(ps是一个preparedStatement)

FileInputStream fileContent = (FileInputStream) filePart.getInputStream();
ps.setBinaryStream(10, fileContent);

InputStream fileContent = filePart.getInputStream();
ps.setBinaryStream(10, fileContent);

仍然没有改变...

2.

17-Jun-2019 12:10:59.411 INFO [http-nio-8080-exec-10] org.apache.coyote.http11.AbstractHttp11Processor.process Error parsing HTTP request header
Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
at org.apache.coyote.http11.AbstractNioInputBuffer.parseRequestLine(AbstractNioInputBuffer.java:287)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1065)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1539)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1495)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)

3.

com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure

com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
  • [代理:错误] [pid 3655:tid 139803953698560] [客户端 172.31.3.93:48782] AH00898:从/requests.jsp 返回的远程服务器读取时出错,引荐来源:...../orderform。 html

  • 最佳答案

    我按照此 guide. 设法解决了我的问题

    我忘记做的是将我的网络应用程序连接到 RDS 数据库。

    因此,为了解决这个问题,我在 default VPC 中启动了 RDS 。然后,我修改了 RDS 实例安全组的入站规则。我所做的修改是为elastic beanstalk实例的安全组添加一条新规则。

    关于java - 将 Java 网站部署到 AWS Elastic Beanstalk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56628632/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com