2017-08-31 54 views
0

我正在開發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庫,但是我沒有設置它,並且文檔在這個主題中不是很豐富。

回答

1

嗨實現它採用了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() { 
    } 
} 
相關問題