如何根据Java EE中的数据库记录重写URL
问题描述:
我正在开发JAX-RS多域应用程序。此应用程序应该由不同的域名解决,并应以不同的方式处理这些域名。每个域都是DB中的记录,并将域名映射到UUID。所有域的记录都设置为相同的服务器IP。 UUID在内部用作路径参数(例如:https:// {IP}/{uuid})。如何根据Java EE中的数据库记录重写URL
我想实现以下状态: https://domain1.com/{someResource} --> https://{serverIP}/domain/123e4567-e89b-12d3-a456-426655440000/{someResouce}
插图情况: 用户访问的URL https://my-domain.com/rest/v1/details资源和服务器(在其他请求和类似)提供有关当前域的详细信息。
我的想法是实现一个ContainerRequestFilter,它将添加有关请求的URL(和主机名)的信息,就像它在验证过滤器中一样。第二种方法是使用Ocpsoft Rewrite库,但是我没有设置它,并且文档在这个主题中不是很丰富。
答
嗨实现它采用了javax.servlet.Filter
检查出来:
@ApplicationScoped
@WebFilter(filterName = "MyAwesomeFilter", urlPatterns = {"/*"})
public class MyAwesomeFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
final String s = request.getRequestURI() + "/addedSomething"
request.getRequestDispatcher(s).forward(request, servletResponse);
}
@Override
public void destroy() {
}
}