1 /*
   2  * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 package javax.xml.ws;
  27 
  28 import java.lang.annotation.Documented;
  29 import java.lang.annotation.Target;
  30 import java.lang.annotation.Retention;
  31 import static java.lang.annotation.ElementType.*;
  32 import static java.lang.annotation.RetentionPolicy.*;
  33 
  34 /**
  35  * The {@code WebServiceRefs} annotation allows
  36  * multiple web service references to be declared at the
  37  * class level.
  38  *
  39  * <p>
  40  * It can be used to inject both service and proxy
  41  * instances. These injected references are not thread safe.
  42  * If the references are accessed by multiple threads,
  43  * usual synchronization techniques can be used to
  44  * support multiple threads.
  45  *
  46  * <p>
  47  * There is no way to associate web service features with
  48  * the injected instances. If an instance needs to be
  49  * configured with web service features, use @WebServiceRef
  50  * to inject the resource along with its features.
  51  *
  52  * <p>
  53  * <b>Example</b>: The {@code StockQuoteProvider}
  54  * proxy instance, and the {@code StockQuoteService} service
  55  * instance are injected using @WebServiceRefs.
  56  *
  57  * <pre><code>
  58  *    {@literal @}WebServiceRefs({{@literal @}WebServiceRef(name="service/stockquoteservice", value=StockQuoteService.class),
  59  *                     {@literal @}WebServiceRef(name="service/stockquoteprovider", type=StockQuoteProvider.class, value=StockQuoteService.class})
  60  *    public class MyClient {
  61  *        void init() {
  62  *            Context ic = new InitialContext();
  63  *            StockQuoteService service = (StockQuoteService) ic.lookup("java:comp/env/service/stockquoteservice");
  64  *            StockQuoteProvider port = (StockQuoteProvider) ic.lookup("java:comp/env/service/stockquoteprovider");
  65  *            ...
  66  *       }
  67  *       ...
  68  *    }
  69  * </code></pre>
  70  *
  71  * @see WebServiceRef
  72  * @since 1.6, JAX-WS 2.0
  73  */
  74 
  75 @Documented
  76 @Retention(RUNTIME)
  77 @Target(TYPE)
  78 public @interface WebServiceRefs {
  79    /**
  80     * Array used for multiple web service reference declarations.
  81     */
  82    WebServiceRef[] value();
  83 }