Ответы пользователя по тегу Java
  • Как реализовать подобную серверную часть?

    FanKiLL
    @FanKiLL
    Попробуйте netty.io если вам сокеты нужны.
    Ответ написан
    Комментировать
  • Как создать приложение?

    FanKiLL
    @FanKiLL
    Вы уже написали клиент который работает через SOAP?
    Судя по всему вы знаете Eng так что spring.io/guides/gs/producing-web-service читайте тут пошагово как поднять SOAP сервис на spring boot это java.

    Во первых преподу надо сказать, что SOAP полное говно, которое несёт в себе кучу не нужной информации.
    Во вторых исполнять sql который ввёл юзер не безопасно. И как он вообще представляет себе валидацию что именно sql ввели.

    Насчёт JNDI он хочет чтобы вы настроили на сервере connection pool - ищите про persistence.xml
    Tomcat - не работает с Java EE он имплементирует только работу с сервлетами.
    Кстати в spring boot что я указал выше, будет встроенный Tomcat.. По сути у вас в конце будет простой jar который вы запустите
    java -jar yourServer.jar
    Задание какое то странное...
    Ответ написан
    1 комментарий
  • Как построить на c# + asp.net аналог приложения на java+jsp?

    FanKiLL
    @FanKiLL
    Использовать asp.net mvc - habrahabr.ru/post/175999
    Ответ написан
    Комментировать
  • Как мне взять информацию с сайта (используя Java)?

    FanKiLL
    @FanKiLL
    Используйте библиотеку jsoup и парсите себе на здоровье.
    Ответ написан
    Комментировать
  • Как организовать аутентификацию для REST (stateless) приложения (JAVA)?

    FanKiLL
    @FanKiLL
    stateless - как и весь http подразумевает без запоминания состояния.
    Собственно, нет разницы будут вам присылать login:password или токен привязанный к этому логину - всё равно придётся аутентифицировать. Лезть в базу и проверять есть ли такой токен и прочее. Просто чтоб не светить логин и пароль при каждом запросе (basic authentication) принято отсылать токены привязанные к этому логину.

    Я предпочитаю в хедерах отправлять/получать токены, так url остаются чистыми, чем когда токен передают в url параметре как у facebook сделано.
    Можно конечно кешировать, самое простое это HashMap с TTL в качестве ключа токен, в качестве значения - юзер. Проверять вначале HashMap на предмет, есть ли такой ключ с присланным токеном, если есть забираем юзера - если нет лезем в базу.

    В spring можете сделать interceptor где можно проверять токены, если всё нормально пропускать запрос дальше.

    Можно сделать аннотацию, и вешать её на контроллеры или методы которые хотим аунтефицировать и в интерцепторе вначале смотреть есть ли аннотация используя Reflection API.
    Ответ написан
    2 комментария
  • Как вывести строку в Java содержащую спец. символы?

    FanKiLL
    @FanKiLL
    То есть по сути вам нужен json. Зачем вы его создаёте руками и мучаетесь с экранированием.
    Когда можно сделать java class с нужными вам полями, инициализировать его нужными параметрами и из него получить json строку, которую и сможете отправить куда надо.
    Воспользуетесь библиотекой gson от гугла - https://code.google.com/p/google-gson/

    Например:
    Сделаем класс:
    public class TalentESBData {
    
        @SerializedName("metadata.title")
        private String metadataTitle;
        @SerializedName("metadata.description")
        private String metadataDescription;
        @SerializedName("metadata.keywords")
        private String metadataKeywords;
        @SerializedName("metadata.robots")
        private String metadataRobots;
        @SerializedName("metadata.author")
        private String metadataAuthor;
        @SerializedName("config.enable_comments")
        private int configEnableComments;
        @SerializedName("config.primary_category")
        private int configPrimaryCategory;
        @SerializedName("jbzoo.no_index")
        private int jbzooNoIndex;
    
        // Геттеры и сеттеры опустим их любая ide сгенерирует...
    
        public String toJson(){
            Gson gson = new Gson(); //библиотека для генерации json
            String jsonResponse = gson.toJson(this);
            return jsonResponse;
        }
    }


    И теперь в как этим воспользоватся.

    public class TalentMain {
    
        public static void main(String[] args) {
    
            TalentESBData talentData = new TalentESBData(); //инициализируем класс
            talentData.setMetadataDescription(""); //заполняем поля какие надо
            talentData.setMetadataAuthor("");
            talentData.setMetadataKeywords("");
            talentData.setMetadataRobots("");
            talentData.setMetadataTitle("");
            talentData.setConfigEnableComments(1);
            talentData.setConfigPrimaryCategory(205);
            talentData.setJbzooNoIndex(0);
    
    
            System.out.println(talentData.toJson()); // Получаем json и выводим в консоль, в вашем случа
            // вместо консоли можете отправлять эти данные или что там нужно сними делать.
        }
    }


    На выходе имеем такой json,
    {
      "metadata.title": "",
      "metadata.description": "",
      "metadata.keywords": "",
      "metadata.robots": "",
      "metadata.author": "",
      "config.enable_comments": 1,
      "config.primary_category": 205,
      "jbzoo.no_index": 0
    }


    Теперь удобно добавлять новые поля, просто добавляете новые переменные в класс и генерируете новый json.

    Если что спрашивайте.
    Ответ написан
    2 комментария
  • Как ограничить время работы потока?

    FanKiLL
    @FanKiLL
    В ExecutorService треды переиспользуются в этом и вся суть этих пулов.
    Каждую задача что вы кидаете например Runnable попадает в очередь и потом выполняется ексекютором когда какой нибудь тред освободится.

    Если посмотреть на названия тредов в екзекуторе - они будут примерно такими pool-2-thread-4
    Достучатся до треда в котором выполняется ваш код, вы можете прям из Runnable или Callable смотря что вы там скармливаете executor'y
    Thread.currentThread().getName() //например получить имя треда в котором выполняется Runnable


    Если хотите прервать тред по каким то причинам, то примерно так.
    Thread.currentThread().interrupt();
    Ответ написан
  • Как лучше реализовать чат клиент-сервер на java websocket?

    FanKiLL
    @FanKiLL
    netty.io Мы писали в своё время на нём сервер с webcosket's
    Ответ написан
    Комментировать
  • Java REST. Как прописать в Path путь вида /get/group1/group2/...?

    FanKiLL
    @FanKiLL
    А зачем вы делаете это через Get, сделайте через чтобы запрос за группами или что вы там хотите отдать через пост. Например на урл - /get/groups вам отправляют список групп в json и вы их оттуда заберёте. Так маппинг будет чище.
    Ответ написан
    1 комментарий
  • Почему не работает анонимный клас в джава?

    FanKiLL
    @FanKiLL
    Что именно не работает? В дебагере смотрели? Поставьте банальный System.out.println
    Больше информации дайте.
    //добавляем слушатель действий для альфа
    alpha.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent ae){
            System.out.println("В аннонимом классе");
            lab.setText("Нажата кнопка Альфа");
        }
    });


    ещё у вас опечатка вместо actionPerfomend должно быть actionPerformed
    Ответ написан
    Комментировать
  • Где найти пошаговые уроки по java и в частности spring framework?

    FanKiLL
    @FanKiLL
    Посмотрите эти уроки:
    Introduction to Spring MVC
    Spring with JPA and Hibernate
    Spring Fundamentals

    Инфы по spring к сожалению не так много, единственная полная инфа это их документация где чёрт ногу сломит. У меня иногда выходило что настройка самого спринг со всеми его зависимостями + подключить правильно hibernate + подключить connection pool какой нибудь, уходило до 2 дней скитаний по интернетам. Особенно после того как конфигурировать стало возможным из кода а не xml.

    Дело в том что ребята из spring зарабатывают семинарами и прочим обучением. Книги тоже не часто выходят по spring.

    Вообщем я советую посмотреть те скринкасты а конфигурирование проекта, ходить на github искать проекты и смотреть как у них устроенно - есть готовые шаблоны для мавена - например - где вы собственно одной командой из консоли создадите весь каркас приложения + минимальную конфигурацию.

    Удачи. Извините, что так сумбурно написал - спешу.
    Ответ написан
    1 комментарий
  • Как подключить файлы .java в Eclipse?

    FanKiLL
    @FanKiLL
    Обычно в папке src естественно, нужно сохранить всю структуру папок проекта которого вы нашли, потому что это по сути package namespace... или собрать из них jar и подключить к своему проекту или maven.
    Киньте ссылку на проект
    Ответ написан
    Комментировать
  • Как создать web - проект в java?

    FanKiLL
    @FanKiLL
    Руками создают остальные файлы конфигурации и добавляют папку webapp.
    Вы создаёте стандартный мавен проект, потом к нему можете всё добавить и будет как на скрине.
    Добавить BaseController, добавить в pom файл зависимости для спринга...

    Или ищите Archetype для мавена чтоб сразу создавал сруктуру для спринга например вот - https://github.com/kolorobot/spring-mvc-quickstart...
    Ответ написан
    Комментировать
  • Потоки, NullPointerException, Java, ЧЯДНТ?

    FanKiLL
    @FanKiLL
    Во первых проверить если у TextArea не выставлен setEditable(false);
    Во вторых у TextArea есть метод append который добавит текст к уже имеющемся.
    В данном случае конструкция jChatBox.setText(jChatBox.getText() + line) не нужна меняйте на append плюс надеюсь вы к строкам добавляете "\n"
    иначе будет каша.
    В третьих почитайте как работать с TextArea там немного всё подругому чем с обычными текстовыми контролами

    Хз, что ещё написать... Без кода трудно сказать почему null. И вообще что именно null TextArea или line который вы туда передаёте? Инфы мало.
    Ответ написан
    Комментировать
  • Как избавиться конфликта зависимостей в maven?

    FanKiLL
    @FanKiLL
    Maven Optional Dependencies and Dependency Exclusions

    upd:
    А вообще это вам наверно не поможет, можно попробовать обмануть мавен.
    Сделать как написано по ссылке что я дал, убрать версию 1.3
    <dependency>
        <groupId>библиотека С</groupId>
        <artifactId>её имя</artifactId>
        <version>версия</version>
          <exclusions>
            <exclusion> 
              <groupId>библиотека</groupId>
              <artifactId>её id</artifactId>
            </exclusion>
    </dependency>


    Скачать версию 1.3 и установить её руками под другим groupId в локальный репозиторий например
    mvn install:install-file -Dfile=toster.jar 
        -DgroupId=ru.toster -DartifactId=toster-api -Dversion=0.0.1 
        -Dpackaging=jar


    и потом добавить в pom
    <dependency>
        <groupId>ru.toster</groupId>
        <artifactId>toster-api</artifactId>
        <version>0.0.1</version>
    </dependency>


    Тогда по идее обе библиотеки попадут в classpath.
    Ответ написан
  • Как обработать ошибку подключения при отсутствии интернета на андроиде?

    FanKiLL
    @FanKiLL
    public class NetworkManager {
    
        public static boolean isNetworkAvailable(Context context) {
            ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo networkInfo = cm.getActiveNetworkInfo();
            if (networkInfo != null && networkInfo.isConnected()) {
                return true;
            } else {
                return false;
            }
        }
    }


    и перед каждым запросом проверять сеть

    if (NetworkManager.isNetworkAvailable(context)) {
        // делаем спокойно запрос
    } else {
        // если сети нет показываем Тост или 
        // кидаем на активити с красивым дизайном где просим сделать реконнект
    }


    Требует пермишина, в манифест добавляем пермишин

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    Ответ написан
    Комментировать
  • Какие есть сервисы по Java tips?

    FanKiLL
    @FanKiLL
    www.journaldev.com - очень хорошие статьи про патерны и много чего хорошоего. Публикуют не часто, но там уже достаточно инфы.
    www.javacodegeeks.com - Публикуют практически каждый день что то, бывает даже слишком много.
    tutorials.jenkov.com - Товарищ публикует много туториалов, у него очень много по java.
    www.mkyong.com - Довольно часто публикует разные How to..
    Ответ написан
    Комментировать
  • Java Web API - какие технологии/средства/инструменты использовать?

    FanKiLL
    @FanKiLL
    JAX-RS 2.0 собственно для этого и предназначен.
    Но так же на spring mvc можно сделать, там тоже для этого всё есть - например.
    Ответ написан
    Комментировать
  • Как передать переменную с одного класса в другой?

    FanKiLL
    @FanKiLL
    -new TaxiApiAsync(),execute("номер телефона");

    @Override
        protected TaxiResponce doInBackground(String... strs) {
            // получили json
            String jsonResponce = null;
            try {
                jsonResponce = new TaxiApi().withPhone(strs[0]).withAdress("Фонтанка 33").done().send();
            } catch (IOException e) {
                e.printStackTrace();
            }
            // распарсили json в класс, чтоб можно было брать данные из обычных
            // переменных
            TaxiResponce taxiResponce = new Gson().fromJson(jsonResponce, TaxiResponce.class);
    
            return taxiResponce;
        }
    Ответ написан
    Комментировать
  • Как посчитать дублирующиеся элементы в массиве?

    FanKiLL
    @FanKiLL
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Map;
    
    public class Application {
    
    	public static void main(String[] args) {
    		Map<Character, Integer> letters = new HashMap<Character, Integer>();
    
    		ArrayList<Character> fakeArray = new ArrayList<Character>();
    		fakeArray.add('a');
    		fakeArray.add('a');
    		fakeArray.add('a');
    		fakeArray.add('b');
    		fakeArray.add('b');
    		fakeArray.add('c');
    		fakeArray.add('c');
    		fakeArray.add('c');
    		fakeArray.add('w');
    		fakeArray.add('w');
    		fakeArray.add('w');
    		fakeArray.add('w');
    		fakeArray.add('g');
    
    		for (int i = 0; i < fakeArray.size(); i++) {
    			Character tempChar = fakeArray.get(i);
    
    			if (!letters.containsKey(tempChar)) {
    				letters.put(tempChar, 1);
    			} else {
    				letters.put(tempChar, letters.get(tempChar) + 1);
    			}
    		}
    
    		for (Map.Entry<Character, Integer> entry : letters.entrySet()) {
    			System.out.println("Буква = " + entry.getKey() + ", Повторений = " + entry.getValue());
    		}
    
    	}
    }


    И вот что выводит в консоль, когда скрипт отработал.

    Буква = w, Повторений = 4
    Буква = g, Повторений = 1
    Буква = b, Повторений = 2
    Буква = c, Повторений = 3
    Буква = a, Повторений = 3


    Наверно можно лучше, сейчас бошка не варит сорри. Но задачу решает, копайте в эту сторону.
    Ответ написан
    Комментировать