素で、読み方が判らない。
今回は、このnginxとThrontailを繋いでみる。
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サービスのとっかかりが出来た。