Нам нужно перенести приложение, которое работает на Glassfish, на версию сервера WebSphere Application Server (WAS) 8.5.x.Ошибка инициализации сервлета сервера приложений WebSphere
Чтобы убедиться, что все работает правильно с простой настройкой, я создал образец проекта с одним сервисом отдыха.
Я не расширил javax.ws.rs.core.Application с моим собственным классом, и у меня есть класс с аннотациями пути. Я определил сервлет в web.xml с именем «javax.ws.rs.core.Application», чтобы аннотации были отсканированы, и ожидается, что службы будут доступны из заданного сервлет-отображения URL-адресов.
Когда я пытаюсь получить доступ к службе, я получаю сообщение 404. Но реальной проблемой является Apache Wink, который поставляется со стандартными библиотеками IBM Websphere.
В библиотеке source code (класс DefaultLifecycleManager), есть часть, как это:
79 if (ApplicationMetadataCollector.isApplication(cls)) {
80 // by default application subclasses are singletons
81 return LifecycleManagerUtils.createSingletonObjectFactory(cls);
82 }
isApplication (ЦБС) метод должен возвращать верно, а затем должен быть создан синглтон завод для него. Однако он возвращает false. Тело метода следующее:
76 public static boolean More ...isApplication(Class cls) {
77 return Application.class.isAssignableFrom(cls);
78 }
Я поставил там точку останова и проверил значения. cls - это точно javax.ws.rs.core.Application, который является тем же классом в 77-й строке.
Это приводит к тому, что сервлет не запускается правильно и возвращает 404 к каждому запросу, который отображается на нем.
Я не знаю, как этот метод возвращает false, и мне нужна ваша помощь.
Проверьте, имеет ли ваш web.xml версию 3.0. Также проверьте SystemOut.log, если у вас есть исключения во время запуска сервера и приложения. – Gas
Да, web.xml - версия 3.0. Кроме того, он не выводит никаких исключений, если я не расширяю класс Application с помощью my. Если я продлю его, поведение останется прежним, и он распечатает трассировку стека, ведущую к классам, которые я объяснил выше. Исключенное исключение - это «IllegalArgumentException», брошенное в DefaultLifecycleManager после отказа от создания объекта с помощью метода createObjectFactory (который вызывает метод isApplication (cls).) –