Eclipse(4.2)の動的プロジェクトでscala(2.10)を使用してサーブレットを動かす方法

JS745 piinksakura s Eclipse(4.2)の動的プロジェクトでscala(2.10)を使用してサーブレットを動かす方法

scala2.10でサーブレットを動かそうと思ったのですが少しはまったのでメモがわりにかいておきます。

参考にしたサイトはここ

My first Scala servlet

必要なもの

Eclipse IDE for Java EE Developers(Eclipse4.2)
Eclipse
※おそらくpleiades等でも動くと思います。

scala 2.10.1
scala

plugin url

http://download.scala-ide.org/sdk/e38/scala210/stable/site

pluginのインストール

まずはプラグインのインストールです。
このEclipse PluginのところでURLをコピーしてください。
今回はEclipse4.2のScala2.10ですので該当する箇所のリンクをクリックしてください。
クリックするとコピーできます。

Eclipseを立ち上げたら

help→Install new software

でダイアログがでますのでそこで

Add

を押してください。
そうするとまたダイアログがでますのでLocationのところに

http://download.scala-ide.org/sdk/e38/scala210/stable/site

を入れてOKをクリックしてください。

何回かダイアログがでますが全部YESでそのまま進めてください。

pluginのインストールが完了するとEclipseの再起動を促されますので再起動してください。

再起動後、ダイアログがでますが気にせずOKを押してください。

にeclipse.iniを修正したほうがよいようなので以下のように修正しました。

Eclipse.iniの修正

下のほうの数行のみいじってますがそのままのせてます。

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20120913-144807
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Dhelp.lucene.tokenizer=standard
-Xms256m
-Xmx2048m
-XX:PermSize=64m
-Xss1M
-server
-XX:+DoEscapeAnalysis
-XX:+UseConcMarkSweepGC
-XX:+UseCompressedOops

動的プロジェクトの作成

動的プロジェクトを作成します。

File→New→Other→Web→Dynamic Web Projectを選択してプロジェクトを作成します。

作成したら

出来上がったプロジェクトの.projectを修正します。

場所がわからない場合はプロジェクトを右クリックしてPropertyを選択、ResourceのLocationを見るとある場所がわかります。

参考サイトのように修正します。

以下のように変えました

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
	<name>TestPrj</name>
	<comment></comment>
	<projects>
	</projects>
	<buildSpec>
		<buildCommand>
			<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
			<arguments>
			</arguments>
		</buildCommand>
		<buildCommand>
			<name>org.scala-ide.sdt.core.scalabuilder</name>
			<arguments>
			</arguments>
		</buildCommand>
		<buildCommand>
			<name>org.eclipse.wst.common.project.facet.core.builder</name>
			<arguments>
			</arguments>
		</buildCommand>
		<buildCommand>
			<name>org.eclipse.wst.validation.validationbuilder</name>
			<arguments>
			</arguments>
		</buildCommand>
	</buildSpec>
	<natures>
		<nature>org.scala-ide.sdt.core.scalanature</nature>
		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
		<nature>org.eclipse.jdt.core.javanature</nature>
		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
	</natures>
</projectDescription>

2行だけ修正しています。

これで下準備ができました。

Eclipseを再起動してください。

Eclipseの設定とソース入れ込み

scalaのライブラリが必要となります。
scala 2.10.1
scala
からダウンロードしてきて、解凍してください。
中にあるフォルダを見るとlibフォルダがありますのでそこのscala-library.jarをコピーしてEclipseのlibフォルダに入れてください。

次にweb.xmlを作ります。
WEB-INF直下にweb.xmlを作って以下のように作ってください。

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 <display-name>TestPrj</display-name>
 <servlet>
  <servlet-name>ScalaServlet</servlet-name>
  <servlet-class>test.ScalaServlet</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>ScalaServlet</servlet-name>
  <url-pattern>/servlet</url-pattern>
 </servlet-mapping>
 <welcome-file-list>
  <welcome-file>index.html</welcome-file>
  <welcome-file>index.htm</welcome-file>
  <welcome-file>index.jsp</welcome-file>
  <welcome-file>default.html</welcome-file>
  <welcome-file>default.htm</welcome-file>
  <welcome-file>default.jsp</welcome-file>
 </welcome-file-list>
</web-app>

web.xmlを作ったらJava Resourcesのsrcにパッケージtestを作りScalaServlet.scalaを作ってください

package test

import javax.servlet.http.{ HttpServlet, HttpServletRequest, HttpServletResponse }

class ScalaServlet extends HttpServlet {

  override def doGet(req: HttpServletRequest, res: HttpServletResponse) {
    doProcess(req,res)
  }

  override def doPost(req: HttpServletRequest, res: HttpServletResponse){
    doProcess(req,res)
  }

  def doProcess(req: HttpServletRequest, res: HttpServletResponse){

    res setContentType ("text/html")

    val out = res getWriter

    out println """<html>
	<head>
		<title>Scala Servlet</title>
    </head>
	<body>
		<p>Hello world!</p>
    </body>
    </html>
    """

  }

}

あとはプロジェクトを右クリックしてTargetedRuntimesを設定すればOKです。

Tomcatをインストールしていない場合はTomcatをインストールしてください。Apacheの公式サイトからzipを落としてTargetedRuntimesでそのフォルダを設定すればOKです。

これであとはプロジェクト右クリック→run As→run on serverを押してサーバーで実行すれば動きます。

パスが今回の設定だと

http://localhost:8080/TestPrj/servlet

ですので上記をブラウザ等で入力して確認してください。

一応作ったプロジェクトファイルを置いておきますのでよかったら使ってください。

scalaservlet


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt="">