Partage
  • Partager sur Facebook
  • Partager sur Twitter

Array en java / croba

Sujet résolu
    25 février 2009 à 1:08:48

    Bonsoir à tous

    je suis une nouvelle "zéro", j'ai un souci avec mon programme corba, je vous explique, j'ai creer un tableau de string dans mon fichir Impl pour y stocker les informations saisie par le clients mais à la compilation j'ai des exceptions, je voulais savoir s'il y'avait quelques choses a importer ou si en corba les ableau ça ne marche pas pareil que sous java

    voila mon bout de code du fichier Impl
    public String[] Enregistrement_location(String NumClient, String NumVelo,
    		String date_location) {
    	 
    	String location = new String[3];
    	
    	location[0]=NumClient;
    	location[1]=NumVelo;
            location[2]=date_location;
        
    	 return location;
    }
    


    et cette partie c'est mon client
    System.out.println("Votre numero client : ");
            BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
            String numC = in.readLine();
            
            System.out.println("Le numéro du vélo : ");
            BufferedReader in2 = new BufferedReader(new InputStreamReader(System.in));
            String numV = in2.readLine();
    
            String time = "";
            Date d = new Date();
        	Calendar c = Calendar.getInstance();
        	c.setTime(d);
    
        	time += c.get(Calendar.DATE);
        	time += "/" + c.get(Calendar.MONTH);
        	time += "/" + c.get(Calendar.YEAR); 
        	time += " " + c.get(Calendar.HOUR); 
        	time += ":" + c.get(Calendar.MINUTE); 
        	
    
          monGestion.Enregistrement_location(numC,numV,time);
            
    	}
    	catch (Exception e) {
    		e.printStackTrace(); 
    	}
    


    si quelqu'un peut m'eclairer, j'en serais vraiment reconnaissante, je suis débutante en corba et je bloque vraiment sur ça!

    bonne soirée à tous
    • Partager sur Facebook
    • Partager sur Twitter
      25 février 2009 à 1:49:36

      commence déja par user des balises "code" :)
      édite ton message et change le citation par "code type="java"

      ça permettra d'avoir une mise en page automatique du code avec des couleurs et tout et tout :o
      • Partager sur Facebook
      • Partager sur Twitter
        25 février 2009 à 12:00:49

        Désolée snoooopy, c'est la première fois que je passe par un forum!! c'est vrai que c'est beaucoup mieux avec les couleurs
        • Partager sur Facebook
        • Partager sur Twitter
          25 février 2009 à 12:03:44

          Salut,

          Il me semble que c'est :
          String[] location = new String[3];
          

          et non :
          String location = new String[3];
          


          Sinon les tableaux en CORBA fonctionnent bien comme en java ^^ .

          • Partager sur Facebook
          • Partager sur Twitter

          "'But I don't want to go among mad people,' said Alice. 'Oh, you can't help that,' said the cat. 'We're all mad here.'" Lewis Carroll

          Anonyme
            25 février 2009 à 12:04:10

            Tu peux indiquer le trace des exceptions?
            • Partager sur Facebook
            • Partager sur Twitter
              25 février 2009 à 12:20:59

              merci pour vos réponses

              pour la déclaration de tableau, c'est bien comme j'avais fait, la solution de misterdi me mets une erreur et me propose de chenger le type

              voici l'exception

              java.lang.IllegalArgumentException
              	at java.nio.Buffer.position(Unknown Source)
              	at com.sun.corba.se.impl.encoding.ByteBufferWithInfo.position(Unknown Source)
              	at com.sun.corba.se.impl.encoding.CDRInputStream_1_2.alignAndCheck(Unknown Source)
              	at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_long(Unknown Source)
              	at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.readStringOrIndirection(Unknown Source)
              	at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_string(Unknown Source)
              	at com.sun.corba.se.impl.encoding.CDRInputStream.read_string(Unknown Source)
              	at monVeloc.locationHelper.read(locationHelper.java:98)
              	at monVeloc._Systeme_GestionStub.Enregistrement_location(_Systeme_GestionStub.java:143)
              	at monVeloc.Clients_location.main(Clients_location.java:75)
              


              la ligne du location helper qui est pointé est la suivante :
              
                 public static String[] read(org.omg.CORBA.portable.InputStream istream)
                  {
                      String[] new_one;
                      {
                      int size7 = 3;
                      new_one = new String[size7];
                      for (int i7=0; i7<new_one.length; i7++)
                       {
                          new_one[i7] = istream.read_string(); // c'est celle là qui est pointé dans l'erreur
              
                       }
                      }
              
                      return new_one;
                  }
              


              et cella la dans le stub

              String[] _arg_ret = monVeloc.locationHelper.read(_input);
              


              si quelqu'un peut m'aider s'il vous plait
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                25 février 2009 à 13:14:21

                Dans le trace y a un readLong() qui traine, il fait partie du message? il y a bien un mécanisme de conversion long->String approprié?

                hs:
                {
                        int size7 = 3;
                        new_one = new String[size7];
                        for (int i7=0; i7<new_one.length; i7++)
                         {
                            new_one[i7] = istream.read_string(); // c'est celle là qui est pointé dans l'erreur
                
                         }
                        }
                


                a priori, pas besoin de mettre un scope {} dans ta méthode.
                • Partager sur Facebook
                • Partager sur Twitter
                  25 février 2009 à 13:21:59

                  merci d'avoi repondu,
                  c'est quoi un scope{} please? je n'ai pas mis de long, et je ne saisie nul part de long donc je ne comprend meme pas l'erreur vu que je n'ai pas chercher à mettre de long ni a le saisir
                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 février 2009 à 13:33:35

                    at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_long(Unknown Source)
                    Voilà d'où vient le read_long dont shakal parle

                    Le scope ben je suppose que ça désigne juste les accolades. Si tu n'as qu'une seule instruction dans la boucle tu peux ommettre les accolades (ça rend le code légèrement plus visible).
                    • Partager sur Facebook
                    • Partager sur Twitter
                      25 février 2009 à 13:38:50

                      ok, merci pour ta réponse, je voyais de quel ligne il parlais mais je ne comprenais pas d'où venais le read_long vu que que je n'ai cherché a le mettre nul part, pour le scope, c'est du code généré automatiquement, vu qu'on corba on fais un IDL et plein de fichiers sont généré (dont les fichier helper comme celui de locationhelper) c'est pour ça que je bloque encore plus vu que tout est normalement bien généré !
                      • Partager sur Facebook
                      • Partager sur Twitter
                        25 février 2009 à 13:47:53

                        Ok c'est vrai que j'aide pas beaucoup pour le coup :p

                        Faudrait faire quelques tests...
                        Essaie de virer la boucle for par exemple et de remplir le tableau à la main.
                        new_one[0] = istream.read_string();
                        new_one[1] = ...
                        • Partager sur Facebook
                        • Partager sur Twitter
                          25 février 2009 à 13:56:44

                          j'ai modifier le code selon ton idée mais toujours même problème!!!! :(
                          • Partager sur Facebook
                          • Partager sur Twitter
                            25 février 2009 à 14:01:06

                            Oui à vrai dire ça m'aurait étonné.
                            Je viens de caler d'où vient ce istream.
                            Maintenant je cherche d'où vient l'erreur de Buffer qu'on peut voir dans la trace...
                            • Partager sur Facebook
                            • Partager sur Twitter
                              25 février 2009 à 14:03:05

                              ça me donne de l'espoir de t'entendre dire ça ;)

                              si tu as besoin de voir un autre bout de mon code qui te semblera utile previens mois stp

                              • Partager sur Facebook
                              • Partager sur Twitter
                                25 février 2009 à 14:14:59

                                Je connais pas trop les termes relatifs à CORBA mais bon...
                                Sur d'autres forums les gens demandent l'IDL en général.

                                Enfin moi je regarderais d'abord du côté de monVeloc.locationHelper.read(_input);

                                Ca commence déjà à déborder de mon domaine de connaissances alors j'essaie de me renseigner un peu mais bon... Peut-être sur un autre forum plus spécialisé t'aurais plus de chances.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  25 février 2009 à 14:17:41

                                  merci beaucoup d'avoir essayer, je vais tenter sur d'autre forum et continuer a chercher sur tt les sites en tout cas merci bcp et bonne journée

                                  si quelqu'un d'autre à une idée je suis prenneuse
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    25 février 2009 à 14:33:52

                                    Tu es sure pour la déclaration du tableau ?
                                    Je vois partout la déclaration habituelle de Java...
                                    Quand tu dis que t'as testé la solution de misterdi, ça t'a mis une erreur. T'utilises un logiciel de développement ? Lequel ?

                                    Autre option j'aurais tenté de modifier la méthode read :

                                    public static String[] read(org.omg.CORBA.portable.InputStream istream)
                                        {
                                            String new_one;
                                      
                                            int size7 = 3;
                                                new_one = istream.read_string(); // c'est celle là qui est pointé dans l'erreur
                                     
                                    
                                            return new_one;
                                        }
                                    


                                    Ca risque de pu être cohérent par contre.

                                    [EDIT]
                                    En fait j'ai trouvé ça sur les types utilisés par l'IDL :
                                    http://marine.edu.ups-tlse.fr/~torguet [...] portCORBA.pdf

                                    Faut descendre un peu, section 2.2 y'a un tableau qui fait la conversion des types.
                                    Ainsi String en Java devient string pour l'IDL.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      25 février 2009 à 15:12:19

                                      l'IDL en corba ça se fait avant, c'est une sorte de contrat qui te permet de generé tes stub et tes skeleton et tous les fichiers helper et autre, dc je fichier que tu me suggere de modifier a été genéré automatiquement a partir de ma definition IDL, c'est pour ça ke je ne comprend pas comment ça peut etre faut vu ke normalement ça correspond a mon IDL

                                      pour l'outil j'utilise eclipse

                                      c'est bon je declare officielement detester corba! :D
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        25 février 2009 à 17:59:50

                                        oui ça permet de générer les codes mais si les codes générés marchent pas y'a pas un problème au niveau de cette IDL ??
                                        Ou c'est pas toi qui la code (et là je comprends pu rien) ?

                                        pour moi c'que j'comprends, c'est que ton fichier Impl, si c'est toi qui le code et si c'est du Java, la déclaration de tableau est mauvaise, peu importe ce que dit Eclipse (XD).
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          25 février 2009 à 18:35:43

                                          j'ai codé le fichier IDL, dans l'IDL tu declare tes interface, tes methodes, les type ke tu veux utiliser...et a partir de cette definition plein de fichier sont generé

                                          le fichier impl c'est bien moi ki l'ai fait, desolée mais g du effacé [] en fesant la mise en page sur le site, mais c bien comme la suggestion

                                          String[] location = new String[3];
                                          


                                          je cherche encore...si je trouve la solution je poste!
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            25 février 2009 à 19:55:55

                                            Tu déclare comment tes tableaux dans l'IDL ?

                                            Comme suit ?

                                            typedef sequence<string> TabString;
                                            
                                            TabString Enregistrement_location(in string NumClient, in string NumVelo, in string date_location);


                                            Sinon, est-ce que tu pourrais montrer ton IDL justement :p



                                            Citation : CorbaNOT

                                            c'est bon je declare officielement detester corba! :D


                                            T'inquiètes, tu n'es pas la seule ;)
                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            "'But I don't want to go among mad people,' said Alice. 'Oh, you can't help that,' said the cat. 'We're all mad here.'" Lewis Carroll

                                              25 février 2009 à 20:41:43

                                              aaaaah trop fooort, j'ai essayé ta definition dans l'IDL et tot marche, je declaré ça en
                                              typedef sting location[3]
                                              et c'etait ta definition qu'il fallait mettre

                                              merci merci merci merci mille fois pour ton aide (et pour votre aide à tous)

                                              je vous souhaite a tous une bonne soirée


                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              Array en java / croba

                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                              • Editeur
                                              • Markdown