|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Inscription : janvier 2003 Messages : 95 ![]() |
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... |
|
|
00
|
|
|
#2 |
|
Membre régulier
![]() |
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 |
|
|
00
|
|
|
#3 |
|
Membre à l'essai
![]() Inscription : janvier 2003 Messages : 95 ![]() |
Le problème est que je ne trouve pas l'équivalent dans l'environnement java...
|
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() |
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/ |
|
|
00
|
|
|
#5 |
|
Membre à l'essai
![]() Inscription : janvier 2003 Messages : 95 ![]() |
Peux tu être un peu plus concret stp ?
( un exemple serait le bienvenu... |
|
|
00
|
|
|
#6 | ||
|
Membre Expert
![]() |
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 :
__________________
RDM Tout Est Relatif Rubrique XMLRAD: http://xmlrad.developpez.com FAQ XMLRAD: http://xmlrad.developpez.com/faq/ |
||
|
|
00
|
|
|
#7 | |
|
Membre éprouvé
![]() ![]() |
Citation:
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 |
|
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() |
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/ |
|
|
00
|
|
|
#9 |
|
Membre à l'essai
![]() Inscription : janvier 2003 Messages : 95 ![]() |
merci
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... |
|
|
00
|
|
|
#10 |
|
Membre éprouvé
![]() ![]() |
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 |
|
|
00
|
|
|
#11 |
|
Membre à l'essai
![]() Inscription : janvier 2003 Messages : 95 ![]() |
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! |
|
|
00
|
|
|
#12 |
|
Membre Expert
![]() |
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/ |
|
|
00
|
|
|
#13 |
|
Membre à l'essai
![]() Inscription : janvier 2003 Messages : 95 ![]() |
La compilation - avec Delphi 7 - s'arrête sur l'erreur :
JavaXMLComponent.pas(801): Indentificateur non déclaré : 'XMLRequest' |
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() |
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/ |
|
|
00
|
|
|
#15 | ||||
|
Membre Expert
![]() |
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 :
function Java_xmlclx_XMLRequest_getServerVariable(Env: PJNIEnv; JXMLRequest: JObject; JName: JString): JString; stdcall; Code :
Code :
Code :
context.setValue("MyHeader", xmlRequest.getServerVariable("MyHeader"));
__________________
RDM Tout Est Relatif Rubrique XMLRAD: http://xmlrad.developpez.com FAQ XMLRAD: http://xmlrad.developpez.com/faq/ |
||||
|
|
00
|
|
|
#16 |
|
Membre à l'essai
![]() Inscription : janvier 2003 Messages : 95 ![]() |
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 ... ) |
|
|
00
|
|
|
#17 |
|
Membre Expert
![]() |
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 :
native public String getServerVariable(String name); je m'apercois aussi que pour ton cast c'est pas correct il faut: Code :
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/ |
|
|
00
|
|
|
#18 |
|
Membre à l'essai
![]() Inscription : janvier 2003 Messages : 95 ![]() |
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 ) |
|
|
00
|
|
|
#19 |
|
Membre Expert
![]() |
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 :
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/ |
|
|
00
|
|
|
#20 |
|
Membre à l'essai
![]() Inscription : janvier 2003 Messages : 95 ![]() |
Ca marche!
Ca m'apprendra à lire correctement, j'aurais gagné du temps... Merci encore. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com