BlaBlaTech@JAVA [ELITE, viendez les boobs] - Java - Programmation
Marsh Posté le 02-06-2004 à 17:26:56
hop crosspost from blabla :
Code :
|
bien essayé le try/finally, mais c'est pas ça !
à propos les javateux, vous les faites correctements vos try/finally sur les bdd ou vous laissez tomber comme le code d'au-dessus ?
Marsh Posté le 02-06-2004 à 17:27:26
re-crosspost :
R3g a écrit : C'est quoi exactement le problème là pour toi ? Parce que moi je vois surtout que rs est encore null dans le finally, et qu'il catche les même exceptions et fait le même traitement dans les deux catch.
|
heu le rs, c'est de ma faute, étourderie.
quand on ouvre des ressources récursivement, c'est la misère, il faut emboiter les try/catch, sinon il seront pas refermés corectement à la sortie. Sauf que la règle habituelle veut que si l'ouverture a foiré, on le ferme pas (logique).
je déplace le vrai try/catch, pour simplifier :
Code :
|
ce qui est quand même un beau bordel.
évidement, il faut remonter la SQLException, mais j'ai pas encore étudié comment il faut la wrapper dans l'EJBException (et je vais pas le faire tout-de-suite).
Marsh Posté le 02-06-2004 à 17:37:47
ReplyMarsh Posté le 02-06-2004 à 17:53:51
bon ben crosspost alors
.........................................
dites les moules, j'ai une ligne de commandes comme ca:
|
ca marche bien
je veux maintenant l'appeler a partir de java:
Code :
|
et la, le script rungms est bien appele, mais ca ne fonctionne pas, il s'arrete avant la fin du processus, j'ai oublie un truc
edit: pour le buffer tout ca, je sais c'est le reste qui est important, et pour l'indentation, c'est copier/coller depuis vi
Marsh Posté le 02-06-2004 à 17:55:23
ben c'est tes > qui foutent la merde à tous les coup
Marsh Posté le 02-06-2004 à 17:56:59
the real moins moins a écrit : ben c'est tes > qui foutent la merde à tous les coup |
en quoi? la redirection fonctionne en ligne de commande, pourquoi pas dans un String ?
Marsh Posté le 02-06-2004 à 17:57:31
parce que c'est ton shell qui gere ça, pas ton os
Marsh Posté le 02-06-2004 à 17:58:59
the real moins moins a écrit : parce que c'est ton shell qui gere ça, pas ton os |
alors le "Runtime.getRuntime().exec(cmd)" est pas gerer pr l'OS ??
deja le "2>&1" a la fin, c'est du bash, ca peut sans doute foutre la merde... vais tester avec un bete ls et un >
Marsh Posté le 02-06-2004 à 18:00:45
ptain jte parle de la redirection qu'est pas gérée par ton os !
Marsh Posté le 02-06-2004 à 18:01:21
dans le fond j'en sais rien, mais c'est une grosse suggestion.
pis t'as largement de quoi faire la redirection en java, plus proprement qu'avec ses poullasseries de > & etc
Marsh Posté le 02-06-2004 à 18:02:39
PUTAIN ILS VONT SE D2CIDER A PRENDRE MES MESSAGES SES FOUTUS MDB DE MERDE
Marsh Posté le 02-06-2004 à 18:03:10
the real moins moins a écrit : dans le fond j'en sais rien, mais c'est une grosse suggestion. |
t'enerve pas biquet
sinon pour la redirection ok, mais le fait est que le script rungms fonctionne comme ca, si je lui donne pas d'arguments comme la, ca plante
Marsh Posté le 02-06-2004 à 18:04:28
raaah
mais quel rapport entre tes redirections et ton argument!!
et exec prend aussi un String[], voit si c pas fait pour passer des arguments, justement.
Marsh Posté le 02-06-2004 à 18:05:57
je contiue :
cette manière de faire, veut dire qu'on ne peut pas faire une méthode prepareStatement(String) qui ouvrirait la connection et préparerait la chose passée en paramètre (et le closeBidule() correspondant) car il serait automatiquement fermé à la sortie de la fonction. Mais on a bien envie de fatoriser cette merde.
c'est là qu'intervient la programmation fonctionnelle : on va utiliser le style passage par continuation (CPS).
passer une continuation, c'est passer une expression qui sera exécutée après la méthode qu'on appelle.
en gros on va faire :
executeUnTruc(executeCaEnsuite);
car si c'est la fonction de préparation elle-même qui fait l'exécution, ellepeut le faire dans le try/finally le plus interne (au bon endroit quoi)
bon vous avez rien compris, mais voici le code de la fonction d'au-dessus en CPS (continuation passing style) :
Code :
|
le Object comme valeur de retour est malheureusement nécessaire, dans une chaine d'appel par continuation, toutes les fonctions de la chaine doivent avoir la même valeur de retour (car la valeur de retour de la dernière continuation va revenir par tous les "return" de la chaine).
Avec les generics, ça devrait aller mieux.
comme l'appel de la continuation est terminal, il est théoriquement optimisable, mais avec les finally, il est plus terminal.
on notera que les exceptions continuent d'arriver au bon endroit et que le bouffage dégueulasse a toujours lieu.
edit : merde, j'ai trashé mon statement sql par erreur, heureusement que je l'avais posté ici !
Marsh Posté le 02-06-2004 à 18:07:42
the real moins moins a écrit : raaah |
vais voir ca mais calme toi quand meme
Marsh Posté le 02-06-2004 à 18:12:35
nan me calme pas ça fait des heures que j'essaie de capter pourquoi mes messages sont pas processés et ça fait chier la bite
Marsh Posté le 02-06-2004 à 18:15:32
the real moins moins a écrit : nan me calme pas ça fait des heures que j'essaie de capter pourquoi mes messages sont pas processés et ça fait chier la bite |
t'es sûr de bien catcher tes exceptions en static overflow jdbcFactory.getConnection() ?
Marsh Posté le 02-06-2004 à 18:15:35
the real moins moins a écrit : nan me calme pas ça fait des heures que j'essaie de capter pourquoi mes messages sont pas processés et ça fait chier la bite |
ben trouves toi un stagiaire, je suis pas ton souffre douleur
Marsh Posté le 02-06-2004 à 18:17:18
uriel a écrit : ben trouves toi un stagiaire, je suis pas ton souffre douleur |
je vais peut-être retirer mon CV de ses mains moi ...
Marsh Posté le 02-06-2004 à 18:25:51
ReplyMarsh Posté le 02-06-2004 à 18:26:16
nraynaud a écrit : hop crosspost from blabla : |
pkoi pas ca :
Code :
|
avec une méthode close le bordel qui close en try-catchant correctement ?
Marsh Posté le 02-06-2004 à 18:26:58
ReplyMarsh Posté le 02-06-2004 à 18:34:06
benou a écrit : pkoi pas ca :
|
techniquement, je vois pas de pb. si closeLeBordel est isolé-lui même correctement (c'est-à-dire les closes isolés les uns des autres).
Mais alors sémantiquement ! les ouvertures et fermetures de ressources qui sont pas en paires, choisir de tenter de fermer sur une valeur nulle ou pas, devoir "faire attention" (à pas mettre à null le bidule). Je suis pas pour du tout.
Marsh Posté le 02-06-2004 à 18:42:20
nraynaud a écrit : Mais alors sémantiquement ! (1)les ouvertures et fermetures de ressources qui sont pas en paires, (2)choisir de tenter de fermer sur une valeur nulle ou pas, (3)devoir "faire attention" (à pas mettre à null le bidule). Je suis pas pour du tout. |
1) j'ai pas bien compris ... Tu veux dire que le close n'est pas fait là où est ouvert (ou plutot accédé : y a pas de open ...) l'objet. Je vois pas trop le problème ... la méthode utilitaire peut porter un nom explicite genre closeAll() ... on comprend que ca va closer, quoi ...
2) la méthode testera si c'est null avant de tenter un close dessus bien sûr ...
3) j'ai pas compris
Marsh Posté le 02-06-2004 à 18:50:29
benou a écrit : 1) j'ai pas bien compris ... Tu veux dire que le close n'est pas fait là où est ouvert (ou plutot accédé : y a pas de open ...) l'objet. Je vois pas trop le problème ... la méthode utilitaire peut porter un nom explicite genre closeAll() ... on comprend que ca va closer, quoi ... |
oui, on est d'accord sur tous les points techniques.
Je sais pas, ça m'enchante pas, c'est la philosophie du truc qui me plait pas. Je dirais "trop fragile", mais c'est assez difficile à expliquer comme critère. je suis plus pour les choses qui fonctionnent "par construction".
Mais techniquement ça marche, avec un closeAll() bien écrit.
edit : et pourtant, je suis attaché aux performances et ton truc est plus performant que le mien.
Marsh Posté le 02-06-2004 à 19:07:44
uriel > essaie d'appeler bash tacommande dans ta String, tu verras bien si c'est un problème du shell. Ensuite tu pourras essayer de refaire ça proprement avec les paramètres comme il faut et les redirections gérées par ton programme.
Marsh Posté le 02-06-2004 à 19:24:25
y'a quelqu'un pour m'expliquer l'intérêt de cette fonction svp ?
Marsh Posté le 02-06-2004 à 19:26:43
nraynaud a écrit : http://www.tusc.com.au/tutorial/im [...] FindBy.png |
vérifier la présence d'un client en base à partir de son id
Marsh Posté le 02-06-2004 à 19:27:06
mais qu'est-ce que tu lis toi? un tuto sur ejb0.1 ou quoi ?
ça n'as pas d'interet, tu fais home.findByPrimary(pk) et hop, tu trashes cette connerie.
ha et puis superbe, j'avais pas vu ce que la methode retournait.
Marsh Posté le 02-06-2004 à 19:27:34
c'est quoi que tu aimais pas dans ce que j'avais écrit au fait ?
Marsh Posté le 02-06-2004 à 19:29:29
benou a écrit : vérifier la présence d'un client en base à partir de son id |
ok, merci.
et elle est utilisée dans quel cas ?
Marsh Posté le 02-06-2004 à 19:40:20
benou a écrit : c'est quoi que tu aimais pas dans ce que j'avais écrit au fait ? |
static
et que ce n'est jamais que "cacher" le problème de faire ça, alors qu'il serait plus sain d'extraire toute la logique du bordel (pas seulement la fermeture) dans un objet à part entiere
Marsh Posté le 02-06-2004 à 19:42:11
the real moins moins a écrit : mais qu'est-ce que tu lis toi? un tuto sur ejb0.1 ou quoi ? |
je sais pas moi j'ai trouvé ça sur le net, c'était ni du pron, ni du pédophile ni du néonazi, alors j'ai pris.
ça cause de J2EE, de lomboz, et de jboss, tout ce qui m'intéresse.
http://www.tusc.com.au/tutorial/html/index.html
mon bouquin est sensé arriver demain puisque je l'ai raté aujourd'hui.
Marsh Posté le 02-06-2004 à 19:43:56
nraynaud a écrit : et elle est utilisée dans quel cas ? |
ben j'en sais rien moi ... pour vérifier que l'objet passé en paramêtre est persistent par exemple ...
mais bon, pour moi c'est une méthode à la con.
Marsh Posté le 02-06-2004 à 19:45:45
the real moins moins a écrit : static |
et alors ? ton objet à part entière faudra bien qu'il les fasses les close ... et qu'est ce qi te fait dire qu'on est pas dans cet objet ?
et je vois pas le problème de la méthode static. C'est utile pour ce genre de méthode utilitaire ...
Marsh Posté le 02-06-2004 à 19:48:36
R3g a écrit : uriel > essaie d'appeler bash tacommande dans ta String, tu verras bien si c'est un problème du shell. Ensuite tu pourras essayer de refaire ça proprement avec les paramètres comme il faut et les redirections gérées par ton programme. |
en precisant le type de shell ca fonctionne
donc j'ai rajoute un petit morceaux pour reconnaitre l'OS et plop j'ajoute /bin/sh si besoin (linux/darwin) ou cmd.exe pour windows, en tout cas sur Linux, ca roule, vais tester sur mac
edit: donc merci
Marsh Posté le 02-06-2004 à 19:49:04
t'es pas non plus obligé de te sentir agressé et d'etre aggressif en retour parce que je critique tes methodes de merde hein
Marsh Posté le 02-06-2004 à 20:03:15
hep, je risque des grosses surprises à utiliser systématiquement setObject(int, Object) de preparedStatements ?
J'ai été voir la spec ( https://jsecom16.sun.com/ECom/EComA [...] 2c1d592e71 p 181 ) et j'y vois pas de piège à con.
Marsh Posté le 02-06-2004 à 20:08:31
Marsh Posté le 02-06-2004 à 17:24:04
Salut à tous.
Ici ça sera le bistrot-geek de java, là où on pose pas de vraies questions, mais où on discute de choses techniques et d
u cul de la serveusee la meilleure manière de faire telle ou telle action, de ce qu'on découvre de marrant ou d'intéressant. Et des petites questions à la cons.En espérant que les modos ferment pas.
en résumé :
- uniquement du java
- pas un vrai blabla
- du technique
- pas de vraies questions
Message édité par nraynaud le 23-05-2007 à 14:10:33
---------------
trainoo.com, c'est fini