Обслужване на статично съдържание Jetty Jersey Gradle

Така че се опитвам да накарам моята настройка на Jetty/Jersey/Gradle да обслужва index.html, който е в src/main/webapp/static/, когато е на URL адреса по подразбиране. Имам /api за моя java сървър, така че реших, че показването на статично съдържание ще бъде донякъде лесно, но срещам проблеми. Ето какво имам в моя web.xml

<filter>
    <filter-name>Webapp Filter</filter-name>
    <filter-class>com.sun.jersey.spi.container.servlet.ServletContainer</filter-class>
    <init-param>
      <param-name>jersey.config.server.provider.packages</param-name>
      <param-value>main/webapp/static</param-value>
    </init-param>
    <init-param>
      <param-name>jersey.config.servlet.filter.staticContentRegex</param-name>
      <param-value>/.*html</param-value>
    </init-param>
  </filter> 
  <filter-mapping>
    <filter-name>Webapp Filter</filter-name>
    <url-pattern>/*</url-pattern> 
  </filter-mapping>

Пропускам ли нещо или правя нещо нередно? Когато направя gradle jettyRun получавам

The ResourceConfig instance does not contain any root resource classes.
failed Webapp Filter: com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes.
Failed startup of context org.gradle.api.plugins.jetty.internal.JettyPluginWebAppContext@48e8a298{/Project,/User/Project/src/main/webapp}
com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes.

така че това ме кара да мисля, че търси правилното място, но може би просто не намира правилното нещо? Благодаря за помощта, наистина го оценявам


person user3280133    schedule 17.09.2014    source източник
comment
Бихте ли дали някаква обратна връзка?!?   -  person zyexal    schedule 22.09.2014


Отговори (1)


Изключението означава: com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes. те забеляза, тази фланелка не може да намери класове за обслужване.

Вашият init-param jersey.config.server.provider.packages не е зададен правилно и освен това е на грешното място. Това е мястото, където искате да добавите ресурсни КЛАСОВЕ и след това Джърси иска да намери някои @Path пояснения, известни още като ресурсни класове там.
Както казах, това е на грешното място - не е част от филтър, негова част на конфигурацията на сервлета ServletContainer. Като алтернатива можете да оставите това и да декларирате пакети във вашата ResourceConfig или Application реализация.

Моля, прочетете: ръководство за внедряване

Резюме:

<filter>...</filter>

е мястото, където можете да поставите филтри и

<servlet>...</servlet>

(не мога да намеря във вашата част от web.xml) е мястото, където трябва да вмъкнете ServletContainer.

Тъй като ви отговорих на този въпрос вчера, наистина ви съветвам да прочетете ръководствата и опитайте някои примерни проекти, като:

gradle & tomcat
примери за фланелки

Там ще намерите и някои web.xml.

person zyexal    schedule 17.09.2014
comment
В крайна сметка го направих по различен начин, като имах <welcome-file> и след това използвах AngularJS за пренасочване и показване на други страници. - person user3280133; 24.09.2014