Программная конфигурация распорок в Jetty

#java #unit-testing #struts2 #integration-testing #embedded-jetty

#java #модульное тестирование #struts2 #интеграция-тестирование #встроенный-jetty

Вопрос:

Я пытаюсь настроить struts2 в Jetty программно, но у меня возникают большие проблемы с этим.

Поскольку они предназначены для модульных тестов, я не хочу использовать spring или любую другую «платформу DI».

вот что у меня есть — (здесь используется моя оболочка вокруг jetty, поэтому вызовы методов не совсем совпадают с вызовами Jetty, но вы можете легко уловить идею)

 JspServlet servlet = new JspServlet();

server.mount("*.jsp", servlet)
    .withInitParameter("trimSpaces", "true")
    .withInitParameter("mappedFile", "true")
    .withInitParameter("classdebuginfo", "true")
    .withInitParameter("keepGenerated", "true")
    .withInitParameter("development", "true")
    .withInitParameter("scratchDir", "./target/scratch");

    server.getContextHandler().setResourceBase("some-place/WebContent");

    server.filter("/*", new FilterDispatcher())

    server.start();
  

Это приведет к сбою, поскольку жалуется, что spring не настроен. Я экспериментировал с подклассами FilterDispatcher, возвращением MockConfiguration и другими вещами, но на самом деле я не добился большого прогресса…

  private static class MyFilterDispatcher extends FilterDispatcher {
    private MyFilterDispatcher(ActionMapper mapper) {
        setActionMapper(mapper);
    }

    @Override
    protected Dispatcher createDispatcher(FilterConfig filterConfig) {
        Dispatcher dispatcher = super.createDispatcher(filterConfig);
        ConfigurationManager configurationManager = new ConfigurationManager("filterdispatcher");
        configurationManager.setConfiguration(new MockConfiguration());
        dispatcher.setConfigurationManager(configurationManager);
        return dispatcher;
    }
}
  

Итак, тогда вам нужно реализовать ActionMapper, который, если вы это сделаете, вы получите UOE из вашей MockConfiguration для getRuntimeConfiguration — так что я думаю, что это, вероятно, неправильный путь…

Если кто-нибудь делал это, был бы очень признателен за любые зацепки.

Спасибо!!

Джеймс