23.3. Web サービスの例


ここで例示するコードは seamBay サンプルアプリケーションからのコードです。これは Seam の /examples ディレクトリにあり、前項で述べた推奨される方法に添っています。 まず、 Web サービスのクラスとその Web サービスのメソッドから見てみましょう。
@Stateless
@WebService(name = "AuctionService", serviceName = "AuctionService")
public class AuctionService implements AuctionServiceRemote
{
  @WebMethod
  public boolean login(String username, String password)
  {
    Identity.instance().setUsername(username);
    Identity.instance().setPassword(password);
    Identity.instance().login();
    return Identity.instance().isLoggedIn();
  }

  // snip
}
Copy to Clipboard Toggle word wrap
この Web サービスは JSR-181 で定義されている通り、 javax.jws パッケージの JWS アノテーションが付与されたステートレスセッション Bean です。@WebService アノテーションがコンテナにこのクラスが Web サービスを実装することを伝えます。login() メソッドにある @WebService アノテーションはメソッドを Web サービスメソッドとして識別します。 @WebService アノテーションの nameserviceName の属性はオプションです。
Web サービスがステートレスセッション Bean である場合は、 Web サービスメソッドとして公開される各メソッドも Web サービスクラスのリモートインターフェース内で宣言される必要があります。 上記の例では、 AuctionServiceRemote インターフェースが @WebMethod でアノテーションが付与されているため、 login() メソッドを宣言しなければなりません。
上記の例にあるように、 Web サービスは Seam の組み込みの Identity コンポーネントに委譲する login() メソッドを実装します。 推奨方法で提示しているように、 Web サービスは単にファサードとして記述されています。 実際の作業は Seam コンポーネント内で行われます。 つまり、 Web サービスと他のクライアント間でビジネスロジックは効率的に再利用されるということです。
次の例では、 この Web サービスメソッドは AuctionAction.createAuction() メソッドに委譲することで新しい対話を開始しています。
@WebMethod
public void createAuction(String title, String description, int categoryId)
{
  AuctionAction action = 
    (AuctionAction) Component.getInstance(AuctionAction.class, true);
  action.createAuction();
  action.setDetails(title, description, categoryId);
}
Copy to Clipboard Toggle word wrap
以下は、 AuctionAction からのコードです。
@Begin
public void createAuction()
{
  auction = new Auction();
  auction.setAccount(authenticatedAccount);
  auction.setStatus(Auction.STATUS_UNLISTED);        
  durationDays = DEFAULT_AUCTION_DURATION;
}
Copy to Clipboard Toggle word wrap
ここでは、ファサードとして動作し実際の作業を対話型 Seam コンポーネントに委譲することで、Web サービスが長期実行の対話に参加する方法を示しています。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat