Подтвердить что ты не робот

Когда мне когда-нибудь понадобится использовать @WebServiceRef?

На стороне клиента, если я хочу получить доступ к веб-службе, я бы просто создал прокси-сервер для него, используя wsimport. Это моя ссылка на веб-службу.

Где же вступает в игру аннотация @WebServiceRef? Он предназначен для использования только на стороне сервера, для получения введённых ссылок на веб-службы, размещенные в одной и той же среде?

4b9b3361

Ответ 1

Не обязательно, но это действительно зависит от реализации сервера. например Для доступа к удаленной службе требуется наличие доступа к сгенерированному клиенту и, возможно, к файлам документов и схем WSDL (по соглашению должно быть в WEB-INF/wsdl), так что

public class HelloServlet extends HttpServlet {

    @WebServiceRef(HelloMessengerService.class) // class with @WebServiceClient
    private HelloMessenger port; // the SEI

    ...
}

Класс HelloMessengerService является заглушкой и имеет аннотацию @WebServiceClient, которая имеет wsdlLocation (указывает на локальный удаленный документ WSDL).

Но у вас может быть что-то вроде этого

@WebServiceRef(wsdlLocation = "META-INF/wsdl/AnyService/Any.wsdl")
private HelloMessengerService service;

или

@WebServiceRef
public HelloMessengerService service;

Если вы используете цепочку обработчиков для изменения входящих и исходящих сообщений SOAP:

@WebServiceRef(HelloMessengerService.class)
@HandlerChain(file="handler-chain.xml")
private HelloMessenger port;

Использование аннотации @WebServiceRef должно применяться к клиентам, управляемым JAX-WS, например Servlet, EJB или другой веб-службе.

Ответ 2

Чтобы добавить к ответу Павла Варгаса, аннотация @WebServiceRef - это инструмент, позволяющий завершить эволюцию платформы Java EE до полностью управляемой среды. Подумайте об этом так:

Почти каждый компонент в стеке Java EE инъецируется некоторыми средствами: EJB, JSF, управляемый beans, CDI beans, @Resources и т.д. Почему бы не иметь возможность вводить ссылку на webservice? С возможностью ввода ссылки webservice с использованием этой аннотации следующие готовые цели для инъекций:

  • EJBs
  • Сервлеты (под Servlet 3.0)
  • Управляемый JSF Beans
  • CDI Beans
  • МБР