Nano Hash - криптовалюты, майнинг, программирование

Джерси с классом/интерфейсом весенней загрузки не может быть создан и будет игнорироваться

У меня есть веб-приложение с весенней загрузкой, я пытаюсь использовать трикотаж для вызовов REST.

После завершения сборки maven я могу развернуть ее с помощью jboss. Но когда я пытаюсь попасть по URL-адресу (используя почтальона), я получаю следующее сообщение:

" WARNING [org.glassfish.jersey.server.ResourceModelConfigurator] (default task-1) Component of class interface com.xyz.abcInter cannot be instantiated and will be ignored"

Код конфигурации Джерси:

@Configuration
public class JerseyConfig extends ResourceConfig 
{
    public JerseyConfig()
    {
    packages("com.xyz");    
    register(abcInter.class);
    }
}

Код "abcInter" (интерфейс):

@Path("/hi/hello")
public interface abcInter {
      @GET
      @Path("/there")
      @Produces({MediaType.APPLICATION_JSON})
      public String getName() throws Exception; 
}

Класс "abc", реализующий код "abcInter":

   @Component
    public class abc implements abcInter
    {
        @Override
        public String getName() throws Exception
        {
            return "{\"name\": {\"nitish\": \"kashyap\",\"chinmoy\": \"das\"}}";
        }
    }

ВАЖНО: У меня в других проектах точно так же прописаны интерфейсы и они вроде заработали. Как в примере здесь, если вы измените аннотации из этого в класс к интерфейсу (структурированный, как в этом вопросе), он работает. (добавление @Component или @ Named в классе делает работу)


  • См. stackoverflow.com/questions/20564142/rest-api- использование-Джерси-2 25.09.2018
  • @ user7294900, я попробовал проверенный ответ на этот пост. К сожалению, не работает :/ 25.09.2018
  • @Path относится к конкретному классу (abc), а не к интерфейсу, и вы не регистрируете интерфейс, вы регистрируете конкретный класс. 26.09.2018
  • да @PaulSamsotha, но я хочу, чтобы аннотации jax-rs были в самом интерфейсе. На самом деле это возможно, если вы видите этот связанный пример, и измените исходный код на аналогичную структуру, как вопрос, который я разместил, я буду работать нормально. Я хотел знать возможные причины, по которым это могло потерпеть неудачу, как в этом случае с моим. 26.09.2018
  • Только @Path должен быть в конкретном классе. 26.09.2018
  • У меня в других проектах прописаны интерфейсы таким же образом и они вроде работали. Хотя ни один из них не был в spring-boot. Они были в одних джерси. - Сильно сомневаюсь. Двойная проверка. 30.09.2018
  • @PaulSamsotha, возьмите этот пример и измените аннотации из класса к интерфейсу (структурируйте его как исходный вопрос этого поста). Кажется, это работает нормально. Я хотел бы извиниться, поскольку я мог ошибаться, но этот пример должен работать нормально. 01.10.2018
  • Да, вы ошибаетесь. Я считаю себя своего рода экспертом в этой области и знаю правила. @Path на интерфейсе игнорируется. Это должно быть на конкретном классе. Рассмотрим этот вариант. Если вы просто регистрируете интерфейс, как Джерси должен знать, какие классы реализуют этот интерфейс? Это невозможно. Совершенно невозможно узнать, какие классы реализуют конкретный интерфейс. 01.10.2018
  • Хорошо. Но тогда в чем причина того, что пример здесь, когда изменено в соответствии с опубликованными работами вопроса? Я действительно запутался :( 03.10.2018
  • добавление @Component или @ Named в классе делает работу 03.10.2018
  • эй @PaulSamsotha, я устал заставлять два класса реализовывать один и тот же интерфейс, похоже, если я зарегистрирую интерфейс в файле конфигурации и добавлю аннотации, такие как @Named, к любому из классов, этот класс будет зарегистрирован. Если я надену оба или ни один из них, я получу эту ошибку, не найдя конструктор. (все сделано с этим) 03.10.2018

Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..