« 初めてのハパイヤ | トップページ | テクニカルエンジニア(エンベデッドシステム)試験 »

2006.06.11

Google Web Toolkit まとめ

Google Web Toolkit で Async にデータを受け取るところのメモ。
結構苦労したので。^^;

ここの通り、
projectCreator -eclipse MyProject
applicationCreator -eclipse MyProject com.mycompany.client.MyApplication
として、、Eclipse で
File → Import → Existing Projects into Workspace
としてインポートする。

ここの通り、 mycompany/client の下に MyService.java を作って、
package com.mycompany.client;

import com.google.gwt.user.client.rpc.RemoteService;

public interface MyService extends RemoteService {
 public String myMethod(String s);
}
のように書く。

mycompany の下に server フォルダを作って、MyServiceImpl.java を作って

package com.mycompany.server;

import com.mycompany.client.MyService; // ここは↑で作った名前にする
import com.google.gwt.user.server.rpc.RemoteServiceServlet;

public class MyServiceImpl extends RemoteServiceServlet implements MyService {
 public String myMethod(String s) {
  // ここで s に何か入れて返す
  return s;
 }
}
のように書く。

mycompany/client の下に MyService.java を作って、
package com.mycompany.client;

import com.google.gwt.user.client.rpc.AsyncCallback;

interface MyServiceAsync {
 public void myMethod(String s, AsyncCallback callback);
}
のように書く。

MyApplication.java の中で
import com.mycompany.client.MyServiceAsync;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
を書いて、
 final MyServiceAsync tService = (MyServiceAsync) GWT.create(MyService.class);
を書いて、
 ServiceDefTarget target = (ServiceDefTarget) tService;
 String strResponseURL = GWT.getModuleBaseURL();
 strResponseURL += "/myMethod";
 target.setServiceEntryPoint(strResponseURL);
と初期化して、
非同期にデータを受け取りたいところで、(なんかのアクション(onKeyUp とかで))
tService.myMethod(fTextBox.getText(),
 new AsyncCallback() {
  public void onFailure(Throwable caught) {
   // ここでエラー処理する
   // acceptor.failed(caught);
  }
  public void onSuccess(Object result) {
   // これでサーバ側の MyServiceImpl で返した文字列が受け取れる
   // Object な result をキャストすればいい
   String str = (String) result;
  }
 });
と書く。

MyApplication.gwt.xml に
<servlet path="/com.mycompany.MyApplication/myMethod" class="com.mycompany.server.MyServiceImpl" />
を追加する

これで、Eclipse 上でテストして問題なければOK

あと、Tomcat に Deploy するには、
(Deployment と書いた方がヒット率上がるか?カタカナだと、ディプロイとか、デプロイとかか?)
MyApplication-compile.cmd
でコンパイルして javascript に変換して、
(もし、一度でもコンパイルしてたら www フォルダを全部消してから、実行しないとダメ。上書きしてくれない。ので、かなりハマった。^^;)
webapps の中に MyApplication フォルダを作って、
webapps/MyApplication の中に www フォルダの中のファイルを MyApplication フォルダにコピーして、
webapps/MyApplication/WEB-INF の下に web.xml を作って
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
 <servlet>
  <servlet-name>MyService</servlet-name>
  <servlet-class>com.mycompany.server.MyServiceImpl</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>MyService</servlet-name>
  <url-pattern>/myMethod</url-pattern>
 </servlet-mapping>
</web-app>

を書く

webapps/MyApplication/WEB-INF/classes の下に bin フォルダの中の com フォルダ以下を全部コピーして、
(classes/com/mycompany/server だけあればいい気がするけど)

webapps/MyApplication/WEB-INF/classes/com/google の下に、gwt-user.jar を展開した com/google の中身を全部コピーして、
(ホントは、ここに書かれてるとおり、webapps/MyApplication/WEB-INF/lib の中に、gwt-user.jar から javax フォルダを消して再圧縮した gwt-user.jar を置けばいいみたいなのだけど。)

これで、tomcat を再起動して、うまく使えればOK!


以上、なが~

人気 blog ランキングへ(←フリーソフトを作るモチベーションアップのために、ぜひ。)

|

« 初めてのハパイヤ | トップページ | テクニカルエンジニア(エンベデッドシステム)試験 »

プログラミング」カテゴリの記事

コメント

Wesley Paz:determined dissipates Gothicize:downwards ...

投稿: | 2006.06.30 04:41

potentially?Croix,continually flora indication.liberty.sardonic seminarian

投稿: | 2006.06.30 21:17

russet meters excerpt Burnham claim flexibilities visually!drummer diffusing

投稿: | 2007.10.10 15:18

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: Google Web Toolkit まとめ:

» Xanax no prescription overnight delivery. [Xanax addiction.]
Xanax. Xanax 180 pills. [続きを読む]

受信: 2007.07.19 06:33

» The Blog [The Blog]
I would love to be able to come back and write a post about how we are developing, or have picked up a show based on a [url=http://chuvaka.com/M18xOTI4OTIx]comment[/url] posted to the blog. [続きを読む]

受信: 2007.08.29 09:05

« 初めてのハパイヤ | トップページ | テクニカルエンジニア(エンベデッドシステム)試験 »