私はジャージーの実装に取り組んでおり、私の要件はリクエスト本文を検証して検証し、REST リソースに転送することです。
検証と検証は、登録済みフィルター内で正常に機能していますが、転送用です。リクエストが REST リソースに転送されていません。何が欠けているのかわかりません。ここに私の設定とコードがあります
web.xml
<init-param>
<param-name>com.sun.jersey.spi.container.ResourceFilters</param-name>
<param-value>com.level3.messaging.producer.auth.PubRequestFilterFactory</param-value>
</init-param>
マイ リソース フィルター ファクトリ
@Component
@Provider
public class PubRequestFilterFactory implements
ResourceFilterFactory {
@Autowired
PublisherRequestFilter publisherRequestFilter;
@Override
public List<ResourceFilter> create(AbstractMethod am) {
return Collections
.<ResourceFilter> singletonList(publisherRequestFilter);
}
}
私のリソース フィルターの実装
@Component
@Provider
public class PublisherRequestFilter implements ResourceFilter {
@Override
public ContainerRequestFilter getRequestFilter() {
return new ContainerRequestFilter() {
/**
* Checks if the incoming request is appropriate for the request
* body. If not throws a web application exception
*/
@Override
public ContainerRequest filter(ContainerRequest request) {
// returned request is not gettting forwared.
// I was able to debug thru request
return request;
}
};
}
@Override
public ContainerResponseFilter getResponseFilter() {
return null;
}
}
私の REST リソースの実装
@Component
@Produces("application/xml")
@Path("publish")
@Scope("singleton")
public class Publisher extends MessageResource {
@POST
@Path("event")
@Consumes("application/xml")
@Produces("application/xml")
public ProducerResourceResponseWrapper publishEvent(Event event) {
super.message = event;
final Long startTime = System.currentTimeMillis();
init(MessagePattern.Event.name());
publishMessage(startTime);
return responseWrapper;
}
private void publishMessage(Long startTime) {
String errorMessage = null;
try {
final MessageDelegator eventDelegator = new MessageDelegator(
publisherResourcesDO);
eventDelegator.delegate();
if (publisherResourcesDO.getErrorDO() != null) {
throw new ErrorHandler(publisherResourcesDO.getErrorDO());
}
buildResponse(startTime);
} catch (final Exception e) {
errorMessage = e.getMessage();
handleException(e);
} finally {
auditMessage(startTime, errorMessage);
}
}
}