Red Hat Training
A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform
16.4.2. JAX-WSWeb サービスエンドポイントの作成とデプロイ
はじめに
このトピックでは、サーバー側コンポーネントである単純な JAX-WS サービスエンドポイントの開発について説明します。これは、JAX-WS クライアントからの要求に応答し、それ自体の WSDL 定義を公開します。JAX-WS サービスエンドポイントの詳細については、以下を参照してください。「JAX-WS Common API Reference」JBoss EAP 6 とともに配布される Javadoc 形式の API ドキュメントバンドル。
開発要件
Web サービスは、JAXWS API と Web Services メタデータ仕様の要件に http://www.jcp.org/en/jsr/summary?id=181 対応します。有効な実装は、以下の要件を満たしている必要があります。
- それは含まれています
javax.jws.WebService
注釈。 - すべてのメソッドパラメーターとリターンタイプは、JAXB2.0 仕様の JSR-222 と互換性があります。詳細は、http://www.jcp.org/en/jsr/summary?id=222 を参照してください。
例16.13 サービス実装の例
package org.jboss.test.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) { return new DiscountResponse(request.getCustomer(), 10.00); } }
例16.14 XML ペイロードの例
以下は、
DiscountRequest
によって使用されるクラスProfileMgmtBean
前の例の Bean。アノテーションは詳細度のために含まれています。通常、これは JAXB デフォルトは妥当な設定であり、指定する必要はありません。
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; } }
より複雑なマッピングが可能です。詳細は、の JAXB API 仕様 https://jaxb.java.net/ を参照してください。
デプロイメントをパッケージ化する
実装クラスは JAR
デプロイメントでラップされます。デプロイメントに必要なメタデータは、実装クラスとサービスエンドポイントインターフェース上のアノテーションから取得されます。管理 CLI または管理インターフェイスを使用して JAR をデプロイすると、HTTP エンドポイントが自動的に作成されます。
次のリストは、EJBWeb サービスの JAR デプロイメントの正しい構造の例を示しています。
例16.15 Web サービスデプロイメントの JAR 構造の例
[user@host ~]$ 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