• Что лучше, запись в файл, или запись в бд ??

    zolt85
    @zolt85
    Программист
    Если по простому, то СУБД лучше.
    БД можно масштабировать, реплицировать, версионировать, нормально бэкапить, уже есть разграничение доступа к данным средствами СУБД. По данным в БД можно строить аналитику.
    Ответ написан
    3 комментария
  • Как получить список методов класса Java с помощью библиотеки asm?

    zolt85
    @zolt85
    Программист
    Если вы можете загрузить класс (через Class.forName(), например), то можно воспользоваться методом getDeclaredMethod(), обернув вызов в try/catch и ловить NoSuchMethodException, в случае если искомый метод не найден. Этот функционал идет "из коробки" в JDK, никаких дополнительных библиотек не нужно.
    Ответ написан
  • Почему не собирается файл /etc/init.d/oracle-xe при установке и как быть?

    zolt85
    @zolt85
    Программист
    Вот чтоб такого не было - всё прогрессивное человечество использует docker. Да, это не решение конкретно Вашей проблемы, но это заход к решению с другой стороны. Вообще ставить Oraсle DB на deb-based дистрибутив это та еще боль. А с docker образом вообще никаких проблем, тем более если oracle нужен чисто в образовательных целях.
    Ответ написан
    Комментировать
  • Как можно добавить текст из Word или из ему подобных программ на форму в JavaFX?

    zolt85
    @zolt85
    Программист
    Если контент статичный, можно документы перегнать в PDF, и нарезать с них картинок, и уже их отображать. Можно сразу PDF отображать. Если контент динамический, и нужно перегонять в PDF "на лету", можно заиспользовать OpenOffice (нужно чтоб он был на клиенте). Это максимально простые способы отображения документов в Java приложении. Если нет потребности в кросс-платформенности программы, и она нужна на винде, я бы на Вашем месте взял бы .Net Framework и C#, под него точно есть либы для нативного отображения документов MS Office.
    Ответ написан
    Комментировать
  • Почему не работает ajax запрос?

    zolt85
    @zolt85
    Программист
    Во-первых, не уверен, что Вам особо нужен AJAX в данном случае. Возможно достаточно будет простого submit-а формы. Во-вторых, у Вас опечатка в параметрах $.ajax, должно быть data, а не date. В-третьих, убедитесь, что на стороне сервера есть servlet с методом doPost, который готов обработать Ваш запрос.
    Ответ написан
    3 комментария
  • Насколько устарел Swing?

    zolt85
    @zolt85
    Программист
    Swing хоть и устарел, но живее всех, и чисто для общего развития, его стоит знать, хотя бы на базовом уровне. Живее всех живых он именно из-за множества Legacy софта. Новый софт, если Вы прям желаете писать на Java, лучше разрабатывать на JavaFX, он очень даже не плох.
    ИМХО.
    Ответ написан
    Комментировать
  • Как объявить скоп сервиса так, чтобы при вызове в RabbitListener сервис был заново инициализирован?

    zolt85
    @zolt85
    Программист
    Для того, чтоб спринговый бин инициализировался каждый раз, когда он будет запрошен, его нужно отметить аннотацией
    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
    Тут есть некоторые нюансы, а именно, если Вы будете инжектить такой бин в другой бин, который является синглтоном (по-умолчанию), то заинжектится такой бин только один раз, соответственно по-факту это будет синглтон.
    А если Вы будете просить такой бин в коде у ApplicationContext, то да, всегда будете получать новый инстанс бина.
    Ответ написан
  • Как реализовать неблокирующий таймер на java?

    zolt85
    @zolt85
    Программист
    Запускать в отдельном потоке. Если нужно вернуть какой-то результат после запуска задачи, можно использовать интерфейс Callable.
    В общем тема не нова. Примеров в интернете тысячи.
    Ответ написан
    1 комментарий
  • Что означает ошибка "Test.java uses unchecked or unsafe operations"?

    zolt85
    @zolt85
    Программист
    Ошибки никакой нет, чисто синтаксически. Не используйте Vector. Возьмите вместо него типизированный List
    Именно на Vector ругнулся компилятор, ибо он хоть и есть, но не рекомендуется к использованию.
    List<String> v = new ArrayList<>();
    Ответ написан
    2 комментария
  • Java EE, Spring core/web. Как правильно настроить application context с помощью аннотаций?

    zolt85
    @zolt85
    Программист
    Если хочется все настроить через аннотации, то все возможно


    Как все это дело прикрутить к web.xml?
    Нужно ли создавать отдельный класс-context и описывать зависимости там?

    web.xml вообще не нужен. Можно инициализировать dispatcher-servlet так
    package configuration;
    
    import org.springframework.web.servlet.support.*;
    
    /**
      * Настройка dispatcher-servlet
     */
    public class MyAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    
    
    	@Override
    	protected Class<?>[] getRootConfigClasses() {
    		return null;
    	}
    
    	@Override
    	protected Class<?>[] getServletConfigClasses() {
    		return new Class[]{MvcContext.class};
    	}
    
    	@Override
    	protected String[] getServletMappings() {
    		return new String[]{"/"};
    	}
    }


    Тут надо обратить внимание на метод getServletConfigClasses. Им мы отдаем классы конфигурации dispatcher-servlet.
    MvcContext.java может выглядеть так
    @Configuration
    @EnableWebMvc
    public class MvcContext {/** тут описываем бины или иные настройки */}


    Аннотация @Configuration говорит Spring-у что класс может содержать описания бинов.
    Аннотация @EnableWebMvc импортирует базовую настройку spring-mvc (контроллеры, резолверы, хэндлеры всё вот это вот)

    Какие аннотации к какому из представленных классов использовать и почему?


    User - @Entity - я так понимаю JPA для работы с БД используется
    UserService - @Service - ни к чему эта аннотация не обязывает, просто для удобства
    MainController - @Controller - Spring поймет что класс обрабатывает HTTP запросы
    остальные классы можно отметить аннотацией @Component, если они используются как бины спринга

    Вызывается ли конструктор класса (например - UserService) при инициализации его как Bean?

    Да, конечно. Как правило вызывается конструктор по-умолчанию, если таковой отсутствует, Spring свалится при старте приложения с ошибкой, что мол не могу создать бин.

    Еще советую Вам ознакомиться с книгой Крейга Уоллса "Spring в действии" (4-е издание, по-моему, сейчас актуально). Дядька очень доступно объясняет все заданные Вами вопросы, и работу многих компонентов фреймворка в целом.
    Ответ написан
    Комментировать
  • Как исправить java.lang.NullPointerExeption?

    zolt85
    @zolt85
    Программист
    Ну смотрите, Вы берете variable, и просите у него такие атрибуты как storiesNumber и elevatorCapacity. Т.е. Ваш код ожидает что запись в XML будет вида
    <variable storiesNumber = "25" elevatorCapacity = "30"/>

    А в Вашем XML атрибуты storiesNumber и elevatorCapacity принадлежат разным variable. Вот и получается, что вы берете первый variable, просите у него атрибут storiesNumber и он есть, затем вы у того же самого variable просите атрибут elevatorCapacity и его нет, вот Вам и NPE.
    Ответ написан
    4 комментария
  • С чего начать разработку серверного ПО на Java?

    zolt85
    @zolt85
    Программист
    Начинать разработку ПО стоит с изучения уже существующих решений на рынке. А то как уже кто-то написал за Вас сервер? Бери и пользуйся!. Опять же, если есть решения с открытым кодом можно этот код изучить. Ну и Вы не описали предназначение Ваших серверов. Web, СУБД, просто маршрутизатор запросов? Поэтому более детальных советов дать не представляется возможным. Изучайте просто построение ПО на Java.
    Ответ написан
    2 комментария
  • Нужна среда разработки на С# под Linux?

    zolt85
    @zolt85
    Программист
    Ответ написан
    Комментировать
  • Как в IntelliJ IDEA преобразовать maven-проект в gradle-проект?

    zolt85
    @zolt85
    Программист
    В одном из батлов build тулзов Барух Садогурский показывал свой плагин для такой задачи. Можете попробовать.
    Ответ написан
    Комментировать
  • Ошибка при вополнении NoClassDefFoundError?

    zolt85
    @zolt85
    Программист
    Не хочу Вас огорчать, но не получится у Вас прикрутить просто так сию библиотеку к JavaFX проекту, т.к. она "завязана" на Android SDK. NoClassDefFoundError говорит о том, что класс, который был доступен в момент компиляции, перестал быть доступен в момент исполнения. Если прогуглить класс android.os.Looper, то увидим, что это класс из Android SDK.
    Ответ написан
    3 комментария
  • Что почитать админу, сопровождающему проекты на java?

    zolt85
    @zolt85
    Программист
    Не понял где тут Tomcat, но правилом хорошего тона является ознакомление с оф. документацией к перечисленным Вами серверам.
    Ответ написан
    3 комментария
  • На что сосредоточить внимание при выборе ноутбука: процессор или видеокарта?

    zolt85
    @zolt85
    Программист
    Эмпирическим путем, лично для себя я выяснил, что для работы отлично подходят игровые ноутбуки. Я не шучу, они как правило сбалансированы для нормальной производительности под нагрузкой, плюс с заделом на будущее их делают, плюс матрица, как правило, хорошая стоит . Стоят недешево, но прослужит долго.
    Ответ написан
    Комментировать
  • Alias с произвольным аргументом?

    zolt85
    @zolt85
    Программист
    эм, ну например так
    cm() {
        cmd src:target $1
    }

    Где $1 Ваш третий параметр, а src и target - это первые два
    Ответ написан
    Комментировать
  • Используются ли сервлеты в Spring REST?

    zolt85
    @zolt85
    Программист
    Мне кажется Вы тёплое с мягким перепутали ... Я вообще не понял про какие Spring сервлеты Вы говорите, и что есть Spring rest? И почемы Вы это называете "обертками над стримами"? Сервлеты в Spring есть, как минимум один - DispatcherServlet. Если Вы хотите иметь response и request в методе своего контроллера, то просто укажите их в сигнатуре метода
    public void methodWithRequestAndResponse(HttpServletRequest request, HttpServletResponse response) { ... }

    Spring такие вещи видит, и услужливо передает нужные переменные при вызове метода.
    Ответ написан
    Комментировать
  • Реализация pagination на java?

    zolt85
    @zolt85
    Программист
    Не знаю как лучше, расскажу как сделано у нас. На клиенте рисуется грид, который запрашивает данные с сервера с заголовком Range: 0-19 (это типа первая страница). Сервер сей заголовок понимает и оборачивает запрос к БД в такой вот вид
    select rownum rn, main.*, count(1) over() total from (/*тут основной запрос*/) main where rn >= 0 and rn <= 19;

    Вот собссно и вся магия. Т.е. если Вы научите клиент отдавать на сервер диапазон запрашиваемых записей, таким вот образом их можно отдавать. count(1) over() total выберет Вам кол-во записей в выборке всего в отдельную колонку total.
    Никаких состояний, редисов и прочих эластиксёрчей.
    Ответ написан