25.2. コンポーネントの準備

GWT で Seam コンポーネントが呼び出されるよう準備するには、 まず呼び出したいメソッドの同期および非同期サービスの両インターフェースを作成しなければなりません。 両方のインターフェースとも GWT インターフェース com.google.gwt.user.client.rpc.RemoteService を拡張するはずです。
public interface MyService extends RemoteService { 
  public String askIt(String question);      
}
非同期インターフェースは宣言するメソッドごとに AsyncCallback パラメータが追加されている点以外はまったく同じになるはずです。
public interface MyServiceAsync extends RemoteService { 
  public void askIt(String question, AsyncCallback callback); 
}
非同期インターフェース (例では MyServiceAsync) は GWT で実装されるので、絶対に直接実装しないでください。
次のステップは同期インターフェースを実装する Seam コンポーネントの作成です。
@Name("org.jboss.seam.example.remoting.gwt.client.MyService")
public class ServiceImpl implements MyService {

  @WebRemote
  public String askIt(String question) {
   
    if (!validate(question)) {
      throw new IllegalStateException("Hey, this shouldn't happen, " + 
                                      "I checked on the client, but " +
                                      "it's always good to double check.");
    }
    return "42. Its the real question that you seek now.";
  }
   
  public boolean validate(String q) {
    ValidationUtility util = new ValidationUtility();
    return util.isValid(q);
  }
}
Seam コンポーネント名は GWT クライアントインターフェースの完全修飾名と一致しなければなりません (上記参照)。 一致しないと、クライアントが GWT 呼び出しを行っても Seam Resource Servlet はそれを見つけることができません。 GWT がアクセスできるようにするメソッドには @WebRemote アノテーションを付与する必要があります。