Как настроить приложение Weblogic Север для приложения Angular - PullRequest
0 голосов
/ 31 октября 2018

У меня есть приложение Angular (6.1), которое упаковано в файл WAR (и EAR) и должно быть развернуто в Weblogic (12c).
На основании этой ссылки все запросы к приложению (контекстный корень) должны быть направлены в файл приложения index.html.

В документации есть несколько примеров конфигурации, но не для сервера приложений, такого как WebLogic. Поскольку это должно быть связано с приложением, оно должно идти в рамках WAR, и я подумал об использовании отображения сервлета в web.xml. Я играл с этим, но не работал. (внутренняя ошибка сервера, не найдена для других представлений, отличных от стандартных ... даже если я настроил ее на обычную WAR в tomcat, WebLogic отказывается делать то же самое, ...)

Прежде чем уделить этому много времени - это правильный путь?
Если это так, как будет выглядеть правильное отображение / шаблон?
Если нет, то как еще можно настроить его в рамках WAR?

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Если вам удобнее, чем создавать собственный фильтр, вы можете использовать: org.tuckey.urlrewritefilter http://tuckey.org/urlrewrite/

Простые 3 шага:

  1. Добавьте зависимость к вашему pom.xml
  2. Добавить фильтр UrlRewriteFilter из Tuckey в web.xml
  3. Настройка фильтра в urlrewrite.xml

Из моего опыта это очень удобно (особенно по сравнению с поддерживаемыми шаблонами в web.xml).
Примером правила может быть:

<rule>
    <from>^/webapp/*</from>
    <to>/webapp/index.html</to>
</rule>
0 голосов
/ 03 ноября 2018

Используйте фильтр сервлетов. Если запрос является GET и должен быть перенаправлен в index.html, то перенаправьте его в index.html. В противном случае передайте запрос по цепочке. Вот пример такого фильтра. Конечно, в зависимости от архитектуры вашего приложения условия могут быть разными:

@WebFilter(value = "/*")
public class IndexFilter implements Filter {
    @Override
    public void doFilter(ServletRequest req,
                         ServletResponse response,
                         FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        if (mustForward(request)) {
            request.getRequestDispatcher("/index.html").forward(request, response);
            return;
        }

        chain.doFilter(request, response);
    }

    private boolean mustForward(HttpServletRequest request) {
        if (!request.getMethod().equals("GET")) {
            return false;
        }

        String uri = request.getRequestURI();

        return !(uri.startsWith("/api")
            || uri.endsWith(".js")
            || uri.endsWith(".css")
            || uri.startsWith("/index.html")
            || uri.endsWith(".ico")
            || uri.endsWith(".png")
            || uri.endsWith(".jpg")
            || uri.endsWith(".gif")
            || uri.endsWith(".eot")
            || uri.endsWith(".svg")
            || uri.endsWith(".woff2")
            || uri.endsWith(".ttf")
            || uri.endsWith(".woff");
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // nothing to do
    }

    @Override
    public void destroy() {
        // nothing to do
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...