avril
2008
Après avoir installé le plugin Scala pour eclipse (j’en parle ici), il devient possible de créer des projets Scala dans eclipse, d’y créer des classes et de les exécuter.
Seulement, il est beaucoup plus intéressant d’ajouter l’aspect Scala à des projets Java, comme par exemple à un « Dynamic Web Project », histoire de pouvoir écrire des Servlets en Scala.
Malheureusement, le plugin Scala ne supporte pas encore ceci, mais tout n’est pas perdu pour autant: ceci est parfaitement possible, moyennant la modification du fichier xml .project comme je vais le montrer.
On commence donc par créer un « Dynamic Web Project » dans eclipse.
Ensuite, localiser sur le disque le fichier .project à la racine du dossier du projet, et ouvrez le avec un editeur texte (gedit dans mon cas, mais n’importe lequel ferait l’affaire, même le bon vieux (bon ?) vi )
Localiser l’élément &l;buildSpec> dans ce fichier.
Une fois trouvé, insérez cei comme élément fils:
<buildCommand>
<name>ch.epfl.lamp.sdt.core.scalabuilder</name>
<arguments></arguments>
</buildCommand>
Localiser dans le même fichier l’élément
<nature>ch.epfl.lamp.sdt.core.scalanature</nature>
Reste plus qu’à ajouter scala-library.jar (situé dans le dossier ${SCALA_HOME}/lib au classpath.
Et hop ! Il est maintenant possible de créer des classes Scala dans le projet web, et qu’elle interagissent avec d’autres classes Java du même projet \o/
Par exemple, et comme premier test pour valider cette astuce, j’ai crée une Servlet en Scala, dont voici le code :
Si ça s’est pas beau ! Notez notamment l’utilisation du XML telquel dans le code source Scala de la servlet, mais aussi l’utilisation de Scala dans cet XML !
Reste plus qu’à déclarer cette Servlet dans le web.xml:
<servlet>
<description>Servlet on Steroïds</description>
<display-name>ScalaServlet</display-name>
<servlet-name>ScalaServlet</servlet-name>
<servlet-class>test.servlet.ScalaServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ScalaServlet</servlet-name>
<url-pattern>/scala</url-pattern>
</servlet-mapping>
Et voilà !
En pointant son navigateur vers le localhost:8080/projet/scala, notre belle Servlet serait lancée et générerait la page résultat.