-
java.net.URL et Weblogic
Bonjour
J'ai détecté un pb bloquant avec un serveur weblogic 10 , qui ne l'est pas avec Weblogic 11 , sans que je comprenne pourquoi.
Dans une classe, on se plante avec un index passant par la valeur -1 , suite à la recherche du string 'WEB-INF' dans une url retournée par l'instruction suivante:
URL url = Thread.currentThread().getContextClassLoader().getResource("");
Pour pouvoir faire des traces sans avoir à recompiler la classe (appli livrée par un éditeur) , j'ai déplacé cette instruction dans la jsp appelante et j'ai tracé le résultat:
Weblo11:
url=file:/applis/monappli/WEB-INF/classes .... OK
Weblo10:
url=file;/bea/wls101/common/lib .... ???
Non seulement , il n'y a aucune raison de retourner cela mais cela provoque cette erreur dans la recherche du string WEB-INF et cette exception:
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1937)
at com.infodb.sw.client.Jasper.s(Jasper.java:69)
at jsp_perceavaltest._jsp.__popup_param_jasper._jspService(__popup_param_jasper.java:214)
Avez vous une idée de où cela peut venir ? ClassLoader ? Classpath ?
Merci
-
Bonjour,
Si à la place tu fais :
Code:
URL url = getClass().getResource("");
Ton chemin ne contiendrait pas le WEB-INF ?
Romain.
-
Merci pour ta réponse rapide, Romain.
J'ai fait la modif: en effet, maintenant je récupère:
url=file:/applis/pages/jsp_perceavaltest/_jsp/
C'està dire le répoertoire où est compilée ma JSP.
J'imagine que si l'on me relivre la classe java avec la modif que tu m'as indiquée, je récupérerai bien ..../WEB-INF/classes/<LeCheminDeMaClasse>.
C'est à dire que tout devrait marcher.
En question subsidiaire, peux tu me dire pourquoi on n'a pas le même résultat entre weblogic10 et weblogic11?
merci.
-
Je ne sais pas trop, je n'ai jamais touché à Weblogic, mais j'imagine que la gestion des thread est différente. Je pense que dans Weblogic 10, pour afficher une page JSP, il te crée un nouveau thread à partir d'un classloader différent de celui qui est utilisé pour charger tes propres classes. Chose qu'il ne doit pas faire dans Weblogic 11.
Mais bon ceci n'est qu'une grosse supposition/devinette, pas une affirmation.
Romain.
-
[Résolu]
OK.
L'explication doit effectivement être liée à la gestion des threads , différente entre les 2 moteurs.
Pour info, l'application est initialement prévue pour être déployée sous Tomcat et fonctionne bien dans cet environnement.
Je vais donc soumettre une demande de modif à l'éditeur.... s'il l'accepte.
Merci pour la solution.
A plus
Bruno