JavaScript の準備

まず、paraselene.war が非同期通信のサンプルになります。こちらを元に非同期通信の方法を説明します。

最初に、非同期通信用の JavaScript を生成します。paraselene.jar にクラスパスを通しておいて、以下のコマンドを実行して下さい。

java  paraselene.mockup.MakeScript

引数はありません。
実行すると、その場所に paraselene.js というファイルが生成されます。これが非同期通信用の javascript です。
paraselene.js が提供する関数は、以下の2つです。

No 関数名 機能
1タグ paraselene_get_id( id )指定 id を持つタグを返します。通信に直接関係ありませんが、サービス関数として設けています。
多分、あらゆるブラウザで動くはずです。
2paraselene_ajax_entry( 取得キー, コールバック, 取得周期 )サーバーに問い合わせ、その結果を通知するコールバック関数を登録、およびその通信自体を開始します。

コールバックは以下のような定義です。
boolean 関数名( 受信オブジェクト )
戻り値に false を返すと非同期通信を終了します。
true を返すと、さらに継続して通信を行います。次に取得する時間は、指定した取得周期後です。取得周期の単位はミリ秒です。

サーバーがステータス 200 以外を返すとコールバックは呼ばれず、通信が終了します。

paraselene.war では、result.html で非同期通信を行っています。

result.html
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<META http-equiv="Content-Style-Type" content="text/css">
<TITLE>実行結果</TITLE>
<LINK rel="stylesheet" href="gui.css" type="text/css">
<STYLE type="text/css">
<!--
.echo {
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
}
-->
</STYLE>
<SCRIPT type="text/javascript" src="paraselene.js"></SCRIPT>
<SCRIPT type="text/javascript">
<!--
function command_echo( obj ) {
  if ( obj.echo ) {
    var div = document.createElement( 'div' );
    div.className = 'echo';
    div.innerHTML = obj.echo;
    var result = paraselene_get_id( 'result' );
    result.appendChild( div );
  }
  if ( obj.finish ) {
    document.forms.to_index.ok.disabled = false;
    return false;
  }
  return true;
}
// -->
</SCRIPT>
</HEAD>
<BODY onload="paraselene_ajax_entry( 'cmd', command_echo, 1000 );">
<DIV id="result" name="result" style="border-width : 1px;border-style : solid;border-color : gray;">
</DIV>
<CENTER>
<FORM method="POST" action="index.html" name="to_index">
<INPUT type="submit" name="ok" value="戻る" disabled>
</FORM>
</CENTER>
</BODY>
</HTML>

サーバーサイド