Поднимаем сервер в облаке (Jelastic + Java + Tomcat + MySQL + BlazeDS) Часть II
Запись от PainKiller размещена 27.02.2014 в 12:58
Итак, приступим к созданию окружения. Заходим в консоль Jelastic, (если надо регистрируемся, первые 5 дней бесплатные), нажимаем кнопку «Создать окружение», выставляем нужную нам конфигурацию (Tomcat + MySQL). На сервер можно выставить ресурсы (они измеряются в клаудлетах), рекомендую выставить 3 и тогда хостинг будет почти бесплатный. На сервер в корень автоматически загружается проект Helloword.war, его можно скачать, переименовать расширение в zip, распаковать и ознакомится со структурой. Из консоли заходим в phpMyAdmin, тут нужен пароль, который приходит к вам на почту в письме от Jelastic, создаем пользователя (у меня db_user), задаем ему пароль (у меня password), и создаем для него БД (у меня с таким же названием db_user). В базе данных создаем одну единственную таблицу names с одним полем (name) вводим туда имена, они нужны для теста коннекта к БД, особо ленивые могут воспользоваться этим SQL-скриптом:
Код:
CREATE TABLE IF NOT EXISTS names (name TEXT);
INSERT INTO names values ("Nike");
INSERT INTO names values ("Саша");
INSERT INTO names values ("Петя");
INSERT INTO names values ("Вася");
INSERT INTO names values ("Катя");
INSERT INTO names values ("Таня");
Создаем web-проект в Netbeans (я пользуюсь ей, поэтому буду ссылаться на эту IDE), знакомимся с документацией Jelastic по подключению БД к Java, и надо сказать, что тут у меня возник небольшой затык, т.к. код у них приведен нерабочий, поэтому привожу здесь свою полную, рабочую версию своего класса подключения к БД:
Код:
import java.sql.*;
import java.util.logging.*;
import java.io.IOException;
import java.util.*;
/**
* ...
* @author PainKiller
*/
public class DBManager
{
private String host = "jdbc:mysql://mysql-env-XXXXX.jelasticloud.com/db_user";
private String username = "db_user";
private String password = "password";
private String driver = "com.mysql.jdbc.Driver";
public List drivers;
private ArrayList rowValues = new ArrayList();
private final static String getData = "SELECT name FROM `names`";
public Connection createConnection() throws IOException, ClassNotFoundException, SQLException
{
try
{
DriverManager.registerDriver((Driver)Class.forName(driver).newInstance());
} catch (InstantiationException ex)
{
Logger.getLogger(DBManager.class.getName()).log(Level.SEVERE, null, ex);
rowValues.add(ex.toString());
} catch (IllegalAccessException ex)
{
Logger.getLogger(DBManager.class.getName()).log(Level.SEVERE, null, ex);
rowValues.add(ex.toString());
}
Connection connection = DriverManager.getConnection(host, username, password);
//drivers = Collections.list(DriverManager.getDrivers());
System.out.println("CONNECTION: " + connection);
return connection;
}
public ArrayList<String> getResults()
{
ResultSet rs;
try
{
Statement statement = createConnection().createStatement();
rs = statement.executeQuery(getData);
while (rs.next())
{
rowValues.add(rs.getString(1));
}
} catch (IOException ex)
{
Logger.getLogger(DBManager.class.getName()).log(Level.SEVERE, null, ex);
rowValues.add(ex.toString());
} catch (ClassNotFoundException ex)
{
Logger.getLogger(DBManager.class.getName()).log(Level.SEVERE, null, ex);
rowValues.add(ex.toString());
} catch (SQLException ex)
{
ex.printStackTrace();
rowValues.add(ex.toString());
}
return rowValues;
}
}
Теперь нам нужно написать сервлет, который выведет нам содержимое нашей БД. Создаем в NetBeans класс сервлета, указываем ему контекст “/testdb”, и переопределяем в нем один единственный метод:
Код:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
DBManager dbm = new DBManager();
//получаем данные из БД, сохраняем их в ArrayList
ArrayList<String> res = dbm.getResults();
try
{
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet TestBD</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet TestBD at " + request.getContextPath() + "</h1>");
//выводим данные в хтмл
for (int i = 0; i < res.size(); i++)
{
out.println("<p>" + res.get(i) + "</p>");
}
out.println("</body>");
out.println("</html>");
} finally
{
out.close();
}
}
где http://env-XXXXXXX.jelasticloud.com/ - это адрес вашего окружения в Jelastic. Если мы все сделали правильно, мы должны увидеть список наших имен из БД, если что то пошло не так мы увидим сообщение об ошибке. В принципе, так можно формировать XML и отдавать его клиенту, но мы будем использовать более быстрый и удобный способ.
В следующем посте подключим BlazeDS, и примем данные с сервера на флексовом клиенте.
Прикладываю исходники серверной части, сразу предупреждаю, что они не рабочие т.к. свои адреса, пароли, явки я палить не стал, да и окружение у вас будет другое, кладу их только для ознакомления. В идеале лучше сделать проект самому с нуля, меньше шансов ошибиться в конфигах и с подключением к БД.
Всего комментариев 0
Комментарии
Последние записи от PainKiller
- Имитируем браузер (на примере залогинивания из приложения в контакт) (28.08.2014)
- Поднимаем сервер в облаке (Jelastic + Java + Tomcat + MySQL + BlazeDS) Часть III (03.03.2014)
- Поднимаем сервер в облаке (Jelastic + Java + Tomcat + MySQL + BlazeDS) Часть II (27.02.2014)
- Поднимаем сервер в облаке (Jelastic + Java + Tomcat + MySQL + BlazeDS) Часть I (27.02.2014)












