Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
Dependency Injection 他のウェブフレームワークと同様にPlayでもDIができるようになっています。DIというのは、JSR330で規定されている依存性の注入の手法であり、Play Framework(2.4以降?)では、GoogleのGuiceというライブラリを使って実現されています。そんなに難しいわけではないのですが、原理とやり方をきちんと理解しないとなかなかとっつきにくい印象があります。AkkaのActorと組み合わせた例で説明したいと思います。 Play FrameworkにおけるDI まず、JSR330を使うということは、javax.injectパッケージのアノテーションを使うということだということを理解する必要があります。何かのコンポーネントに対して依存性の注入を行うためには、@Injectアノテーションを使ってクラスを修飾します。ちなみに、scala(Play
Playframework2.5のアプリケーションをdockerでAWS EC2にデプロイしてCloudWatch Logsでログを集約した話です。デプロイの自動化はここでは触れません。すごいまとめていうとdockerのawslogs logging driverが楽で便利だから使おうぜーってだけの話です。 dockerの1.9以上のバージョンでAmazon CloudWatch Logs logging driverを使いました。 環境は下記の通りです。 環境 Playframework 2.5 Amazon Linux Java 1.8 (EC2ではopenjdk1.8を利用) docker 1.12.6 手順 本番用のlogbackの設定 playframeworkでdockerのビルド CloudWatch Logsの設定 EC2インスタンスでアプリケーション起動 1. 本番用のl
概要 PlayFrameworkやAkka HTTPをつかっていて、うまくパフォーマンスがでなかった経験ありませんか? もしかしたらそれ、スレッドプールをうまく分割できていなかったからかもしれません。 PlayFrameworkやAkka HTTPなど、ノンブロッキングI/Oを前提につくられたライブラリやフレームワークでは、ブロッキングI/Oに十分な注意を払う必要があります。 具体的に言うと、ノンブロッキングI/Oの処理のみを実行するスレッドプールと、ブロッキングI/O(I/O待ちによりスレッドを占有する)を含む処理を実行するスレッドプールは分割し、それぞれ適切に設定する必要があります。 なぜスレッドプールをわけるか ノンブロッキングI/Oはその特性上、I/O待機中にCPUやスレッドを専有せず、他の処理に割り当てることができます。 この特性を活かし、PlayFrameworkやAkka H
case class Cont[R, A](run: (A => R) => R) { def map[B](f: A => B): Cont[R, B] = Cont(k => run(a => k(f(a)))) def flatMap[B](f: A => Cont[R, B]): Cont[R, B] = Cont(k => run(a => f(a).run(k))) } ここで重要なのは Cont のコンストラクターに渡される run 関数です。 この run 関数を作り Cont のコンストラクターに渡すことで、継続モナドを作ることができます。 それで run 関数の型を見てみますと (A => R) => R とあります。 A => R という型の関数を受け取り、おそらく受け取った関数を実行し R という結果を返すという動作が期待できます。 ここで A を全体の中の途中の計
name := "YourFirstApp" version := "1.0-SNAPSHOT" libraryDependencies ++= Seq( javaJdbc, javaEbean, cache, filters, //追加 "org.jongo" % "jongo" % "1.0", // 追加 "org.mongodb" % "mongo-java-driver" % "2.11.4" // 追加 ) play.Project.playJavaSettings ※ 2.3になってちょっとかわったけどlibraryDependenciesに追加していくのはかわらないので、体勢に影響は無い。 SBT(Scala Build Tool?)の形式ってよくわからない。 http://mvnrepository.com/に のサイトで検索して、SBTのタブがあるので便利 Google
概要 Play Framework (java)の開発環境の構築を行い、続いて簡単な検索アプリケーションを開発します。 ([Spring Bootで簡単な検索アプリケーションを開発する] (http://qiita.com/rubytomato@github/items/e4fda26faddbcfd84d16)をPlay Frameworkを使って書き直したものになります。) 環境 下記の環境で動作確認を行いました。 Windows7 (64bit) Java 1.8.0_60 Play Framework 2.4.2 Activator 1.3.5 sbt 0.13.8 Eclipse 4.4 MySQL 5.6.25 参考 下記のサイトを参考にさせて頂きました。 [Play Framework] (https://www.playframework.com/) [Play 2.4.x
最近はGoやScalaでサービスを開発したり、既存のシステムを置き換えたりする事例が増えてきてますよね。私も仕事ではruby/railsがメインなのですが、新しくアプリケーションを開発するにあたって別の言語・フレームワークを検討する機会があり、少しだけScala(とJava)のフレームワークPlayを触ったので、**Railsでいう◯◯はPlayではどうやるの?**という点をまとめたいと思います。 ちなみに、この記事を書いてる時点で筆者のScala歴・Play歴は10時間くらいですので、「Play Framework入門」と銘打ったものの、「Play Framework紹介」に近いかもしれませんwご了承ください。 サンプルコード 以下ではこちらのコードから色々抜粋して貼り付けてます。 https://github.com/suzan2go/hello_play 公式のScalaToDoLi
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く