Поскольку com.sun.jersey.api.core.ResourceConfig
не содержит метода register
.
Я хочу зарегистрировать ContainerResponseFilter
программно.
Я также пытался зарегистрировать его через аннотацию @Provider
:
@Provider
public class MyFilter implements ContainerRequestFilter, ContainerResponseFilter {
@Override
public ContainerRequest filter(ContainerRequest containerRequest) {
return containerRequest;
}
@Override
public ContainerResponse filter(ContainerRequest containerRequest, ContainerResponse containerResponse) {
return containerResponse;
}
}
Но не срабатывает.
Обновлять:
В веб.xml:
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>rest.providers</param-value>
</init-param>
В логе сервера вижу:
com.sun.jersey.api.core.ScanningResourceConfig init INFO: Классы поставщиков не найдены.
Update2:
Добавлен класс:
public class MyApplication extends ResourceConfig{
public MyApplication(){
getProviderClasses().add(LoggingFilter.class);
}
конструктор не запускался.
В журнале сервера я вижу:
Mar 28, 2018 3:46:47 PM com.sun.jersey.api.core.PackagesResourceConfig init
INFO: Scanning for root resource and provider classes in the packages:
rest.services
Mar 28, 2018 3:46:47 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFO: Root resource classes found:
class rest.services.RestRes1
Mar 28, 2018 3:46:47 PM com.sun.jersey.api.core.ScanningResourceConfig init
INFO: No provider classes found.
Mar 28, 2018 3:46:47 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate
INFO: Initiating Jersey application, version 'Jersey: 1.9 09/02/2011 11:17 AM'
он находит только пакет с ресурсами, но не провайдеров.
Обновление 3:
Если я явно определяю свой класс провайдера в web.xml,
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
<param-value>rest.services.MyFilter</param-value>
</init-param>
Это работает нормально.
Но мне нужно сделать это программно.
com.sun.jersey.config.property.packages
. - person cassiomolin   schedule 28.03.2018