Spring Bootで遊んでみた(3)

この記事では、Spring BootでJSPを扱ううえでハマった箇所を記載するよ。
前回の記事で、Spring Bootでひな形ファイルを入手してWebアプリ化した状態からすすめる。

下記のサイトを参考に作業をしてね。
[参考サイト]
JSPによるビューの作成 (1/5)
http://libro.tuyano.com/index3?id=4196003

Spring Boot ? JSP View Example
http://howtodoinjava.com/spring/spring-boot/spring-boot-jsp-view-example/

Spring Boot ? JSP View Exampleのほうが確実に動かせる気がする。
ここらへん、筆者の設定が足りてないのかもしれないが…

[ハマった箇所]
・pom.xmlにjstlの依存情報を記述.
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>

・ @RestControllerアノテーションを消して、@Controllerアノテーションを設定

・@Configurationアノテーションがついたリゾルバクラスが必要.

[ここまでの成果]
自分で作業するのが面倒な人のために、作業結果を下記に格納する。
http://www.loxsols.com/files/src/misc/loxsolsboot_003_jsp.zip

ビルド&実行するには下記のコマンドでどうぞ。
mvnw spring-boot:run

JSPにアクセスするには以下のURLを開く。
http://localhost:8080/hello

Spring Bootで遊んでみる(2)

この記事ではSpring Bootの雛形ファイルの入手から簡単なwebアプリ化までを記載するよ。

[雛形ファイル]
SprintBootの雛形ファイルは下記のURLからダウンロード可能.
http://start.spring.io/

設定項目は以下のようにする.
Generate a “Maven Project” with “Java” and Spring Boot “1.5.4”
Group    :    org.loxsols.spring.boot
Artifact:    loxsolsboot

 

[ビルド&実行まで]
1. pom.xmlの修正.

1.1 JDKバージョンの修正.

ローカルのJDKのバージョンに応じて、下記の”java.version”を修正.
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.7</java.version>
</properties>

1.2 依存ライブラリの設定
下記の依存情報を追記.

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

2. ソースの修正.
org.loxsols.spring.boot.loxsolsboot.LoxsolsbootApplication クラスを以下のように修正.

2.1 クラス宣言の前にアノテーションを追加.
@RestController
public class LoxsolsbootApplication

2.2 下記のメソッドを追加.
@RequestMapping(method=RequestMethod.GET)
public String hello()
{
return “Hello Spring MVC”;
}

2.3 import文を追加.
import org.springframework.web.bind.annotation.*;

3. ビルド&実行.
3.1 ビルドと実行
mvnw spring-boot:run

3.2 動作確認
下記のURLにアクセスする.
http://localhost:8080

 

[補足事項]
実行時のポート番号設定など.
mvn spring-boot:run –define server.port=8011 –define logging.level.org.springframework.web=DEBUG

参考) Spring Boot のビルド方法あれこれ
http://yo1000.hateblo.jp/entry/2015/05/12/143008

jarファイルへのパッケージング
mvn package

※ 上記コマンドで、target/loxsolsboot-0.0.1-SNAPSHOT.jarが生成される.
以下のコマンドで単体実行が可能.
java -jar target\loxsolsboot-0.0.1-SNAPSHOT.jar

[ここまでの成果]
自分で試すのが面倒な人のためにここまでの成果をzipで固めてupしました。
http://www.loxsols.com/files/src/misc/loxsolsboot_002_web-app.zip

ビルド&実行
mvnw spring-boot:run

動作確認用URL
http://localhost:8080

 

Spring Bootで遊んでみる(1)

Spring Bootがなかなか便利だ。
Javaでサーブレットをスクラッチで書くと、なんとかxmlとかを沢山書いた挙句、一言一句間違えない前提で作業しないといけない。

Spring Bootの何が便利といって、こうしたxmlを書く作業をアノテーションで代用できる点だ。
例えば、あるURLへのアクセスを処理するメソッドは以下のように記述する。
@GetMapping(“/hello”)
public String hello()
{
return “Hello Spring MVC”;
}

次回は、Spring Bootの雛形ファイルの入手から簡単なwebアプリの実装まで記載するよ。

Google Apps Scriptが凄い件

Google Apps Scriptが何か凄い。

https://developers.google.com/apps-script/

普通はGoogle Docsのマクロ的な使い方しかしないんだけど、Google DriveにおいたスクリプトファイルはCGIの要領でWebアプリ化できる。

例えば、
function doGet(e)
{
var value = e.parameter.hoge;
return HtmlService.createHtmlOutput(‘<p>’ + value + ‘</p>’ );
}

と書けばWebアプリの出来上がり。

あとは、
公開 / ウェブアプリケーションとして導入
から以下の画面で必要事項を入力して公開URLを得る。

gas

ここまで僅か3分。
warファイルをデプロイしてサーブレットコンテナを起動して…とか
CGIの拡張子をApacheに登録して、スクリプトのパーミッションを変更して…とか
そんな面倒な手続きはいらん。

 

連想語APIについて

連想語APIは、あるキーワードから連想される別のキーワードを提示してくれるAPIだが、思ったより数が少ない。
日本語で使えそうなのは下記の2種類だけだ。

はてなキーワード連想語API
http://developer.hatena.ne.jp/ja/documents/keyword/apis/association

kizAPI(きざっぴ)
http://kizasi.jp/tool/kizapi.html

はてなのAPIは筆者が大学生の頃からあるので歴史が長いが、いかんせん精度が低い。
また、はてなのAPI仕様は時代的にXML-RPCが流行っていた頃の名残でXML-RPCを使う必要がある。
RESTでRSSを取得するkizAPIの方が使いやすい。

というわけで、下記のサービスを更新しました。
kizAPIで連想語を取得できるように変更しています。
連想通販検索
http://www.loxsols.com/pukiwiki/index.php?%E9%80%A3%E6%83%B3%E9%80%9A%E8%B2%A9%E6%A4%9C%E7%B4%A2

 

webifiをリリースしました.(2017/07/06)

オンラインのストレージ管理サービス、webifiをリリースしました.
http://www.loxsols.com/pukiwiki/index.php?webifi

webifi-image-001

webifiは、Google DriveやFTPといったオンラインのストレージサービスを統合して、一つのファイルツリーで表現するサービスです.

また、ファイルツリーに対してはWebの専用インターフェースの他、HTTPエンドポイント機能を用いて、Webサーバーとしてファイルを配信することも出来ます.

このため、Google Driveを利用した無料のホスティングサービスとして利用することも出来ます.

 

 

tomcat-toolsを更新しました.(2017/07/04)

tomcatの運用ツールである、tomcat-toolsを更新しました。
http://www.loxsols.com/pukiwiki/index.php?tomcat-tools

[変更箇所]
・各コマンドの実行時にrootユーザーかをチェックする.(root以外はコマンド実行不可)
・tomccat-cold-deploy.sh コマンドを新設(詳細は後述)

[tomccat-cold-deploy.sh コマンド]
tomccat-cold-deploy.sh コマンドは任意のアプリを配備する際にtomcatの停止や再起動を1つのコマンドで実行します。
アプリを何度も配備して上書きしていると不整合な状態になることがありますが、
このコマンドを使えば、アプリのデプロイ解除も自動で行います。
また、tomcatを停止した状態でデプロイするので、ホットデプロイの怪しげな挙動に惑わされることもないでしょう。

 

apacheとtomcatをAJP連携させた際にセッションを維持する方法

apacheとtomcatをAJP連携させた際にセッションIDが維持されない現象に遭遇したので、下記にメモしておく。

[やりたいこと]
apacheに対するhttp://www.hoge.com/tomcat/以下へのリクエストをAJP連携したtomcatに飛ばす。その際、セッションが正しく維持されること。

[前提条件]
AJP連携の設定は、httpd.confとは別に下記のファイルにLocationタグを掘って記載している。
/etc/httpd/conf/extra/httpd-proxy.conf

[設定]
<Location /tomcat/>
ProxyPass     ajp://localhost:8009/    keepalive=on
ProxyPassReverse    ajp://localhost:8009                 ProxyPassReverseCookiePath    /     /tomcat/
</Location>

※ProxyPassReverseやProxyPassReverseCookiePathを設定しないと、apacheとtomcatをAJP連携するうえで、セッションが維持されない。

[参考にしたサイト]

リバースプロキシ(ProxyPassReverse)の設定
http://kamiyasu2.blog.fc2.com/blog-entry-17.html

Apache 2.2.x と Tomcat の連携(1) ~mod_proxy_ajp の利用~
http://www.united-bears.co.jp/blog/archives/2387

 

Amazon Fire StickとNetflixの組み合わせが素晴らしい件

Amazon Fire Stickを買いました。
これまでは、ChromecastでNetflixを見ていましたが、イレギュラーな操作を行った際に不安定になっていました。
例えば、2時間物の映画を再生中に、スマホを持ってトイレに行って戻ったら、コネクションが切れていて、再接続しても反応しないなど。

Amazon Fire Stickなら、構成がシンプルな分、こういったストレスから解放されます。
5000円未満で、手持ちのテレビでNetflixが見られるのは素晴らしいです。
prime会員なので、Amazon Prime Videoも見放題なのですが、吹き替え版の品ぞろえがよくないのが残念です。

また、英語の勉強をしたい方には、NHK Worldのアプリがおすすめです。
NHKの海外向け放送がリアルタイムでテレビで見れて、値段はタダですから。
BBCやFrance24に比べて、発音はゆっくりで安心のJapanese Englishなのもよいです。
どうせニュースを見るなら、地球の裏側で起きている話題よりも、日本の話題を見たほうがしっくりきますしね。