如何根据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() { 
    } 
}