ScalaとかHaskellとかの話。あとJavaとか

関数型言語について勉強中です。

JJUC CCC 2013 Fallのハンズオンをしてみました。

JJUC CCC 2013 Fallに参加できなかったので、そこで実施された「R5-1 Java EEハンズオン」を一人ハンズオンをしたのでメモ。
資料が大変わかりやすく書かれていたので、特に詰まることなくJavaEE7+WebSocketアプリを作れました。

資料はこちら
Java EE 7 HoL on JJUG CCC | 寺田 佳央 - Yoshio Terada


ただ一点、GlassFishハンドルのNetBeans7.4をダウンロードしたのですが、GlassFish4が認識されずもともと入っていた3.1.2.2しか使えなかったので新たにインストールする必要がありました。

「ツール(T)」→「サーバー(S)」を選択しこの画面からサーバを追加。

f:id:amkt922:20131116134151p:plain

5章まで終わるとひと通り動くものができたので、クラスタリング構築部分は飛ばして、chat機能を追加してみました。

追加した内容は

  1. chat用のManagedBeanを追加
  2. chat用のJSFページを追加

しかもMBeanはIndexPageMgdBeanと同じ(@Namedのvalueは変更)、JSFページはclient-endpoint.htmlとadmin/index.xhtmlを合わせてメッセージ送信部分をajax処理に変えただけです。

MBeanのChatPageMgdBeanクラス

@Named(value = "chatManage")
@RequestScoped
public class ChatPageMgdBean {

ajax通信に変更したjsf

    <h:body>
        <h2>WebSocket RealTime Information Transfer2</h2>
        サーバ接続ポート:<input id="server-port" type="text" value=""/>
        <input id="connect" type="button" value="Connect" onclick="connectServerEndpoint();"/>
        <input id="close" type="button" value="DisConnect" onclick="closeServerEndpoint();"/>
        <br />
        <h:form>
            <h:inputText id="textField" value="#{chatManage.message}" />
            <f:ajax execute="textField">
            <h:commandButton value="sendMessage" action="#{chatManage.pushSendButton()}" />
            </f:ajax>
        </h:form>
        <table border="1" id="TBL">
        </table>
    </h:body>


ハンズオンのプロジェクトにこれだけ追加したら簡単なchatアプリですが完成しました。
それぞれlocalhost:8080に接続しメッセージを送付すると両方のブラウザに即座にメッセージが表示されます。

f:id:amkt922:20131116140108p:plain


最後に驚くべきは、JSFajax通信にするのは

<f:ajax />

を追加するだけというところです。

ほんとにJavaEE7+JSFを使うと業務系のアプリだと簡単に構築できそうです。

ソースはgithubにアップしています。
https://github.com/amkt922/WebSocket-HoL