Eclipse, java et LCDS

Portrait de titouille

Ce billet est un pense-bête, histoire d'écrire en quelque part comment j'ai configuré un projet java pour lcds (Live cycle data services).

Quelques explications d'abord...

Je suis en train de travailler sur un projet de grande envergure, utilisant Flex et LCDS. Le but, mettre en place des services hibernate pour accéder à une base de données MySQL5.

LCDS est configuré pour être en mode JRun4 intégré. C'est à dire que j'utilise le moteur Java qui est intégré à l'installation de LCDS.

Mon but est le suivant : outre le projet flex qui est déjà mis en place depuis un moment, j'aimerai utiliser FlexBuilder pour compiler mes classes Java et les placer directement dans le répertoire "classes" spécifique de LCDS.

1. Mon installation de LCDS est à l'emplacement C:\dev\flash\lcds\

2. Les classes java compilées, ainsi que les fichiers de mapping XML doivent être générés à l'emplacement C:\dev\flash\lcds\jrun4\servers\default\flex\WEB-INF\classes

Pour ce faire, il y a différentes choses à configurer et installer.

Tout d'abord, je vais installer le JDK 1.4.2_17, qui est le JDK me permettant de compiler mes classes .java en .class et qu'elles soient exploitables par LCDS. J'installe donc mon JDK sous C:\dev\java\j2dk142_17.

Je crée ensuite un nouveau projet JAVA en spécifiant que le répertoire de travail est situé dans mon répertoire de travail habituel, sur mon disque E:\.

C'est ici que ça se complique :

Je crée donc mon projet en disant à FlexBuilder de créer un projet à partir de sources existantes, bien que je n'en aie pas. Cette première action me permet de modifier l'emplacement de mon projet, et je vais pouvoir le mettre sur mon disque E:\. Cette première action effectuée, FlexBuilder va me bloquer les autres options de création de projet, tel que le choix du compilateur (JRE, java runtime environnement).
En cliquant sur le bouton "Next" plutôt que "Finish", j'arrive sur un second panneau me permettant de rajouter certaines options à mon projet.

Dans un premier temps, sur l'onglet "Source", je vais cliquer sur l'option "Create new source folder:" et nommer mon répertoire de sources "src".

Une fois cette action effectuée, je vais maintenant configurer mon projet pour qu'il puisse générer les fichiers hors du répertoire de projet. Petit rappel, le but est de générer mes classes dans le répertoire C:\dev\flash\lcds\jrun4\servers\default\flex\WEB-INF\classes.

Je clique donc sur le bouton "Browse" au fond de l'onglet "Source", puis le bouton "Create New Folder" et enfin "Advanced". Là, je coche "Link to folder in the file system" et je choisi le répertoire C:\dev\flash\lcds\jrun4\servers\default\flex\WEB-INF\classes.

Ainsi, maintenant, à chaque compilation de mon projet, les classes seront bien générées en dehors de mon répertoire racine de projet. Elles seront directement exploitables par LCDS, tel que je le désirais.

Mais la configuration nécessite encore deux dernières petites touches pour être entièrement correcte.

Premièrement, sous l'onglet "Libraries", il est maintenant nécessaire d'intégrer mon JRE, le jdk 1.4.2, afin de permettre à FlexBuilder d'utiliser ce kit de développement pour compiler mes classes.

Je clique donc sur le bouton "Add Library...", puis je sélectionne "Bibliothèque système JRE", et enfin, je coche le bouton radio "Autre JRE". Actuellement, seul le JRE "FlexBuilder3" est disponible. Je clique donc sur le bouton "JRE installés...", et dans la nouvelle fenêtre qui vient de s'ouvrir, je vais pouvoir ajouter le sdk installé précédemment. Click sur le bouton "Ajouter...", je nomme mon nouvel environnement "j2dk 1.4.2", je fais pointer l'option "répertoire racine du JRE" sur C:\dev\java\j2dk142_17 et enfin je valide l'opération.

Une fois revenu sur le panneau "Bibliothèque système JRE", je n'ai plus qu'a choisir mon nouveau JRE et à valider pour que soient ajoutés à mon projet les bibliothèques nécessaire à la compilation en bonne et due forme de mes classes Java.

Deuxièmement, je dois encore spécifier à Flex Builder qu'il doit compiler mes classes en conformité avec le jdk1.4. Pour ce faire, je vais dans les propriétés de mon projet, sous "Java Compiler", je coche la case "Enable project specific settings", puis je modifie la valeur "Compiler compliance level" pour la passer de 5.0 à 1.4. A partir de là, tout est ok, mes classes seront compilées correctement pour lcds et seront en conformité avec le jdk 1.4.

Et voilà Wink





LCDS

cet article est correcte. Mais pourrais tu un petit tuto sur le mapping actionscript / java objet?

Salut dkamta. Il y a

Portrait de titouille
Salut dkamta. Il y a beaucoup d'exemples de mapping LCDS basique entre actionScript et Java. Le but étant de créer un fichier de mapping hibernate sous format XML, puis de créer ensuite ce qu'on appelle communément un VO, ou Value Object. C'est une classe des plus basique, possédant simplement des accesseurs (getter/setter) pour chaque champs correspondant dans la base de données. Exemple de mapping pour une table User : Table User : userid userlogin useremail username userfirstname fichier de mapping hibernate : From UserVO Il suffit ensuite de créer un VO côté serveur (Java), ainsi qu'un VO côté client (ActionScript). Ce dernier doit être lié au VO java via 2 balises de métadonnées [Managed] et [RemoteClass]. package ch.titouille.test.vo { [Managed] [RemoteClass(alias="ch.titouille.test.UserVO")] public class UserVO { public function UserVO() { } /** * @var int the id */ private var _id:int; /** * @var String the username */ private var _username:String; /** * @var String the email */ private var _email:String; /** * @var String the name */ private var _name:String; /** * @var String the firstname */ private var _firstname:String; /** * @return the id */ public function get id():int { return this._id; } /** * @param the id to set */ public function set id( value:int ):void { this._id = value; } /** * @return the username */ public function get username():String { return this._username; } /** * @param the username to set */ public function set username( value:String ):void { this._username = value; } /** * @return the mail */ public function get email():String { return this._email; } /** * @param the mail to set */ public function set email( value:String ):void { this._email = value; } /** * @return the mail */ public function get name():String { return this._name; } /** * @param the mail to set */ public function set name( value:String ):void { this._name = value; } /** * @return the mail */ public function get firstname():String { return this._firstname; } /** * @param the mail to set */ public function set firstname( value:String ):void { this._firstname = value; } } } (je ne mets pas le VO java, il est du même genre, sans les métadonnées. Avec éclipse, il suffit de créer les variables privées et faire un click-droit->Source->generate getters/setters pour générer tous les accesseurs. Il est nécessaire ensuite de retoucher le fichier data-management-config.xml situé dans le répertoire WEB-INF/flex pour y ajouter une destination correspondant à notre nouveau mapping, puis d'ajouter le mapping également dans le fichier hibernate.cfg.xml. Mais je te conseille de faire quelques recherches sur le web, il y a beaucoup de tutoriaux simples. C'est lorsqu'on rentre dans les mappings complexes que ça devient assez difficile de trouver des infos... pour preuve, je viens d'acheter le livre Java Persistance with hibernate, à force de ne rien trouver comme info sur le web :P

--

je suis admiratif moins java c'est ma trop ma tasse