3.2. Jakarta XML Web Services Web Service エンドポイント


3.2.1. Jakarta XML Web Services Web Service エンドポイントについて

Jakarta XML Web Services Web サービスエンドポイントは、Web サービスのサーバーコンポーネントです。クライアントおよび他の Web サービスは、Simple Object Access Protocol (SOAP) と呼ばれる XML 言語を使用して HTTP プロトコルを介して通信します。エンドポイント自体は JBoss EAP コンテナーにデプロイされます。

WSDL 記述子は、以下のいずれかの方法で作成できます。

  • WSDL 記述子の手動書き込み
  • WSDL 記述子を自動的に作成する Jakarta XML Web Services アノテーションの使用。これは、WSDL 記述子を作成するための最も一般的な方法です。

エンドポイント実装 Bean には、Jakarta XML Web Services アノテーションが付けられ、サーバーにデプロイされます。サーバーは、クライアント消費のために、抽象的なコントラクトを自動的に生成し、パブリッシュします。マーシャリングおよびアンマーシャリングはすべて Jakarta XML Binding サービスに委譲されます。

エンドポイント自体は Plain Old Java Object (POJO) または Jakarta EE Web アプリケーションである場合があります。Jakarta Enterprise Beans 3 ステートレスセッション Bean を使用してエンドポイントを公開することもできます。Web アーカイブ (WAR) ファイルにパッケージ化されます。エンドポイントをパッケージ化するための仕様は、Jakarta Web Services Metadata Specification 2.1 で定義されています。

例: POJO エンドポイント

@WebService
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class JSEBean {
    @WebMethod
    public String echo(String input) {
        ...
    }
}

例: Web サービスエンドポイント

<web-app ...>
  <servlet>
    <servlet-name>TestService</servlet-name>
    <servlet-class>org.jboss.quickstarts.ws.jaxws.samples.jsr181pojo.JSEBean01</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TestService</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>
</web-app>

以下の Jakarta Enterprise Beans 3 ステートレスセッション Bean は、リモートインターフェイスとエンドポイント操作で同じメソッドを公開します。

@Stateless
@Remote(EJB3RemoteInterface.class)

@WebService

@SOAPBinding(style = SOAPBinding.Style.RPC)
public class EJB3Bean implements EJB3RemoteInterface {
    @WebMethod
    public String echo(String input) {
        ...
    }
}

サービスエンドポイントインターフェイス

Jakarta XML Web Services サービスは通常、Java サービスエンドポイントインターフェイス (SEI) を実装します。これは、直接またはアノテーションを使用して WSDL ポートタイプからマップされる場合があります。この SEI は、Java オブジェクトとその XML 表現の詳細を隠す高度な抽象化を提供します。

エンドポイントプロバイダーインターフェイス

場合によっては、Jakarta XML Web Services サービスに XML メッセージレベルで操作する機能が必要になる場合があります。エンドポイント Provider インターフェイスは、この機能を実装する Web サービスにこの機能を提供します。

エンドポイントの使用およびアクセス

Web サービスをデプロイしたら、WSDL を消費してアプリケーションの基盤となるコンポーネントのスタブを作成できます。その後、アプリケーションはエンドポイントにアクセスしてその作業を実行できます。

3.2.2. Jakarta XML Web Services Web Service エンドポイントの開発およびデプロイ

Jakarta XML Web Services サービスのエンドポイントは、Jakarta XML Web Services クライアントからリクエストに応答し、それ自体の WSDL 定義を公開するするサーバー側のコンポーネントです。

Jakarta XML Web Services エンドポイントアプリケーションの開発方法の実例は、JBoss EAP に同梱される以下のクイックスタートを参照してください。

  • jaxws-addressing
  • jaxws-ejb
  • jaxws-pojo
  • jaxws-retail
  • wsat-simple
  • wsba-coordinator-completion-simple
  • wsba-participant-completion-simple

開発要件

Web サービスは、Jakarta XML Web Services API および Jakarta Web Services Metadata Specification 2.1 仕様の要件を満たす必要があります。

  • これには javax.jws.WebService アノテーションが含まれます。
  • すべてのメソッドパラメーターおよび戻り値タイプは、Jakarta XML Binding 2.3 仕様 と互換性があります。

これらの要件を満たす Web サービス実装の例を以下に示します。

例: Web サービス実装

package org.jboss.quickstarts.ws.jaxws.samples.retail.profile;

import javax.ejb.Stateless;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.soap.SOAPBinding;

@Stateless

@WebService(
    name = "ProfileMgmt",
    targetNamespace = "http://org.jboss.ws/samples/retail/profile",
    serviceName = "ProfileMgmtService")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public class ProfileMgmtBean {
    @WebMethod
    public DiscountResponse getCustomerDiscount(DiscountRequest request) {
        DiscountResponse dResponse = new DiscountResponse();
        dResponse.setCustomer(request.getCustomer());
        dResponse.setDiscount(10.00);
        return dResponse;
    }
}

以下は、ProfileMgmtBean bean によって DiscountRequest の例です。アノテーションは詳細度のために含まれています。通常、Jakarta XML Binding のデフォルト値は妥当であり、指定する必要はありません。

例: DiscountRequest クラス

package org.jboss.test.ws.jaxws.samples.retail.profile;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;

import org.jboss.test.ws.jaxws.samples.retail.Customer;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(
  name = "discountRequest",
  namespace="http://org.jboss.ws/samples/retail/profile",
  propOrder = { "customer" }
)
public class DiscountRequest {

   protected Customer customer;

   public DiscountRequest() {
   }

   public DiscountRequest(Customer customer) {
      this.customer = customer;
   }

   public Customer getCustomer() {
      return customer;
   }

   public void setCustomer(Customer value) {
      this.customer = value;
   }

}

デプロイメントのパッケージ化

実装クラスは JAR デプロイメントでラップされます。デプロイメントに必要なメタデータは、実装クラスとサービスエンドポイントインターフェイス上のアノテーションから取得されます。管理 CLI または管理コンソールを使用して JAR をデプロイでき、HTTP エンドポイントが自動的に作成されます。

以下のリストは、Jakarta Enterprise Beans Web サービスの JAR デプロイメントの構造例を示しています。

$ jar -tf jaxws-samples-retail.jar
org/jboss/test/ws/jaxws/samples/retail/profile/DiscountRequest.class
org/jboss/test/ws/jaxws/samples/retail/profile/DiscountResponse.class
org/jboss/test/ws/jaxws/samples/retail/profile/ObjectFactory.class
org/jboss/test/ws/jaxws/samples/retail/profile/ProfileMgmt.class
org/jboss/test/ws/jaxws/samples/retail/profile/ProfileMgmtBean.class
org/jboss/test/ws/jaxws/samples/retail/profile/ProfileMgmtService.class
org/jboss/test/ws/jaxws/samples/retail/profile/package-info.class
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る