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

XMLRAD Discussion :

Accès aux champs du request header


Sujet :

XMLRAD

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 98
    Points : 57
    Points
    57
    Par défaut Accès aux champs du request header
    Pour une application XMLRAD 2005 r2 sur serveur Apache + tomcat java :

    J'ai besoin de récupérer la valeur de champs additionnels ( autres que referer, host, etc.. ) qui sont insérés dans le request header par un module d'authentification externe.
    Le framework ne les met pas par défaut dans le context.

    Je ne trouve rien dans l'environnement java pour cela...

  2. #2
    Membre habitué
    Inscrit en
    Janvier 2003
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 214
    Points : 132
    Points
    132
    Par défaut
    La solution que nous avont adoptée est de modifier le framework, dans XmlApp.pas, procédure InternalDispatchRequest.

    Tu as accès ici aux propriétés de l'objet request Request.GetFieldByName('Mapropriété')
    Renaud
    W2003 / XP /VISTA
    SQL SERVER / ORACLE
    ADO

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 98
    Points : 57
    Points
    57
    Par défaut
    Le problème est que je ne trouve pas l'équivalent dans l'environnement java...

  4. #4
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    en Delphi ou .NEt tu as GetServerVariable à partir de XMLRequest.
    mais en Java il n'est pas exposé

    par contre tu peux y accéder dans la servlet avec les méthodes Java classique.
    RDM
    Tout Est Relatif
    Rubrique XMLRAD: http://xmlrad.developpez.com
    FAQ XMLRAD: http://xmlrad.developpez.com/faq/

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 98
    Points : 57
    Points
    57
    Par défaut
    Peux tu être un peu plus concret stp ?
    ( un exemple serait le bienvenu... )

  6. #6
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    bin d'après la doc J2EE:
    http://java.sun.com/products/servlet...va.lang.String)

    donc dans le donc dans la méthode service de la servlet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException
    	{
                    String myHeader = request.getHeader("MyHeaer");
                    // ...
    		XMLApplication.dispatchRequest(request, response);
    	}
    mais le problème c'est que la on est hors XMLRAD...
    RDM
    Tout Est Relatif
    Rubrique XMLRAD: http://xmlrad.developpez.com
    FAQ XMLRAD: http://xmlrad.developpez.com/faq/

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    520
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Points : 1 446
    Points
    1 446
    Par défaut
    mais le problème c'est que la on est hors XMLRAD...
    Sans vouloir tomber dans le prosélytisme, je pense que c'est aussi un avantage de pouvoir faire ça.
    Ca prouve l'ouverture du framework XMLCLX aux autres frameworks qu'il cotoie. Et le problème en question est finalement réglé de manière assez propre.
    En revanche il faut répéter ce code dans le dispatch de chaque application.
    .NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web

    Mon Blog : http://blog.developpez.com/index.php?blog=89
    Mes Articles : http://sjames.developpez.com/
    Rubrique XMLRAD: http://xmlrad.developpez.com

  8. #8
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    disons qu'on a la souplesse d'utiliser les techniques classiques Java, mais c'est pas bine intégré à XMLRAD qui devrait pouvoir donner accès aux Server Variables. Qui est possible en Delphi.
    ca devrait être exposé pour la prochaine version
    enfin s'il y a vraiment besoin, on peut recompiler le XMLCLX.dll pour Java si Clisson a Delphi avec une exposition des Server Variables...
    RDM
    Tout Est Relatif
    Rubrique XMLRAD: http://xmlrad.developpez.com
    FAQ XMLRAD: http://xmlrad.developpez.com/faq/

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 98
    Points : 57
    Points
    57
    Par défaut
    merci mais effectivement " le problème c'est que la on est hors XMLRAD..."

    Je cherche où stocker la valeur de request.getHeader("MyHeaer"); pour pouvoir ensuite le mettre dans le context par exemple.

    Je sèche un peu...

  10. #10
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    520
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Points : 1 446
    Points
    1 446
    Par défaut
    tu peux faire un truc dans le genre :

    Context.SetValue('MyHeader', request.getHeader('MyHeaer'));
    .NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web

    Mon Blog : http://blog.developpez.com/index.php?blog=89
    Mes Articles : http://sjames.developpez.com/
    Rubrique XMLRAD: http://xmlrad.developpez.com

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 98
    Points : 57
    Points
    57
    Par défaut
    Dans les .java correspondants aux modules xmlRad, on a accès à context et à xmlRequest mais qui ne connaît pas de méthode getHeader().

    Dans le XmlServerServlet.java on a accès au paramètre request de la méthode service, qui connaît getHeader(), mais pas au context...

    Mon problème est de faire communiquer ces deux mondes!

  12. #12
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    il n'y a pas de moyen sur et simple pour le faire si ce n'est d'exposer une fonction dans XMLCLX.dll
    peux tu recompiler avec Delphi ? le projet est dans Delos\XMLCLX\Source\J2EE
    RDM
    Tout Est Relatif
    Rubrique XMLRAD: http://xmlrad.developpez.com
    FAQ XMLRAD: http://xmlrad.developpez.com/faq/

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 98
    Points : 57
    Points
    57
    Par défaut
    La compilation - avec Delphi 7 - s'arrête sur l'erreur :

    JavaXMLComponent.pas(801): Indentificateur non déclaré : 'XMLRequest'

  14. #14
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    ok, tu peux compiler donc faut jsute savoir faire
    dans XMLCLX.inc tu actives le define Java
    [$DEFINE JAVA}

    ensuite dans JavaStubs.pas tu va pouvoir rajouter ce qeu tu veux...
    RDM
    Tout Est Relatif
    Rubrique XMLRAD: http://xmlrad.developpez.com
    FAQ XMLRAD: http://xmlrad.developpez.com/faq/

  15. #15
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    une fois que t'arrive a recompiler, tu vas pouvoir ajouter des choses dans JavaStubs.pas:

    déclarer une fonction GetServerVariable dans les methods Stubs dans la partie XMLRequest:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function Java_xmlclx_XMLRequest_getServerVariable(Env: PJNIEnv; JXMLRequest: JObject; JName: JString): JString; stdcall;
    rajouter le nom dans les exports:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Java_xmlclx_XMLRequest_sendFile,
    Java_xmlclx_XMLRequest_getServerVariable,
      // XMLCollection
    et l'implémenter:

    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
    function Java_xmlclx_XMLRequest_getServerVariable(Env: PJNIEnv; JXMLRequest: JObject; JName: JString): JString;
    var
      XMLRequest: IXMLRequest2;
      Name: WideString;
      Res: WideString;
    begin
      Result := nil;
      try
        XMLRequest := IXMLRequest(GetIntField(Env, JXMLRequest, 'nativeObject', 'I')) as IXMLRequest2;
        if XMLRequest = nil then
          raise Exception.Create('Java_xmlclx_XMLRequest_getServerVariable - XMLRequest is nil');
        Name := JStringToString(Env, JName);
        Res := CallJavaStringMethod(Env, XMLRequest.Request, 'HttpServletRequest.getHeader', [Name]);
        Result := StringToJString(Env, PChar(string(Res)));
      except on E: Exception do
       	RaiseJavaException(Env, E.Message);
      end;
    end;
    une fois recompilé, tu pourras faire dans les gestionnaires d'événements traditionnels:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     context.setValue("MyHeader", xmlRequest.getServerVariable("MyHeader"));
    j'ai pas testé, donc dis moi si t'obtiens quelque chose...
    RDM
    Tout Est Relatif
    Rubrique XMLRAD: http://xmlrad.developpez.com
    FAQ XMLRAD: http://xmlrad.developpez.com/faq/

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 98
    Points : 57
    Points
    57
    Par défaut
    D'abord merci beaucoup
    Tout ça se recompile très bien à part un petit cast :

    Res := CallJavaStringMethod(Env, JObject(XMLRequest.Request), 'HttpServletRequest.getHeader', [Name]);

    Par contre, on n'a pas accès après à la méthode getServerVariable dans xmlRequest...
    Ne manque-t-il pas la déclaration d'interface dans xmlclx.jar ? ( que je ne peux pas modifier ... )

  17. #17
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    ah oui bien vu, manque ca !

    il faut que tu recompiles le .jar.
    un .jar etant un zip tu l'extract dans un répertoire, tu modifies le XMLRequest.java pour rajouter la déclaration de la méthode en native:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    native public String getServerVariable(String name);
    puis tu recrer le un .jar a partir de toutes les sources

    je m'apercois aussi que pour ton cast c'est pas correct
    il faut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Res := CallJavaStringMethod(Env, TJavaRequest(XMLRequest.Request).FRequest, 'HttpServletRequest.getHeader', [Name]);
    RDM
    Tout Est Relatif
    Rubrique XMLRAD: http://xmlrad.developpez.com
    FAQ XMLRAD: http://xmlrad.developpez.com/faq/

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 98
    Points : 57
    Points
    57
    Par défaut
    Après quelques difficultés pour recompiler xmlclx.jar, la méthode getSerVariable est visible.
    Par contre, la ligne
    Res := CallJavaStringMethod(Env, JObject(XMLRequest.Request), 'HttpServletRequest.getHeader', [Name]);

    provoque l'erreur :
    Violation d'accès... dasn le module jvm.dll

    le cast que tu as proposé
    Res := CallJavaStringMethod(Env, TJavaRequest(XMLRequest.Request).FRequest, 'HttpServletRequest.getHeader', [Name]);
    ne se compile pas ( type incompatibles JObject et TJavaRequest )

  19. #19
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    je confirme que ce que je t'ai donné est correct et compile
    attention c'est paa seulement le cast que j'ai changé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Res := CallJavaStringMethod(Env, TJavaRequest(XMLRequest.Request).FRequest, 'HttpServletRequest.getHeader', [Name]);
    RDM
    Tout Est Relatif
    Rubrique XMLRAD: http://xmlrad.developpez.com
    FAQ XMLRAD: http://xmlrad.developpez.com/faq/

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 98
    Points : 57
    Points
    57
    Par défaut
    Ca marche!
    Ca m'apprendra à lire correctement, j'aurais gagné du temps...

    Merci encore.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 12
    Dernier message: 11/11/2008, 10h14
  2. Accès aux champs de ma page avec Webdev en mode Php
    Par jimmypage dans le forum WebDev
    Réponses: 1
    Dernier message: 12/02/2007, 14h49
  3. [nested]problème d'accès aux champs
    Par anayathefirst dans le forum Struts 1
    Réponses: 14
    Dernier message: 30/01/2007, 17h07
  4. accés aux champs dynamiques ?
    Par bassim dans le forum Bases de données
    Réponses: 3
    Dernier message: 07/11/2005, 20h58
  5. Focus fenêtre + accès aux champs
    Par Pymm dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/07/2005, 12h07

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