9.16.3. WebServiceRef

WebServiceRef アノテーションは Web サービスに対する参照の宣言に使用されます。 JSR-250 にある javax.annotation.Resource で範例されるリソースパターンに従います。
WebServiceRef アノテーションには 2 通りの使い方があります。
  1. タイプが生成されたサービスクラスである参照を定義します。 この場合、 タイプと値要素はいずれも生成されたサービスクラス型を参照します。 さらに、 その参照タイプがアノテーションが適用されるフィールド/メソッド宣言で推測できる場合、 タイプおよび値要素はデフォルトの値 (Object.class) とすることもできます。 タイプが推測できない場合は、 最低でもタイプ要素がデフォルト以外の値でなければなりません。
  2. タイプが SEI の参照を定義します。 この場合、 その参照タイプがアノテーションが付けられたフィールド/メソッド宣言から推測できればタイプ要素はデフォルトでも構いませんが、 値要素は常に存在しなければならず、生成されたサービスクラスタイプ (javax.xml.ws.Service のサブタイプ)を参照しなければなりません。 wsdlLocation 要素が存在する場合、 参照され生成されたサービスクラスの WebService アノテーションに指定された theWSDL の場所情報よりも優先されます。
public class EJB3Client implements EJB3Remote
{
   @WebServiceRef
   public TestEndpointService service4;
   
   @WebServiceRef
   public TestEndpoint port3;
}
WebServiceRef のカスタマイズ

JBoss Enterprise Application Platform 5.0 は WebServiceRef アノテーションへのオーバーライドや拡張を多数提供します。以下のようなものが含まれます。

  • コンテナ管理ポートを解決するために使用されるべきポートの定義
  • Stub オブジェクトに対するデフォルトの Stub プロパティ設定の定義
  • 最終的に使用される WSDL ドキュメントの URL 定義
例:
<service-ref>
   <service-ref-name>OrganizationService</service-ref-name>
   <wsdl-override>file:/wsdlRepository/organization-service.wsdl</wsdl-override>
</service-ref>
.. 
<service-ref>
   <service-ref-name>OrganizationService</service-ref-name>
   <config-name>Secure Client Config</config-name>
   <config-file>META-INF/jbossws-client-config.xml</config-file>
   <handler-chain>META-INF/jbossws-client-handlers.xml</handler-chain>
</service-ref>
  
<service-ref>
   <service-ref-name>SecureService</service-ref-name>
   <service-class-name>org.jboss.tests.ws.jaxws.webserviceref.SecureEndpointService</service-class-name>
   <service-qname>{http://org.jboss.ws/wsref}SecureEndpointService</service-qname>
   <port-info>
      <service-endpoint-interface>org.jboss.tests.ws.jaxws.webserviceref.SecureEndpoint</service-endpoint-interface>
      <port-qname>{http://org.jboss.ws/wsref}SecureEndpointPort</port-qname>
      <stub-property>
         <name>javax.xml.ws.security.auth.username</name>
         <value>kermit</value>
      </stub-property>
      <stub-property>
         <name>javax.xml.ws.security.auth.password</name>
         <value>thefrog</value>
      </stub-property>
   </port-info>
</service-ref>