2017-01-08 4 views
0

Я использую инструменты AWS для развертывания простого приложения.Веб-службы Amazon - Конфигурация RDS

У меня есть экземпляр RDS (Oracle), и он работает. (Я могу получить к нему доступ из SQL Developer на моем локальном компьютере)

С другой стороны, я создал в Eclipse простое приложение в jsp, которое перебирает таблицу в моем экземпляре Oracle (выше metioned) и показывает значения в экран.

test.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<%@page import="dbconnection.DataSource"%> 
<%@page import="java.sql.*"%> 
<%@page import="oracle.jdbc.pool.OracleDataSource"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Tercera Prueba</title> 
</head> 
<body> 
<% 
DataSource ods = new DataSource(); 
Connection conn=ods.connect(); 
out.println (ods.getUserName(conn)); 
// Close the connection 
conn.close(); 
conn = null; 
%> 

</body> 
</html> 

DataSource.java

import oracle.jdbc.pool.OracleDataSource; 

public class DataSource 
{ 

    public String getUserName(Connection conn) 
     throws SQLException 
    { 
    // Create a Statement 
    Statement stmt = conn.createStatement(); 
    String str=""; 
    // Select the ENAME column from the EMP table 
    ResultSet rset = stmt.executeQuery ("select USER from dual"); 

    // Iterate through the result and print the employee names 
    while (rset.next()) 
     str= "User name is " + rset.getString (1); 

    // Close the RseultSet 
    rset.close(); 
    rset = null; 

    // Close the Statement 
    stmt.close(); 
    stmt = null; 

    return (str); 
    } 

    public Connection connect() throws SQLException{ 
     // Create a OracleDataSource instance explicitly 
     OracleDataSource ods = new OracleDataSource(); 

     // Set the user name, password, driver type and network protocol 
     ods.setDriverType("thin"); 
     ods.setServerName("xxxxxx"); 
     ods.setDatabaseName("oracledb"); 
     ods.setPortNumber(1521); 
     ods.setUser("xxxxxx"); 
     ods.setPassword("xxxxxxx"); 

     Connection conn = ods.getConnection(); 

     return (conn); 

    } 
} 

После этого приложение развертывается в сервере Apache Tomcat (LOCALHOST), все работает нормально, и значение отображается на экране.

everything ok

Однако, как только это приложение развертывается через сервис Elastic Beanstalk (используя AWS инструментарий для Eclipse), веб-страница занимает слишком много времени для загрузки, и, наконец, не появляется ничего (страницы в пустой). На самом деле, он также не показывает ошибок.

nothing appears

Я построчно отладки, и все идет хорошо до тех пор пока линия:

Connection conn=ods.connect(); 

Я думаю, что это что-то связанное с конфигурацией моего экземпляра RDS Oracle. но я не уверен. это то, как он настроен.

mi aws rds Oracle instance

У вас есть какие-либо идеи?

Большое спасибо

+0

Является ли имя сервера, которое вы скрывали в методе подключения так же, как конечная точка на вашем изображении? Происходит ли попытка подключения отключиться или получить другую ошибку? Первая мысль заключается в том, что это звучит как проблема с брандмауэром, но должна ли она быть исходящей от экземпляра AWS, на котором размещен JSP? –

+0

Да. имя сервера совпадает с конечной точкой на изображении. Когда я выполняю, ошибок нет, просто принимает aprox. 1 минута, а затем показывает пустую страницу. и пытаюсь ответить на ваш последний вопрос, да, как я понимаю, я могу подключиться к экземпляру RDS Oracle, просто предоставив имя пользователя, пароля, хоста, порта, db. Это то, что я сделал для подключения с моего локального компьютера к database (usiing Apache Tomcat) – Lev

ответ

1

обеспечили вам, что RDS Instance и Elastic Beanstalk имеют соответствующие группы безопасности?

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.managing.ec2.html#using-features.managing.ec2.securitygroups

+0

Нет, я не имел, я только что сконфигурировал его. он работает сейчас! Спасибо. – Lev

+0

Эй, не волнуйся, рад, что ты это понял. Вы также можете затянуть эту входящую группу безопасности для экземпляра RDS. Вместо 0.0.0.0/0 вы можете просто поместить группу безопасности в конфигурацию Elastic Beanstalk. Если вы наберете 's', консоль AWS должна автоматически выбрать для вас выбор. – grook5

0

решаемые !.

Необходимо настроить группы безопасности.

У моего RDS Instace был только один входящий ip (это был мой локальный компьютер, вот почему он работал с Apache Tomcat Server). Для разрешения всех ip-адресов вы должны указать 0.0.0.0/0 как ip.

:)

Смежные вопросы