Soru BeanFactory başlatılmadı veya henüz kapatılmadı - fasülyeye erişmeden önce 'yenilemeyi' arayın


Normal bir JSF uygulamasına yaylı güvenlik eklemeyi deniyorum. Tekrarlanan denemelerden sonra ve tomcat getirme konusunda aşağıdaki hatayı alamıyorum.

İşte tüm yığın izi. Herhangi bir yardım takdir edilir.

DÜZENLE: Diğer testler üzerine, BeanFactory hakkında başlatılmayan veya zaten kapatılmayan ikinci SEVERE istisnasından önce aşağıdaki yığın izinin farkına varıyorum.

SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderList
ener
java.lang.NoSuchMethodError: org.springframework.web.context.support.XmlWebApplicationContext.getEnvironment()Lorg/springframework/
core/env/ConfigurableEnvironment;
        at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:87)
        at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicat
ionContext.java:130)
        at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:46
7)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397)
        at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:385)
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284)
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4205)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4704)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:943)
        at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:778)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:504)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1315)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
        at org.apache.catalina.core.StandardService.start(StandardService.java:525)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

After this error, the mojarra 2.1.4 is initialized before the BeanFactory exception shows up

SEVERE: Exception sending context destroyed event to listener instance of class org.springframework.web.context.ContextLoaderListener
java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
        at org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:171)
        at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1048)
        at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1022)
        at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:970)
        at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:556)
        at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:142)
        at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4245)
        at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4886)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4750)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:943)
        at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:778)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:504)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
        at org.apache.catalina.core.StandardService.start(StandardService.java:525)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

web.xml’im

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

    <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>
         /WEB-INF/applicationContext.xml
         /WEB-INF/applicationContext-security.xml
       </param-value>
    </context-param>
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <context-param>
    <param-name>javax.faces.VALIDATE_EMPTY_FIELDS</param-name>
    <param-value>false</param-value>
    </context-param>
    <context-param>
    <param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
    <param-value>true</param-value>
    </context-param>
    <context-param>
        <param-name>com.icesoft.faces.debugDOMUpdate</param-name>
        <param-value>false</param-value>
    </context-param>
    <context-param>
        <param-name>com.icesoft.faces.concurrentDOMViews</param-name>
        <param-value>true</param-value>
    </context-param>
    <context-param>
        <param-name>com.icesoft.faces.synchronousUpdate</param-name>
        <param-value>true</param-value>
    </context-param>

    <!-- Faces Servlet -->
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <!-- <load-on-startup>1</load-on-startup> -->
    </servlet>
    <servlet>
    <servlet-name>Resource Servlet</servlet-name>
    <servlet-class>com.icesoft.faces.webapp.CompatResourceServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
<!-- Extension Mapping -->
    <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
    <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/icefaces/*</url-pattern>
    </servlet-mapping>
    <session-config>
    <session-timeout>90</session-timeout>
    </session-config>


    <servlet-mapping>
    <servlet-name>Resource Servlet</servlet-name>
        <url-pattern>/xmlhttp/*</url-pattern>
    <url-pattern>/resources/*</url-pattern>
    </servlet-mapping>

    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <listener>
        <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
    </listener>


<welcome-file-list>
    <welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>

Ve benim applicationContext-security.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
             xmlns:beans="http://www.springframework.org/schema/beans"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
           http://www.springframework.org/schema/security
           http://www.springframework.org/schema/security/spring-security-3.0.xsd">

<!--  key configuration here is an entry point to be used by security intercepts -->
<http realm="Sample Realm" entry-point-ref="authenticationEntryPoint" auto-config="false">

    <custom-filter ref="sessionManagementFilter" before="SESSION_MANAGEMENT_FILTER" />
    <!-- any role that is used to protect a directory, can be multiples -->
    <intercept-url pattern='/secure/**' access='ROLE_READER' />

    <!-- enable form login to use UsernamePasswordAuthenticationFilter [/j_spring_security_check] -->
    <form-login login-page="/general/logins/htmlLogin.faces"  
                    authentication-failure-url="/general/logins/loginFailed.jsf"/>

    <!-- logout page uses the default LogoutFilter, no changes are needed as IT accepts a GET call... -->
    <!-- here is an example logout link:
    <a href="#{request.contextPath}/j_spring_security_logout">Logout</a> -->
        <logout logout-url="/j_spring_security_logout"
                logout-success-url="/general/main.jsf"
                invalidate-session="true"/>
    </http>

    <beans:bean id="authenticationEntryPoint"
        class="org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint">
        <beans:property name="loginFormUrl" value="/general/logins/login.jsf" />
    </beans:bean>

    <!-- test with this before you hook up your LDAP or other Authentication Manager -->
    <authentication-manager alias="authenticationManager">
        <authentication-provider>
            <user-service>
                <user name="joe.blow@gr.am" password="pass1234" authorities="ROLE_READER"/>
                <user name="tester@gr.com" password="pass5678" authorities="ROLE_READER"/>
            </user-service>
        </authentication-provider>
    </authentication-manager>

    <beans:bean id="sessionManagementFilter" class="org.springframework.security.web.session.SessionManagementFilter">
        <beans:constructor-arg name="securityContextRepository" ref="httpSessionSecurityContextRepository" />
        <beans:property name="invalidSessionUrl" value="/general/logins/sessionExpired.jsf" />
        <!-- this permits redirection to session timeout page from javascript/ajax or http -->
        <beans:property name="redirectStrategy" ref="jsfRedirectStrategy" />
    </beans:bean>

    <beans:bean id="jsfRedirectStrategy" class="com.palm.safe.spring.security.JsfRedirectStrategy"/>
    <beans:bean id="httpSessionSecurityContextRepository" class="org.springframework.security.web.context.HttpSessionSecurityContextRepository"/>

</beans:beans>

18
2017-09-10 02:34


Menşei


Stacktrace'i yapıştırdığınızda lütfen biçimlendiriciyi kullanın. - shazinltc
Bu soru için uygun bir cevap aldın mı? Burada hiçbir cevabı kabul etmedin. - Freakyuser
Merhaba Lambeau - Bu sorunun nihai cevabını hiç buldunuz mu? - alph486


Cevaplar:


Bu kodu görüyorum applicationContext-security.xml:

<beans:beans xmlns="http://www.springframework.org/schema/security"
             xmlns:beans="http://www.springframework.org/schema/beans"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
           http://www.springframework.org/schema/security
           http://www.springframework.org/schema/security/spring-security-3.0.xsd">

Yanlış yay sürümü kullanıyor olabilirsiniz. Örneğin, kütüphanenizde spring-xxx (spring-security-web.jar veya spring-security-core.jar) sürüm 3.1.xx kullanıyorsanız, bu hata ortaya çıkacaktır. İçindeki kodu değiştirmeyi deneyin. applicationContext-security.xml itibaren 3.0.xsd için 3.1.xsd (koddaki sürüm numarası, kitaplık klasöründeki sürüm oturumuyla eşleşmelidir).

Umarım bu yardım.


10
2017-12-10 14:04



Bu bana yardımcı olmadı ... xsd sürümü değişikliği hatayı değiştirmedi - Christian Vielma


Aynı problem vardı ve maven yay bağımlılık zinciri ile ilgili bir sorun çıktı. Bağımlılık org.springframework bahar bağlamı 3.0.5 sürümü ile ithal edildi, oysa benim kullandığım tüm bahar versiyonu 3.2.2 idi. Benim pom.xml'imde bağımlılığı açıkça eklemek onu çözdü.

Sorunu sunucuda çalıştırırken -verbose: class jvm argümanı kullanarak tespit ettim ve XmlWebApplicationContext devralma ağacındaki jar sınıflarını denetledik.


5
2018-05-23 06:44



Tam olarak, ve güvenlik kavanozlarını kaçırırken aynı sorun olabilir! Aynı sorunla karşı karşıya kaldım ve eksik kavanoz dosyaları için sebep oldu. - Gurminder Singh


Applicationcontext.xml dosyasındaki belirli bir blogun yorumları kaldırılırken kaldırılmayı kaçırdım -> "Yorumun sonu". Fark etmedim ve bu hatayı aldım.

Daha sonra kaldırıldı ve tüm iyi çalışıyordu!


4
2018-05-30 18:21





Eklemelisin RequestContextListener senin için web.xml ne yapar, yani HTTP istek nesnesini, bu istekte bulunan iş parçacığına bağlamaktır. Bu, talep zincirinin daha da uzağında talep edilen ve oturum kapsamına giren fasülyeleri yapar.

<listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>

4
2017-09-10 03:40



Bu bilgilendirici oldu ve web.xml için eklenen RequestContextListener ile denedim. Hatayı değiştirmiyor gibi görünüyor. - LambeauLeap
Ancak, yığın izimi güncelledim, appContext ile ilgili NoSuchMethodError dikkat edin, Ive onunla problem bildirimi güncellendi. Bu herhangi bir şey açıklıyor mu? EVERE: İstisna gönderme olayı, class org.springframework.web.context.ContextLoaderList ener java.lang.NoSuchMethodError dinleyicisi örneğine başlatılan olayı başlattı Örnek: org.springframework.web.context.support.XmlWebApplicationContext.getEnvironment () Lorg / springframework / core / env / ConfigurableEnvironment; - LambeauLeap
Bahar bağlamında destek bağımlılığını kaçırdığını düşünüyorum. Bunu ekle ve gör - Ravi
Yay sürümünüzü kontrol edin. spring.jar 2.x sürümü ise, diğer spring-xxx bileşenlerinin (spring-security-web veya yay-güvenlik-çekirdeği gibi) 3.x olmadığından emin olun. Bazı uyumluluk sorunu var. - huahsin68


Ben de bu hatayı vardı ve sorun, cut-paste ile, yanlışlıkla iki kez aynı servise sahip olduğumu ortaya çıkardı: spring-servlet.xml:

<bean id="pathInfoHelper" class="org.nationalhistory.util.PathInfoHelper">
</bean>

<bean id="imageIndexer" class="org.nationalhistory.util.ImageIndexer"/>

<bean id="pathInfoHelper" class="org.nationalhistory.util.PathInfoHelper">
</bean>

Buraya baktım ve bunu om39a'nın cevabı yardımıyla buldum (teşekkürler!). Dosyayı daha yeni düzenledim ve bilmediğim şekilde ekstra bir şey (ya da daha az) eklediğim bir şansın olduğunu biliyordum. Ancak bu çift giriş, hataya atıfta bulunulan fasulye değildi!


2
2018-05-25 08:04





Söz konusu projeyi, söz konusu projeyi sunucunun dağıtımlarından kaldırıncaya kadar (JBoss Dev Studio'da, sunucuyu farenin sağ düğmesiyle tıklayın ve projeyi Sunucular görünümünde "Kaldır" olana kadar kullandım);

  1. JBoss EAP 6.1 sunucusunu dağıtılan herhangi bir proje olmadan yeniden başlattı.
  2. Sunucu başladıktan sonra, söz konusu projeyi sunucuya ekledim.

Bundan sonra, sunucuyu seçerek sunucuyu yeniden başlatmanız yeterlidir (proje hata ayıklama veya çalışma modunda).

Bu, önceki ayarların / durumların / belleklerin / sorunlara neden olan her şeyi temizlemiş görünüyordu ve artık hataya ulaşmadım.


0
2017-07-16 07:12





bu bağımlılığı pom.xml'inizde kullanın

<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${springframework.version}</version> </dependency>


0
2018-05-30 21:53