nginx(エンジンエックスっぽく発音するらしい)

素で、読み方が判らない。
今回は、このnginxThrontailを繋いでみる。
nginxはv.1.12.2、Throntailはv.2.2Final。
Throntailのプロジェクトを専用のGeneratorで作成するとpom.xmlの<version>1.0.0-SNAPSHOT</version>となるが、
<properties>をみると<version.thorntail>2.2.0.Final</version.thorntail>なのでMavenからは最新のものをダウンロードしているのだろう。
デバッグしやすいようにpom.xmlは

<dependency>
<groupId>io.thorntail</groupId>
<artifactId>bom-all</artifactId>
<version>${version.thorntail}</version>
<scope>import</scope>
<type>pom</type>
</dependency>

の後ろに

<dependency>
<groupId>io.thorntail</groupId>
<artifactId>thorntail-devtools</artifactId>
</dependency>

を、

<groupId>io.thorntail</groupId>
<artifactId>thorntail-maven-plugin</artifactId>
<version>${version.thorntail}</version>

の後ろに

<configuration>
<mode>thin</mode>
</configuration>

を追記しておく。
Eclipseでリモートデバッグする場合は、プロジェクトのフォルダで、以下のコマンドを実行しておく。

cd /d %~dp0
echo on
echo "java.exe 強制終了"
taskkill /im java.exe /f
taskkill /im java.exe /f
taskkill /im java.exe /f
taskkill /im java.exe /f
taskkill /im java.exe /f
pause "☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"
echo "Throntailリモートデバッグ実行(自動リロード付き)"
mvn thorntail:run -Dswarm.debug.port=8000
pause "☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"

これでThrontailの方は準備完了。
リモートデバッグを使わないなら、 -Dswarm.debug.port=8000を消す。
nginxは、ダウンロードページから落としたnginx-1.12.2.zipは展開しておく。
nginx.exeを起動するとnginx -s stopで停止、nginx -s reloadで再設定。
らしい。
nginx.confは、

location /rest/ {
proxy_pass http://localhost:8080/;
}

を追記して、/rest/で始まるリクエストは全部/rest/部分を除いたURLでThrontailへ飛ばす様にした。
/rest/login の場合は loginに短くなった後、http://localhost:8080/が頭に付くので、Throntailに渡るURLは、http://localhost:8080/loginになる。

参考ソース
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="css/style.css" >
<script src="script/jquery-3.3.1.js"
<title>Test</title>
</head>
<body>
<h1 class="center">ログイン</h1>
<form class="center">
<table class="center">
<tr>
<th>ユーザID:</th>
<td><input type="text" id="userid" ></td>
</tr>
<tr>
<th>パスワード:</th>
<td><input type="password" id="password" ></td>
</tr>
<tr>
<td class="center" colspan="2"><input type="button" id="send" value="ログイン"></td>
</tr>
</table>
</form>
</body> </html>

CSSはこれだけ。

.center { text-align: center; }
.colspan2 { colspan=2; }
table { margin-left: auto; margin-right: auto; }

ただこのままでは誰が送ってきたのか判らないので、
JAX-RSの @HeaderParam アノテーションを使ってみる。

@Path("/login")
public class LoginEndpoint {
	@GET
	@Produces("text/plain")
	public Response doGet() {
		String msg="ログインしましたget";
		System.out.println(msg);
		return Response.ok(msg).build();
	}
	@POST
	@Produces("text/plain")
	public Response doPost(@HeaderParam("User-Agent") String userAgent,
            @HeaderParam("Accept") String accept,
            @HeaderParam("Accept-Encoding") String encoding,
            @HeaderParam("Accept-Language") String lang) {
		String msg="ログインできるかな?";
    	Map<String,String> map = new HashMap<String,String>();
    	map.put("message", msg);
    	map.put("User-Agent", userAgent);
    	map.put("Accept", accept);
    	map.put("Accept-Encoding", encoding);
    	map.put("Accept-Language", lang);
		System.out.println(map);
    	return Response.ok(map).build();
	}
}

これでHTML+JavaScript+RESTのWebサービスのとっかかりが出来た。




コメントを残す

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

CAPTCHA