Présentation de JXTA for TINI




Environnements utilisés :  TINI 1.11  et TINI 1.12  TINI 1.14


JXTA pour TINI utilise JXME (pour CDC : jxta-cdc.jar )   http://jxme.jxta.org/
CDC = Connected Device Configuration

pour comprendre JXME : http://jxta.free.fr/JXTA-J2ME/


Il existe deux solutions :

1- JXME proxyless :

Dans cette solution deux TINI peuvent communiquer directement, mais elle est en cours de développement.
Seul la version JXME Proxyless  CDC existe pour le moment.
         
       -Tests du prototype pour le moment.
        pour plus d'infos :
http://jxme.jxta.org/

http://jxme.jxta.org/buildJXME20proxyless.html

Sur Karkov :

setenv JAVA_HOME /usr/java/jdk1.5.0_05

setenv ANT_HOME  /etudiants/deptinfo/d/duarte_e/jakarta-ant-1.5.1

setenv CDC_HOME /etudiants/deptinfo/d/duarte_e/Optimized_nosym

set path= ( /etudiants/deptinfo/d/duarte_e/jakarta-ant-1.5.1/bin  $path)


2- JXME proxy :

Dans cette solution deux TINI équipées de jxta, ne peuvent pas communiquer directement, elles doivent  passer par un proxy (PC équipé de JXTA-J2SE, lancez le serveur Jetty de mortbay qui vient avec jxta) .
L'application myJxta peut être configurée comme proxy, avec jxta configurator.

jxta-cdc.jar  est composé de 5 classes :

  
Message.java   ( modifs  voir les mailing lists en bas de cette page, pour plus de précisions, modif finale : Message )
    Element.java
    ByteCounterOutputStream.java
    PeerNetwork.java
    HttpMessenger.java  (classe pour CDC a du être modifiée HttpMessenger )
    
Description sommaire :
    Un Message est composé de Elements.
    Le programmeur de l'application ne utilise que des methodes de PeerNetwork, qui a son tour  appel les methodes
de la classe HttpMessenger qui  a son tour communique avec le CDC .

vous pouvez trouver tout les fichiers sur : http://jxta.free.fr/JXTA-TINI/JXTA-TINI/

Description résumé des problèmes rencontrés sur la TINI :

 
Il y a deux bugs sur la tini 1.11 et 1.12 :

 Le premier dans HttpMessenger, c'est que la tini ne parse pas correctements les URL longs:
http://172.16.1.2:9700/unknown-unknown?2000,-1,http://172.16.1.2:9700/EndpointService:jxta-NetGroup/uuid-DEADBEEFDEAFBABAFEEDBABE0000000F05/pid
  
Le deuxième dans Message , c'est que la tini n'a pas l'aire d'aimer les Hashtable à zero éléments: 
Hashtable h = new Hashtable(0)  ...

Conclusion pour le moment ça marche après avoir fait des corrections dans l'API  JXME.
dans les classes : HttpMessenger et Message

Voici les deux classes modifiés :  HttpMessenger et Message

Voici les 5 classes, remarquez que dans le repertoire CDC vous trouverais HttpMessenger .
http://jxta.free.fr/JXTA-TINI/JXTA-TINI/src/net/jxta/j2me/






Remerciements a tous, pour la contribution et tout particulièrement :

JM Douin pour les cours au CNAM et la mise a disposition des cartes TINI. 

Jac Kersing Consultant technique de http://www.the-box.com .

Hans Rajoharison Cnamien, pour sa contribution.

Sean Kelly pour avoir initié le projet http://tini.jxta.org



Voir mailing list:

http://jxme.jxta.org/servlets/SummarizeList?listName=discuss

http://jxme.jxta.org/servlets/ReadMsg?msgId=98401&listName=discuss
http://lists.dalsemi.com/maillists/tini/2004-April/095955.html


TESTS qui a permi de detecter le problème des URL longues, sur JXME Proxy:


/////////////////////TEST URL longues////////////////////////////////

Sortie de la TINI (PRBLEME !!):
TINI1.12 /> java TestURL.tini
protocol: http
host    :
172.16.1.2:9700/unknown-unknown?2000,-1,http://172.16.1.2:9700/EndpointService
port    : -1
file    : /uuid-DEADBEEFDEAFBABAFEEDBABE0000000F05/pid
ref     : null

//*************************************************************************
Sortie PC (java 1.3.1) Pas de Problème !! :
protocol: http
host    : 172.16.1.2
port    : 9700
file    :
/unknown-unknown?2000,-1,http://172.16.1.2:9700/EndpointService:jxta-NetGroup/uuid-DEADBEEFDEAFBABAFEEDBABE0000000F05/pid
ref     : null

Source des tests :

import java.net.URL;
import java.net.MalformedURLException;

public class TestURL {
        public static void test(String url) {
                try {
                        URL u = new URL(url);
                        System.out.println("protocol: "+u.getProtocol());
                        System.out.println("host    : "+u.getHost());
                        System.out.println("port    : "+u.getPort());
                        System.out.println("file    : "+u.getFile());
                        System.out.println("ref     : "+u.getRef());
                } catch (MalformedURLException e) {
                        System.out.println("Exception: "+e.getMessage());
                        e.printStackTrace();
                }
        }
        public static void main(String[] a) {

test("http://172.16.1.2:9700/unknown-unknown?2000,-1,http://172.16.1.2:9700/EndpointService:jxta-NetGroup/uuid-DEADBEEFDEAFBABAFEEDBABE0000000F05/pid");
        }
}
-- Jac Kersing Technical Consultant The-Box Development
////////////////////////////////////////////////////////////////



Quelques exos a faire avec JXTA:

1- Exécuter des commande slush control/commande  (équivalent telnet)
2- Transfert de fichiers put/get        (équivalent Ftp)
3-Lire la temperature du capteur                
4-Declencher des programmes sur le iButton connecte sur la Tini (à refléchir) ???
5-Détecter la présence dès qu'une tini est connectée.



Date :  25 Juin  2005
Auteur : Duarte Ernest