12.3.2. JAX-WS Web サービスエンドポイントの書き込みとデプロイ
本トピックでは、シンプルな JAX-WS サービスエンドポイントの開発について説明します。JAX-WS サービスエンドポイントは、JAX-WS クライアントからの要求に応答し、WSDL 定義を自らに大して公開するサーバー側のコンポーネントです。JAX-WS サービスエンドポイントについての詳しい情報は、「JAX-WS の共通 API リファレンス」 および JBoss Enterprise Application Platform 6 に同梱されている Javadoc 形式の API ドキュメントバンドルを参照してください。
Web サービスは、http://www.jcp.org/en/jsr/summary?id=181 に記載の JAX-WS API および Web サービスメタデータの仕様要件を満たしている必要があります。有効な実装は以下の要件を満たします:
javax.jws.WebServiceアノテーションが含まれます。- メソッドのパラメーターおよび戻り値の型はすべて JAXB 2.0 の仕様 JSR-222 との互換性があります。詳しくは http://www.jcp.org/en/jsr/summary?id=222 を参照してください。
例12.11 サービス実装の例
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);
}
}
例12.12 XML ペイロードの例
ProfileMgmtBean Bean によって使用される DiscountRequest クラスの例は以下のとおりです。アノテーションは詳細のために含まれています。通常、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( (1)
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 エンドポイントは自動的に作成されます。
例12.13 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