2014-12-31 1 views
2

Tomcat 7을 통해 공개 된 Spring MVC webapp에서 Hibernate 4.3.7.Final과 Log4j2를 사용하고있다. 모든 설정은 JavaConfig를 통해 이루어진다. 즉, web.xml이나 다른 XML 설정이 없다. 파일).Spring MVC webapp에서 시스템 프로퍼티 추가하기

기본적으로 최대 절전 모드 로깅은 Apache wiki에 설명 된 이유로 Log4j를 통과하지 않습니다. 이 문제를 해결하기 위해 나는 다음과 같이 시스템 설정을 만들 필요가 내 응용 프로그램이 웹 애플리케이션은

System.setProperty("org.jboss.logging.provider", "slf4j"); 

거기에는 메인 스레드 없으며, 결과적으로 불확실한 어디이 System.setProperty 통화를 보류 할 수 있습니다. 어떤 조언을 주시면 감사하겠습니다. 당신이 다음

<bean id="setupJBossLoggingProperty" 
    class="org.springframework.batch.support.SystemPropertyInitializer" 
     p:keyName="org.jboss.logging.provider" p:defaultValue="slf4j"/> 

을 그리고 :

@WebListener 
public class ContextListenerExample implements ServletContextListener { 
    public void contextInitialized(ServletContextEvent e){ 
     System.setProperty("org.jboss.logging.provider", "slf4j"); 
    } 
} 

심지어 다음과 같이 스프링을 사용하여 시스템 속성을 정의 할 수 있습니다 :

+0

을 웹 컨테이너가있는 너 사용하고있어? – SMA

답변

2

당신은 아래의 첫 번째 엔트리 포인트는 컨텍스트 리스너에서이 시스템 등록 정보를 정의 할 수 있습니다

<bean id="entityManagerFactory" 
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" 
    depends-on="setupJBossLoggingProperty"> 
... 

이렇게하면 시스템 속성이 전나무로 설정됩니다. st 그리고 나서 최대 절전 모드 bean은 초기화 될 것입니다. 당신이 (당신이 더 web.xml 파일이 없기 때문에 당신이 가정) 당신의 봄 응용 프로그램을 부트 스트랩 일부 WebApplicationInitializer 구현을 사용하는 경우

+0

ContextListenerExample 클래스를 프로젝트에 추가하려고 시도했지만 추상으로 선언해야했습니다. 그러나 MVC 웹 응용 프로그램을 실행할 때 응용 프로그램이 contextInitialized 내의 메서드에 도달하는 것을 보지 못합니다. 프로젝트에 추가해야 할 것이 있습니까? 내 특별한 경우에는 trustStore 및 keyStore 속성을 설정하고 있습니다. – A21

1

이 같은 onStartup() 방법에 넣을 수 :

@Override 
public void onStartup(ServletContext servletContext) throws ServletException { 
    System.setProperty("org.jboss.logging.provider", "slf4j"); 
}