Поднимаем сервер в облаке (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)