2012-02-22 11 views
0

私はPhaseListenerを持っていて、動作しません。しかし、もし私の同僚のコンピュータでそれが動作します。私のphaseListenerが機能しません

私はGlassfishの2.1およびWindows 32ビット

のPhaseListenerでのNetBeans 6.8を使用し

:どうやらあなたは正確に別のバージョンをしました

package mx.udg.cgti.seguridad.listener; 

import java.util.Enumeration; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.faces.application.NavigationHandler; 
import javax.faces.context.FacesContext; 
import javax.faces.event.PhaseListener; 
import javax.faces.event.PhaseEvent; 
import javax.faces.event.PhaseId; 
import javax.naming.Context; 
import javax.naming.InitialContext; 
import javax.naming.NamingException; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpSession; 
import mx.udg.cgti.seguridadcore.negocio.ProcesosCNLocal; 

public class SeguridadCorePhaseListener implements PhaseListener { 

    public SeguridadCorePhaseListener() { 
    } 

    public void beforePhase(PhaseEvent pe) { 
     System.out.println("beforePhase"); 
    } 

    public void afterPhase(PhaseEvent pe) { 
     System.out.println("afterPhase"); 
     if (pe.getPhaseId().equals(PhaseId.RESTORE_VIEW)) { 

      if (pe.getFacesContext() != null) { 

       String pagina = pe.getFacesContext().getViewRoot().getViewId(); 
       if (!"/Inicio.xhtml".equalsIgnoreCase(pagina) && !"/Login.xhtml".equalsIgnoreCase(pagina) && pagina.contains(".xhtml")) { 
        loggedIn(); 
       } 
      } 
     } 
    } 

    private void loggedIn() { 
     String pagina = ""; 
     Long token = obtenToken(); 
     if (token != null) { 
      String result = ""; 
      result = lookupProcesosCNLocal().getSesionActiva(token); 
      if ("".equalsIgnoreCase(result)) { 
       result = null; 
      } 
//   System.out.println("RESULT " + result); 
      if (result == null) { 
       pagina = new String("sessionTimeout"); 
      } 
     } else { 
      pagina = new String("sinSession"); 
     } 
//  System.out.println(" PAGINA :- " + pagina + " TOKEN " + token); 
     if (!pagina.equalsIgnoreCase("")) { 
//   System.out.println("REGLAS DE NAVEGACION TRABAJANDO HACIA " + pagina); 
      FacesContext fc = FacesContext.getCurrentInstance(); 
      NavigationHandler nh = fc.getApplication().getNavigationHandler(); 
      nh.handleNavigation(fc, null, pagina); 
      fc.renderResponse(); 
     } 

    } 

    private Long obtenToken() { 
     Long token = null; 
     HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest(); 
     HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false); 
     Object t = request.getAttribute("token"); 
     if (t == null) { 
      Object obj=null; 
      if(session != null){ 
       obj = session.getAttribute("token"); 
       if(obj == null){ 
        obj = request.getParameter("token"); 
       } 
      }else{ 
       obj = request.getParameter("token"); 
      } 
      if (obj != null) { 
       if (obj != null && !"".equalsIgnoreCase(obj.toString())) { 
        token = Long.parseLong(obj.toString()); 
       } 
      } 
     } else { 
      token = Long.parseLong(t.toString()); 
     } 
     if (token != null) { 
      request.setAttribute("token", token); 
      if(session == null){ 
       session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true); 
      } 
      session.setAttribute("token", token); 
     } 
     return token; 
    } 

    public PhaseId getPhaseId() { 
     return PhaseId.RESTORE_VIEW; 
    } 

    private ProcesosCNLocal lookupProcesosCNLocal() { 
     try { 
      Context c = new InitialContext(); 
      return (ProcesosCNLocal) c.lookup("java:comp/env/ProcesosCN"); 
     } catch (NamingException ne) { 
      Logger.getLogger(getClass().getName()).log(Level.SEVERE, "exception caught", ne); 
      throw new RuntimeException(ne); 
     } 
    } 

} 

のfaces-config.xmlの

<?xml version='1.0' encoding='UTF-8'?> 

<!-- =========== FULL CONFIGURATION FILE ================================== --> 

<faces-config version="2.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-facesconfig_2_0.xsd"> 

    <navigation-rule> 
     <from-view-id>/*</from-view-id> 
     <navigation-case> 
      <from-outcome>logear</from-outcome> 
      <to-view-id>/Login.xhtml</to-view-id> 
      <redirect>1</redirect> 
     </navigation-case> 
     <navigation-case> 
      <from-outcome>sessionTimeout</from-outcome> 
      <to-view-id>/LoginError.xhtml</to-view-id> 
     </navigation-case> 
     <navigation-case> 
      <from-outcome>sinSession</from-outcome> 
      <to-view-id>/LoginError.xhtml</to-view-id> 
     </navigation-case> 
    </navigation-rule>  
    <application> 
     <message-bundle> 
      mx.udg.cgti.seguridad.boundle.MiBoundle 
     </message-bundle> 
    </application> 
    <lifecycle> 
     <phase-listener>mx.udg.cgti.seguridad.listener.SeguridadCorePhaseListener</phase-listener> 
    </lifecycle> 
    <validator> 
     <validator-id>validaComboRequerido</validator-id> 
     <validator-class>mx.udg.cgti.seguridad.validator.ValidaComboRequerido</validator-class> 
    </validator> 
    <converter> 
     <converter-id>tipoUsuario</converter-id> 
     <converter-class>mx.udg.cgti.ln.convertidor.TipoUsuarioConverter</converter-class> 
    </converter> 
    <converter> 
     <converter-id>Usuario</converter-id> 
     <converter-class>mx.udg.cgti.ln.convertidor.UsuarioConverter</converter-class> 
    </converter> 
    <converter> 
     <converter-id>Rol</converter-id> 
     <converter-class>mx.udg.cgti.ln.convertidor.RolConverter</converter-class> 
    </converter> 
    <converter> 
     <converter-id>Permiso</converter-id> 
     <converter-class>mx.udg.cgti.ln.convertidor.PermisoConverter</converter-class> 
    </converter> 
    <converter> 
     <converter-id>UnidadOrganizacional</converter-id> 
     <converter-class>mx.udg.cgti.ln.convertidor.UnidadOrganizacionalConverter</converter-class> 
    </converter> 

</faces-config> 
+0

詳しくは「動作しません」をお書きください。症状は何ですか?サーバーログには何が表示されますか? – BalusC

+0

ok。理論的には、リスナーはユーザーへのアクセスを許可または拒否する必要があります。 リスナーはすべてのユーザーにパーミッションを渡すだけです。コンソール上に印刷されているかどうかを確認するために、メソッド 'beforePhase'と 'afterPhase'に 'System.out.println'関数を入れてみました。私のコンピュータはメッセージを表示していません。 – appmaster

答えて

0

WARに含まれているものよりもクラスローディングが優先されているクラスパスのどこかにある同じクラス。

サーバーの/libフォルダ内、またはサーバーで使用されているインストール済みJREの/libまたは/lib/extフォルダ内にある可能性があります。

+0

ありがとうございます。私は自分のプロジェクトのプロパティでjarファイルの順序を変更し、今正しく動作します。 – appmaster

+0

ようこそ。 – BalusC

関連する問題