More Related Content
PPTX
PPTX
PPTX
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~ PDF
PDF
PPTX
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc PPTX
PDF
What's hot
PDF
PDF
Solr meeting in Japan 2011 KEY
Development app-with-elixir PDF
PDF
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall ) PPTX
PDF
PDF
KEY
JJUG CCC 2012 Real World Groovy/Grails PPTX
コア・コンテキスト管理 - FIWARE WednesdayWebinars PDF
AutoDock_doc_japanese_ver.1.0 PDF
PDF
PDF
AutoDock_vina_japanese_ver.1.0 PPTX
PDF
PPTX
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 2.0.0対応) Similar to Gwt1
PDF
GKEとgRPCで実装する多言語対応・スケーラブルな内部API PDF
PDF
Using Ext Direct with SenchaTouch2 PDF
PDF
PDF
PDF
PDF
PDF
KEY
関ジャバ JavaOne Tokyo 2012報告会 PPTX
PDF
appengine ja night #24 Google Cloud Endpoints and BigQuery PDF
Gwt+objectifyでラクラクGAEアプリ開発 PDF
全部入り!WGPで高速JavaScript+HML5体験 PDF
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo PPTX
PDF
Play framework 2.0のおすすめと1.2からのアップグレード PPTX
PDF
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto PDF
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug Gwt1
- 1.
- 2.
目次
サンプルの紹介
開発環境
クライアント・サーバー間通信の概要
クライアント モジュールの実装
サーバー モジュールの実装
RPC 通信の実装
GWT の可能性 (GXT アプリケーション )
- 3.
- 4.
2.開発環境
Java 5.0
Tomcat 5.5
GWT 1.6
postgres 8.2
Windows Vista Business
Eclipse 3.4
- 5.
3.クライアント・サーバー間通信の
概要
通信の仕組み
1. GWT では、クライアント・サーバー間通信をメッセージ交換
ではなく
手続き呼び出し (Remote Procedure Call ・以下 RPC) を使
う。
2 .クライアント側ではサーバーのサービスメソッドを呼び出して、
その結果を戻り値として受け取る。
GWT で決められた手続きに従って
3 .サーバー側では、サービスメソッドが呼び出される事でクライア
ント 作成したモジュールで通信を行いま
す。
からの呼び出しと引数を受信する。
(Ajax と同じ XMLHttpRequest をラ
4 .通信は非同期で行われる。 ップ )
- 6.
3.クライアント・サーバー間通信の
概要 Client Module Server Module
GWT 側で提供
ServiceDefTarget RemoteService RemoteServiceServlet
< interface > < interface >
開発者が作成
ServiceProxy Service ServiceImpl
( 注 1) < interface >
extends
ServiceAsync
implements
注 1 GWT が自動生 < interface >
成
- 7.
3.クライアント・サーバー間通信の
概要
ServiceProxy を生成するネーミングルール
1. Proxy インターフェース名は『サービスインタフェース名 +
Async 』
2. Proxy のメソッド名はサービスインタフェースのメソッド名と
同じにする。
⇒ 戻り値は『 void 』とする。
⇒ 引数の最後にサービスの結果を受ける AsyncCallback 型
のオブジェクトを追加する
- 8.
4.クライアント モジュールの実
装 Client Module Server Module
GWT 側で提供
RemoteServiceServlet
ServiceDefTarget RemoteService
< interface > < interface >
開発者が作成
① ③
ServiceProxy ShohinService ShohinServiceImpl
( 注 1) < interface >
②
extends ShohinServiceAsync
implements
< interface >
注 1 GWT が自動生
成
- 9.
- 10.
4.クライアント モジュールの実
装
ShohinService の作成
a)マーカーインターフェースである RemoteService を継承したサービ
スの作成
b )サーバーが提供するサービスをメソッドとして宣言する。
public interface ShohinService extends RemoteService {
public List shohin(String shohinMakerCode);
}
- 11.
4.クライアント モジュールの実
装
② ShohinServiceAsync の作成
a )メソッドの戻り値を void とする
b ) ShohinService のメソッドに AsyncCallback 型のオブジェクトを追加
する。
c )非同期での戻り値を AsyncCallback 型のオブジェクトで受け取る。
public interface ShohinServiceAsync {
public void shohin(String shohinMakerCode,AsyncCallback callback);
}
- 12.
- 13.
5.サーバー モジュールの実装
ShohinServiceImpl の作成
a ) HttpServlet を継承している RemoteServiceServlet を継承する。
b ) ShohinService を実装する。
c )サービスクラスは、サーブレットとして実行されるのでスレッドセー
フにする。
public class ShohinServiceImpl extends
RemoteServiceServlet implements ShohinService {
public List shohin(String shohinMakerCode) {
:
return list;
内容は次ページに
}
}
- 14.
5.サーバー モジュールの実装
ShohinServiceImpl の作成
a ) shohin メソッドの内容
Class.forName("org.postgresql.Driver");
Connection con =
DriverManager.getConnection("jdbc:postgresql://*****", "*****",
"*****");
String sql = "select * from shohin where shohin_maker_cd = ?;";
PreparedStatement st = con.prepareStatement(sql.toString());
st.setString(1,shohinMakerCode);
Shohin クラスは
ResultSet rs = st.executeQuery();
while (rs.next()) { IsSerializable
Shohin shohin = new Shohin(); を
shohin.setShohinCd(rs.getString(1));
: 実装した
list.add(shohin); JavaBean
}
return list;
- 15.
5.サーバー モジュールの実装
JavaBean(Shohin) の内容
a )プロパティの定義とゲッター・セッターのみ
public class Shohin implements IsSerializable {
private String shohinCd; 他にも使用でき
private String shohinName; る型の限定があ
: ります
public Shohin(){ (次ページへ)
}
public String getShohinCd() {
return shohinCd;
}
public void setShohinCd(String shohinCd) {
this.shohinCd = shohinCd;
}
:
}
- 16.
5.サーバー モジュールの実装
RPC通信で使用できる型
a )基本型・参照型・配列・クラス・ユーザ定義型があります
基本型
char 、 byte 、 short 、 int 、 long 、 boolean 、 float 、 double
参照型
String 、 Date 、 Char 、 Byte 、 Short 、 Integer 、 Long 、 Boolean 、 Float
、 Double
配列・クラス
配
列、 List 、 Map 、 Set 、 ArrayList 、 HashMap 、 HashSet 、 Stack 、 Vecto
r、
AbstractList 、 AbstractCollection 、 AbstractMap 、 AbstractSet 、 Collectio
n
ユーザ定義型
IsSerializable インターフェースを実装したユーザ定義クラス
- 17.
5.サーバー モジュールの実装
② Servlet への登録
a )サービスクラスを Servlet として、『 web.xml 』に登録する。
<servlet>
<servlet-name>shohin</servlet-name>
<servlet-class>
jp.co.kpscorp.SeminarGXT.gwt.server.ShohinServiceImpl
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>shohin</servlet-name>
<url-pattern>/SeminarGXT/shohin</url-pattern>
</servlet-mapping>
- 18.
6. RPC 通信の実装
Entry ポイントの作成
a )プロキシのインスタンスを取得する。
b )エントリーポイントにサービスへの接続点を設定する。
ShohinServiceAsync proxy =
(ShohinServiceAsync)GWT.create(ShohinService.class);
ServiceDefTarget entrypoint = (ServiceDefTarget)proxy;
String entryURL = GWT.getModuleBaseURL() + "shohin";
entrypoint.setServiceEntryPoint(entryURL); サーブレットの url-
pattern
- 19.
6. RPC 通信の実装
② サービスの結果に対する処理を決める
a ) AsyncCallback の作成時に「 onSuccess 」と「 onFailure 」を実装し
ます。
b )結果により、 「 onSuccess 」 ( 成功 ) と「 onFailure 」 ( 失敗 ) で処
理を振り分ける。
AsyncCallback callback = new AsyncCallback(){
public void onFailure(Throwable caught) {
Window.alert(caught.toString());
}
public void onSuccess(Object result) {
:
}
} 内容は次ページに
- 20.
6. RPC 通信の実装
② サービスの結果に対する処理を決める
a ) onSuccess 時の処理
public void onSuccess(Object result) {
List list = (List)result;
Grid grid = new Grid(list.size(),5);
grid.setStyleName("shohinGrid meisai");
ColumnFormatter cf = grid.getColumnFormatter();
for(int a=0; a<list.size(); a++){
Shohin shohin = (Shohin)list.get(a);
grid.setText(a,0,shohin.getShohinCd());
grid.setText(a,1,shohin.getShohinName());
:
cf.setStyleName(0,"ShohinCd");
cf.setStyleName(1,"ShohinName");
:
}
}
- 21.
6. RPC 通信の実装
③ サービスを呼び出す
a )作成したプロキシーと AsyncCallback オブジェクトを使いサービスを
呼び出す。
b )通信は非同期で行われ、結果は onSuccess と onFailure に返る。
ShohinServiceAsync proxy =
(ShohinServiceAsync)GWT.create(ShohinService.class);
AsyncCallback callback = new AsyncCallback(){ ・・ }
String shohin_maker_cd;
proxy.shohin(shohin_maker_cd,callback);
- 22.
7. GWT の可能性(GXT アプリケー
ション )
GXT とは?
ExtGWT (以下、 GXT )は、 RIA 開発用の JavaScript フレームワー
クで
有名な『 Ext JS 』の GWT 版であり、 Java のコードだけで
JavaScript の動的な動き (Ajax) を実現するフレームワークです。
GXT では様々な部品が用意され、サンプルソースも公開されていま
す。
最後に、ここまで作成した GWT アプリケーションの GXT 版を紹介し
ます。
- 23.
- 24.