将Java网站部署到AWS Elastic Beanstalk

时间:2019-06-17 09:39:07

标签: java amazon-web-services amazon-elastic-beanstalk

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

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

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

文件概述:

  • orderform.html

  • requests.jsp

  • sendRequest.java

  • fillRequest.java

  • download.java

html只是提交给servlet sendRequest的一种形式。 jsp在mySQL数据库中显示一个表,还可以通过将其发送到fillRequest来更改表中的列,还可以使用download.java servlet下载以BLOB形式存储在db中的文件。

这是我第一次部署到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是prepareStatement)

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. [代理:错误] [pid 3655:tid 139803953698560] [客户端172.31.3.93:48782] AH00898:从/requests.jsp返回的远程服务器读取错误,引用者是:..... / orderform。 html

1 个答案:

答案 0 :(得分:0)

通过遵循此guide.

,我设法解决了问题

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