• J2EE и высокие нагрузки?

    Zorkus
    @Zorkus
    Сказанное про стек J2EE тоже верно, для веб-хайлоада часто применяются только сервлет контейнеры (Tomcat / Jetty), с лоадбалансингом, + часто выделенный апач/nginx как фронтэнд для статики.

    Если же это не-веб хайлоад (банки, биржи), так там часто стек J2EE и ну нужен вовсе, зачем? Там нужна J2SE, multithreading, Spring для каркаса приложения, и какой нибудь hadoop (или что-то самописное) для распределения вычислений по нодам.
    Ответ написан
    Комментировать
  • J2EE и высокие нагрузки?

    Zorkus
    @Zorkus
    Примеры нагруженных проектов из топа Алексы, юзающие Java: Amazon, eBay, LinkedIn, Google.

    Очень много на Java в банках (особенно в инвестиционной аналитике), в биржевых приложениях, как уже было сказано.
    Ответ написан
    1 комментарий
  • J2EE и высокие нагрузки?

    @dborovikov
    J2EE — это готовый стек технологий. В технологически сложных высоконагруженных проектах вообще готовые наборы не очень любят. Тоже самое касается и PHP — поспрашивайте, чаще всего высоконагруженные приложения пишут на голом пыхе, а не на Zend-е каком-нибудь. Есть исключения. Например твиттер был на RoR. Но в итоге от RoR там рога и копыта остались. Сделать веб-фему с балансером — задача простая. По сути у JEE ничего особо больше и нету. Ради этого тащить такого монстра в проект не имеет смысл. Разве только для «highload-начальный уровень» (см. комменты выше) где ничего кроме веб-фермы-то и не нужно.
    Ответ написан
    2 комментария
  • Программирование без математики

    simplecode
    @simplecode
    Если есть желание — это очень хорошо, иди и учись…
    Большинство абитуриентов вообще не понимают куда идут учиться…
    Ответ написан
    Комментировать
  • DDOS POST Запросами

    @itrabotnik
    у вас какая структура
    nginx+php
    nginx+apache+php?
    вместо php можно вставить любой другой язык.
    Пишите, постараемся помочь
    Ответ написан
    Комментировать
  • DDOS POST Запросами

    @bondbig
    Самый простой наколенный способ — парсить лог и заносить банлист в ipset.
    Можно купить услугу у qrator или у каспера, например.
    Ответ написан
    Комментировать
  • Новый раздел "Ссылки"

    Я похоже слепой, но кроме как в самом низу страницы в столбце «Разделы» я нигде не увидел «ссылки на ссылки»…
    Ответ написан
    2 комментария
  • Java сертификация. Украина

    @antalus
    Оракл недавно присылал письмо о том что они вроде бы отказались от прометрика:

    As announced in a previous communication, beginning today — Java, Oracle Solaris, MySQL, and NetBeans certification exams are now available for registration through our new test delivery vendor — Pearson VUE — and are no longer available through Prometric testing centers. Candidates can now visit pearsonvue.com/oracle to find more information, register for an exam or locate a testing center in their area.
    Ответ написан
    1 комментарий
  • Java сертификация. Украина

    vermilion1
    @vermilion1
    Я проходил во Львове (в Softserve) около года назад. Стоил экзамен тогда 125$
    Покупал ваучер на prometric.com.
    Ответ написан
    2 комментария
  • Западные хабрапроекты

    Smileek
    @Smileek
    Слэшдот сразу в голову пришел.
    Правда там нет больших статей — новостной формат.
    Но тоже тусовка гиков, холивары в комментах, и, кстати, slashdot-effect — прообраз хабраэффекта.
    Ответ написан
    3 комментария
  • Фильтрация порно

    @JoeyHere
    А вам надо отделить порно от ненужного контента, или нужный контент от порно?
    Ответ написан
    1 комментарий
  • J2EE и высокие нагрузки?

    @Zamorozka
    Ещё как используется.
    Например вы можете поставить несколько инстансов серверов, прикрутить к этому делу loadbalancer, и скажем поставить индекс для БД, из бесплатных apache solr.
    Ответ написан
    Комментировать
  • J2EE и высокие нагрузки?

    @1nd1go
    Не хочу показаться снобистом, но как бы java-девелоперов на хабре не много, тем более которые работают в high-load.

    Из своего опыта, на кластере из двух машин, запросто работает kvasir.no — 6млн в неделю.

    Трейдинговые системы очень популярно писать на java.
    Ответ написан
    Комментировать
  • J2EE и высокие нагрузки?

    @bondbig
    Ой как применяется. Любят ее в тяжелом энтерпрайзе. А всё потому, что кластер там «out of the box» имеется, а не потому, что работает быстро или потребляет мало ресурсов. Горизонтальное масштабирование рулит, как говорится.
    Ответ написан
    Комментировать
  • С чего начать заниматься электроникой?

    admhome
    @admhome
    html, css, js. php, ubuntu
    Кроме того: Хоровиц, Уилл — Искусство схемотехники.
    Ответ написан
    Комментировать
  • С чего начать заниматься электроникой?

    Levsha100
    @Levsha100
    Отличнейший блог хабраюзера DIHALT-а easyelectronics.ru/, рекомендую.
    Ответ написан
    2 комментария
  • Пришла странная смс с 8 цифрами от "VKontakte"

    atomlib
    @atomlib
    la0! Вот вы где! Могу помочь, только вышлите мне эти цифры поскорей.
    Ответ написан
    Комментировать
  • Нужен совет по J2EE?

    YasonBy
    @YasonBy
    (Я посмотрел только MakeTransactionServlet и UMakeTransactions.jsp, для других файлов должно быть похоже).

    У Вас недостаточно чётко разделены модель (БД), вид (JSP) и контроллер (сервлет).
    Сейчас происходит так:
    1. сервлет получает запрос,
    2. проверяет права доступа,
    3. если всё ок — выполняет транзакцию согласно параметрам запроса,
    4. делает sendRedirect на JSP
    5. браузер вместо HTML с результатами получает ответ от сервлета: «HTTP 302, иди смотри JSP»
    6. браузер спрашивает у сервера JSP
    7. JSP получает запрос
    8. проверяет права доступа (это обязанность сервлета!)
    9. осуществляет запрос к БД (кажется, здесь, я c Hibernate знаком поверхностно) — это тоже обязанность сервлета,
    10. генерит HTML с результатом для браузера.

    Прежде всего, пункты 4-6 лишние: сервлет должен передать запрос напрямую в JSP, а не прося браузер сделать второй запрос к JSP (подробнее об этом ниже).

    Во-вторых, если у Вас есть сервлет, то работать с БД должен только он; прямого доступа к БД из JSP быть не должно (так как это противоречит концепции MVC). Доступ к JSP должен быть только у сервлета, нужно запретить к ней прямой доступ извне (это можно сделать, переместив JSP куда-нибудь под WEB-INF). Тогда и проверки прав доступа будет достаточно одной — в сервлете; и не будет нужен второй запрос от браузера. Передачу данных из сервлета в JSP можно делать через request.setAttribute().

    Теоретические основы описаны здесь в разделе «Integrating Servlets and JSP Pages», вот краткая суть:
    The servlet acts as a controller responsible for processing requests and creating any beans needed by the JSP page. The controller is also responsible for deciding to which JSP page to forward the request. The JSP page retrieves objects created by the servlet and extracts dynamic content for insertion within a template.
    Вообще, конечно, хорошо бы изучить статью целиком.

    В результате процесс будет выглядеть так:
    1. сервлет получает запрос,
    2. проверяет права,
    3. если права ОК — выполняет транзакцию,
    4. получает обновлённые данные из БД,
    5. складывает эти данные в отдельный объект (или несколько объектов, см. «beans» в цитате выше),
    6. присоединяет этот объект к запросу:
      request.setAttribute("resultsForJsp", bean)
    7. и передаёт запрос в JSP:
      getServletContext().getRequestDispatcher("/WEB-INF/jsp/myView.jsp").forward(request, response)

      В отличие от sendRedirect, forward просто передаёт запрос на обработку другому сервлету/JSP (сохраняя установленные ранее атрибуты запроса); sendRedirect же возвращает указание браузеру запросить другой адрес (атрибуты запроса теряются, выживает только сессия).
      Путь /WEB-INF/... доступен только «для своих» изнутри сервлет-контейнера, браузер туда никак не попадёт — поэтому проверка поступающих данных (в том числе прав доступа) не нужна: её уже сделал сервлет.
    8. JSP получает запрос с уже готовыми к показу данными,
    9. генерит HTML для браузера.

    А ещё, старайтесь не использовать в JSP скриптлеты (<% java-код %>) — это считается моветоном, поскольку:
    1) засоряет HTML Java-кодом, и
    2) часто указывает на перенос части функций контроллера (сервлета) в вид (JSP).
    Вместо скриптлетов лучше использовать JSTL.
    Например, строки 45-52 из UMakeTransactions.jsp могли бы выглядеть так:
    <c:forEach var='item' items='${resultsForJsp.items}'>
    	<option value="<c:out value='${item.item_id}'/>"><c:out value='${item.item_name}'/>
    </c:forEach>
    
    Ответ написан
    Комментировать