簡體   English   中英

將 Java 網站部署到 AWS Elastic Beanstalk

[英]Deploy Java Website to AWS Elastic Beanstalk

我正在嘗試部署一個包含 1 個 html、1 個 jsp 和 3 個 servlet(以及一些 css 和圖像)的 Web 應用程序。 Web 應用程序使用我在 AWS RDS 實例中托管的 mysql 數據庫。 我用過這個指南

我部署了 Web 應用程序並沒有收到任何錯誤,但是只加載了 html 頁面。 我使用工具帶直接從 Eclipse 部署。

在 tomcat v9 服務器上本地部署和測試工作正常,頁面之間的流程也很好。 但是,當我部署到運行平台的 AWS 彈性 beantalk 服務器時,使用以下平台:Tomcat 8 with Java 8 running on 64bit Amazon Linux/3.1.5(它讓我使用的最新版 tomcat 是 v8,這會是一個問題嗎?) ,那么唯一可以加載的頁面就是 html。 當嘗試加載 jsp 或提交 servlet 時,它最終會說此頁面不工作。

文件概述:

  • 訂單表格.html

  • 請求.jsp

  • 發送請求文件

  • 填充請求文件

  • 下載.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>

然而,一切都沒有改變。 我還看了這篇文章: 我需要保存一些圖片,如何將 ByteArrayInputStream 修復為 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
  1. [proxy:error] [pid 3655:tid 139803953698560] [client 172.31.3.93:48782] AH00898:從/requests.jsp返回的遠程服務器讀取錯誤,referer:...../orderform.html

我按照本指南設法解決了我的問題

我忘記做的是將我的網絡應用程序連接到 RDS 數據庫。

因此,為了修復它,我在默認 VPC 中啟動了 RDS。 然后我修改了 RDS 實例的安全組的入站規則。 我所做的修改是為elastic beanstalk實例的安全組添加了一個新規則。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM