The application life cycle is completely controlled by the servlet container, so using a context listener to start the process of initializing your application is the logical result of this fact. Thus, I would not say that this fact alone does not violate the layered architecture, just as launching a web request at the model level does not destroy the layered architecture.
, , , . , Guice , , Guice factory, . , (: MyGuiceFactory.init() MyApp.init()).