Ajouter le Support Scala à un projet Web

Scala eclipse 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.

[Suite:]

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 :D )

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 <natures> et ajouter ladedans:

<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 :

Servlet avec Scala

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.

—-

Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: