Проблема в интеграции JSF1.2 и Spring Security - PullRequest
2 голосов
/ 02 июня 2011

Я реализую Spring Security в моем проекте JSF 1.2. Он успешно развернут в JBoss 5.0.1, но он дает мне следующие исключения, когда я пытаюсь получить доступ к странице входа в мое приложение

Caused by: java.lang.IllegalArgumentException: FacesContext must not be null
at org.springframework.util.Assert.notNull(Assert.java:112)
at org.springframework.web.jsf.FacesContextUtils.getWebApplicationContext(FacesContextUtils.java:50)
at org.springframework.web.jsf.FacesContextUtils.getRequiredWebApplicationContext(FacesContextUtils.java:81)
at org.springframework.web.jsf.el.SpringBeanFacesELResolver.getWebApplicationContext(SpringBeanFacesELResolver.java:91)
at org.springframework.web.jsf.el.SpringBeanFacesELResolver.getBeanFactory(SpringBeanFacesELResolver.java:79)
at org.springframework.beans.factory.access.el.SpringBeanELResolver.getValue(SpringBeanELResolver.java:50)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)

Из этой трассировкиЯ предполагаю, что кое-как весенние бины пытаются использовать контекст лица перед его инициализацией.

Ниже приводится структура моего проекта:

MyEar
|-- lib\ (contains all spring security jar files)  
|
|
|-- myWar
       |-- META-INF/MANIFEST.MF (entries for spring security jars)
       |
       |-- WEB-INF
               |-- applicationContext.xml 
               |-- lib\ (local jar files jsf,facelets etc)

Здесь важно упомянуть, что я хочу, чтобы всемоя весенняя банка с ценными бумагами в каталоге lib ушей, и это исключение не происходит, когда я помещаю все свои весенние банки с ценными бумагами прямо под ухо (earcontent), а не в библиотеку.

Пожалуйста, подскажите, является ли это проблемой в структурепроект чего-то еще?

ОБНОВЛЕНИЕ : Вот мой манифест:

   Manifest-Version: 1.0
   Class-Path: lib/aopalliance-1.0.jar 
   lib/mysql-connector-java-5.1.7-bin.jar 
   lib/org.springframework.aop-3.0.5.RELEASE.jar 
   lib/org.springframework.asm-3.0.5.RELEASE.jar 
   lib/org.springframework.beans-3.0.5.RELEASE.jar 
   lib/org.springframework.context-3.0.5.RELEASE.jar 
   lib/org.springframework.core-3.0.5.RELEASE.jar 
   lib/org.springframework.expression-3.0.5.RELEASE.jar 
   lib/org.springframework.transaction-3.0.5.RELEASE.jar 
   lib/org.springframework.web-3.0.5.RELEASE.jar 
   lib/spring-security-config-3.0.5.RELEASE.jar 
   lib/spring-security-core-3.0.5.RELEASE.jar 
   lib/spring-security-taglibs-3.0.5.RELEASE.jar 
   lib/spring-security-web-3.0.5.RELEASE.jar

вот некоторая часть записей web.xml:

        <!--  Delegating to a Spring-managed bean that implements the Filter interface -->
<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    <init-param>
        <param-name>targetBean</param-name>
        <param-value>filterChainProxy</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>

    <servlet>
      <servlet-name>Faces Servlet</servlet-name>
      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
      <servlet-name>Faces Servlet</servlet-name>
      <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>

1 Ответ

2 голосов
/ 02 июня 2011

FacesContext создается FacesServlet.Поэтому, когда это null, это означает, что вы не вызывали FacesServlet.Вы должны убедиться, что URL-адрес запроса браузера соответствует <url-pattern> из FacesServlet, как вы указали в web.xml.

Если это, например,

<url-pattern>*.jsf</url-pattern>

тогда вам нужно убедиться, что вы вызываете страницу входа как

http://localhost:8080/myWar/login.jsf

и, следовательно, не как

http://localhost:8080/myWar/login.xhtml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...