JBoss RESTEasy Невозможно отсканировать WEB-INF для аннотаций JAX-RS - PullRequest
1 голос
/ 04 мая 2011

Я только что добавил веб-сервисы JAX-RS в свой проект в MyEclipse и выполнил мой экспорт / развертывание в jboss 6 / jdk 1.6, но я продолжаю получать эту ошибку, и я понятия не имею, почему она возникает. Вот первые несколько строк этой трассировки стека:

2011-05-03 21:33:46,716 INFO  [org.jboss.resteasy.integration.deployers.ResteasyIntegrationDeployer] (HDScanner) *** Adding JAX-RS resource classes: com.mycompany.CategoriesResource
2011-05-03 21:33:47,180 INFO  [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (HDScanner) deploy, ctxPath=/mypath
2011-05-03 21:33:47,330 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/mypath]] (HDScanner) Exception sending context initialized event to listener instance of class org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap: java.lang.RuntimeException: Unable to scan WEB-INF for JAX-RS annotations, you must manually register your classes/resources

Кто-нибудь имел проблемы с этим раньше? Проект был создан в MyEclipse с Struts и возможностями веб-служб, если это поможет. Честно говоря, я не знаю, что еще можно попробовать, учитывая, что я недавно без проблем развернул подобную конфигурацию.

Спасибо!

Вот мой web.xml

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> действие org.apache.struts.action.ActionServlet конфиг /WEB-INF/struts-config.xml отлаживать 3 подробно 3 0

<listener>
    <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
</listener>
<servlet>
    <display-name>API</display-name>
    <servlet-name>API</servlet-name>
    <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>API</servlet-name>
    <url-pattern>/api/*</url-pattern>
</servlet-mapping>
<context-param>
    <param-name>resteasy.scan</param-name>
    <param-value>true</param-value>
</context-param>
<context-param>
    <param-name>resteasy.servlet.mapping.prefix</param-name>
    <param-value>/api</param-value>
</context-param>
<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<jsp-config>
    <taglib>
        <taglib-uri>http://struts.apache.org/tags-bean</taglib-uri>
        <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
    </taglib>
    <taglib>
        <taglib-uri>http://struts.apache.org/tags-html</taglib-uri>
        <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
    </taglib>
    <taglib>
        <taglib-uri>http://struts.apache.org/tags-logic</taglib-uri>
        <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
    </taglib>
    <taglib>
        <taglib-uri>http://struts.apache.org/tags-tiles</taglib-uri>
        <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
    </taglib>
    <taglib>
        <taglib-uri>http://struts.apache.org/tags-nested</taglib-uri>
        <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
    </taglib>
</jsp-config>

Ответы [ 4 ]

1 голос
/ 27 марта 2014

Resteasy тоже должен быть жертвой. Проблема в scannotation-1.0.3.jar.

DirectoryIteratorFactory factory = registry.get(url.getProtocol());
if (factory == null) throw new IOException("Unable to scan directory of protocol: " + url.getProtocol());
return factory.create(url, filter);

Кажется, когда url.getProtocol () возвращает "jdni", возникает эта проблема. Я все еще изучаю, какой URL вернет протокол как jndi.

Я удалил scannotation-1.0.3.jar из папки lib, скачал исходный код и распечатал неверный URL. Оказалось, что это: jndi: /localhost/Enoch2/WEB-INF/lib/.svn/

Затем я попытался удалить все папки .svn из развертывания. Оно работает. find . -name .svn | xargs rm -Rf

1 голос
/ 04 мая 2011

Это означает, что RESTEasy получил IOException при попытке сканирования каталога WEB-INF.Первое, что я хотел бы проверить, - это разрешения вашей файловой системы - может ли пользователь, выполняющий процесс JBoss, прочитать WEB-INF и все файлы в нем?

РЕДАКТИРОВАТЬ:

В ответ на ваш комментарий:Ваш classpath содержит запись, которую Scannotation не понимает.Похоже, jndi://.Можете ли вы проверить путь к классу и выяснить, что это за запись?

0 голосов
/ 12 февраля 2019

Я недавно столкнулся с этой проблемой.
javassist версия не была поддержана с изменениями Java 8.Поэтому я исключил этот jar из этой зависимости и добавил зависимость javassist извне (с более высокой версией).

LOG:
SEVERE: Exception sending context initialized event to listener instance of class [org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap]

java.lang.RuntimeException: Unable to scan WEB-INF for JAX-RS annotations, you must manually register your classes/resources

    at org.jboss.resteasy.plugins.server.servlet.ConfigurationBootstrap.createDeployment(ConfigurationBootstrap.java:177)

    at org.jboss.resteasy.plugins.server.servlet.ListenerBootstrap.createDeployment(ListenerBootstrap.java:32)

    at org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap.contextInitialized(ResteasyBootstrap.java:27)

Мое решение:

Обновлен мой файл pom.xml

<dependency>
    <groupId>com.xyz</groupId>
    <artifactId>abc</artifactId>
    <version>${abc.version}</version>
    <exclusions>
        <exclusion>
            <groupId>javassist</groupId>
            <artifactId>javassist</artifactId>
        </exclusion>
    </exclusions>
</dependency>

и добавленная зависимость

<dependency>
    <groupId>org.javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>3.18.2-GA</version>
</dependency>
0 голосов
/ 16 июня 2017

Я столкнулся с той же проблемой, когда переместил свой проект maven из java 6 в java 8. Причиной было то, что в моем проекте зависела поддержка javassit 3.12, и она была несовместима с java 8. После того, как я обновил javassist до 3.20 он начал работать нормально. Поэтому, если вы столкнулись с этой проблемой, пожалуйста, проверьте используемый javassist jar и при необходимости обновите.

...