我在嘗試使RESTEasy過濾器正常工作時遇到問題。我確定我錯過了一些東西,但我不知道是什麼。如何製作RESTEasy Response Filter?
我用下面的方法測試:
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<User> listAll(@QueryParam("start") Integer startPosition, @QueryParam("max") Integer maxResult) {
String hql = "SELECT DISTINCT u FROM User u LEFT JOIN FETCH u.tasks ORDER BY u.id";
TypedQuery<User> findAllQuery = em.createQuery(hql, User.class);
if (startPosition != null) {
findAllQuery.setFirstResult(startPosition);
}
if (maxResult != null) {
findAllQuery.setMaxResults(maxResult);
}
final List<User> results = findAllQuery.getResultList();
return results;
}
而且這裏是我的web.xml:
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="3.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>tasks-webapp</display-name>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<mime-mapping>
<extension>ico</extension>
<mime-type>image/x-icon</mime-type>
</mime-mapping>
<servlet>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<load-on-startup>1</load-on-startup>
</servlet>
<context-param>
<param-name>resteasy.providers</param-name>
<param-value>br.com.tasks.rest.CORSFilter</param-value>
</context-param>
<servlet-mapping>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
</web-app>
最後,我的過濾器:
@Provider
public class CORSFilter implements ContainerResponseFilter {
@Override
public void filter(final ContainerRequestContext requestContext,
final ContainerResponseContext cres) throws IOException {
cres.getHeaders().add("Access-Control-Allow-Origin", "*");
cres.getHeaders().add("Access-Control-Allow-Headers", "origin, content-type, accept, authorization");
cres.getHeaders().add("Access-Control-Allow-Credentials", "true");
cres.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
cres.getHeaders().add("Access-Control-Max-Age", "1209600");
}
}
在該組合它不工作。我在過濾器中留下了一個斷點,它從來沒有被調用過。我正在測試郵差,我的標題丟失了。我在這裏看到了其他的問題,我遵循它的說明沒有成功。我嘗試了Application類,沒有任何東西。
有人幫我嗎?我很感激。 :)
你有沒有設法解決這一問題? – 2015-06-15 18:34:53
我有一個與RESTEasy請求過濾器類似的問題。它不會運行。我通過在擴展Application的類中指定過濾器來解決問題。 – user2367418 2017-10-05 03:04:28