IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

Fermeture des curseurs


Sujet :

Développement Web en Java

  1. #21
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    A chaque servlet vous ouvrez et fermez votre connexion à la db.
    Oui, grosso modo. D'une manière générale, il ne faut pas garder explicitement de connexion ouvertes entre plusieurs requêtes d'utilisateurs.

    Pour savoir si l'utilisateur s'est authentifié, vous baladez dans la session un statut "connecté" ou quelque chose du style alors ?
    Si tu utilises les mécanismes d'authentification J2EE, tu n'en auras pas besoin.
    Si tu fais ta solution "maison", il te faudra quelque chose du genre.

  2. #22
    Membre actif
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Points : 215
    Points
    215
    Par défaut
    Merci.

    Dernière petite question si vous le permettez

    J'utilise pas mal de procédures stockées avec comme spécification
    "AUTHID CURRENT USER" .

    Puisque l'utilisateur est connecté avec son propre login/mdp oracle, lorsqu'une procédure stockée est exécutée, ça permet d'automatiquement vérifier si l'utilisateur à le droit d'exécuter cette proc ou non.

    Comment faites vous dans votre cas ?

  3. #23
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Je n'ai pas ce genre de problèmes puisque j'utilise un user de base de données générique et que les droits sont gérés au niveau applicatif.

    Je ne saurais pas répondre à ta question, mais j'imagine que ça se passe comme tu le décris.

  4. #24
    Membre actif
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Points : 215
    Points
    215
    Par défaut
    D'après moi il est difficile alors de gérer le droit d'exécution sur les procédures stockées.

    Enfin, un grand merci pour votre patience et ces explications !

  5. #25
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut Le retour du client / serveur
    Bonjour,

    Le problème de fond c'est faire du client / serveur dans un forum ou on fait du J2EE
    On peut utiliser les comptes Oracle individuels pour l'authentification voir l'autorisation et avoir un compte de service pour le reste de l'application. C'est un compromis acceptable ?

    Salutations,

  6. #26
    Membre actif
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Points : 215
    Points
    215
    Par défaut
    Citation Envoyé par spopoff Voir le message
    Bonjour,

    Le problème de fond c'est faire du client / serveur dans un forum ou on fait du J2EE
    On peut utiliser les comptes Oracle individuels pour l'authentification voir l'autorisation et avoir un compte de service pour le reste de l'application. C'est un compromis acceptable ?

    Salutations,
    Ca n'apporterait aucun avantage. Cela reviendrait au même d'utiliser un mot de passe stocké dans une table de la DB plutôt que le mot de passe Oracle individuel.
    Le but est d'utiliser les rôles oracles attribués à l'utilisateur et les droits d'exécution sur les procs stockées.

    Les rôles peuvent être déduits en stocké le nom d'utilisateur et en interrogeant la table dba_role_privs quand nécessaire.
    Mais pour les procs stockées, ça pose toujours problème.

    Vous voyez à quoi je veux en venir?

  7. #27
    Membre actif
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Points : 215
    Points
    215
    Par défaut
    Bonjour,

    Je reviens sur ce post pour une petite question.
    Afin de tester si le changement vers un système de login avec pool de connexion serait plus bénéfique, je tente d'implémenter ce système.

    J'ai une jsp de login qui demande "user" + "mdp" et qui envoit les données vers une servlet Ident.java:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		String ident = request.getParameter("ident");
    		String pwd = request.getParameter("pwd");
     
    		try {
    			Class.forName("oracle.jdbc.driver.OracleDriver") ;
    			@SuppressWarnings("unused")
    			Connection cn = (Connection)DriverManager.getConnection("jdbc:oracle:thin:@name:port:conn",ident,pwd);
    			HttpSession session = request.getSession(true);
    			session.setAttribute("loggedUser", ident);
    			response.sendRedirect("/NewLoginMethod/Init");
     
    		} catch (ClassNotFoundException e) {
    			response.sendRedirect("index.jsp?erreur="+ e.getMessage());
    		}catch (SQLException sqle) {
    			// TODO Auto-generated catch block
    			response.sendRedirect("index.jsp?erreur="+sqle.getMessage());
    		}
     
    	}
    Si la connexion est réussie, que le mdp est correct, on redirige l'utilisateur vers la page principale (via une servlet "Init" que voici)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
    		HttpSession session = request.getSession(false);
    		DataSource ds=null;
    		Connection con = null;
    		Statement stmt = null;
     
    		if(session!=null)	
    		{
    		try 
    		{
    			String userDescr="";
    			Context initContext = new InitialContext();
    			ds = (DataSource) initContext.lookup("java:comp/env/jdbc/DataSource");
    			con = ds.getConnection();
    			stmt = con.createStatement();
     
    			String sql="select description from UTILISATEUR " +
    					   " where login = '" + session.getAttribute("loggedUser") + "'";
    			ResultSet rs = stmt.executeQuery(sql);
    			while(rs.next())
    				userDescr=rs.getString(1);
     
    			request.setAttribute("userDescr",userDescr);
    			getServletConfig().getServletContext().
    			getRequestDispatcher("/html/welcomePage.jsp").forward(request, response);
     
    		} catch (NamingException e) {
    			e.printStackTrace();
    		}catch (SQLException sqle){
    			sqle.printStackTrace(); 
    		} finally
    		{
    			ds=null;
    			try {
    				stmt.close();
    				con.close();
    			} //Already Closed
    			catch (SQLException e) {}
    			stmt=null;
    			con=null;
    		}
    		}
    		else
    			response.sendRedirect("index.jsp?erreur=Session expirée!");
    	}
    Et dans la welcomePage.jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Welcome</title>
    </head>
    <body>
    	<h1>Bienvenue <c:out value="${requestScope['userDescr']}"/>!</h1>
    	<h4>Vous vous êtes identifié avec succès..</h4>
    </body>
    </html>
    Est-ce comme ça que vous procédez ?
    Si un utilisateur tape directement http://monserveur/MonContext/Init , il accèdera directement à la page de cette manière..
    Comment contrôlez-vous qu'il est bien identifié ? via une variable de session?

    Merci d'avance.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. temps de traitement des curseurs
    Par charluber dans le forum Oracle
    Réponses: 1
    Dernier message: 20/04/2006, 10h46
  2. Ouverture et fermeture des tables
    Par Christophe Charron dans le forum Requêtes
    Réponses: 4
    Dernier message: 31/03/2006, 10h14
  3. [Hibernate][Struts] Fermeture des session hibernate
    Par osopardo dans le forum Hibernate
    Réponses: 2
    Dernier message: 22/08/2005, 17h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo