Все мои методы веб-службы доступны независимо от того, @WebMethod - PullRequest
0 голосов
/ 29 мая 2019

Я создал сессионный компонент (3.x) и поместил его в EAR.Ниже приведен код сеанса:

import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService()
public class MESinvokeBean implements MESinvoke {

     @WebMethod()
     public void MESInvoke1()
     {System.out.println("1");}

     public void MESInvoke2()
     {System.out.println("2");}

     public void MESInvoke3()
     {System.out.println("3");}

}

Ниже приведен класс MESinvoke:

@Remote
public interface MESinvoke {

}

После того, как я развернул его на сервере wildfly.Я тестирую с использованием SOAP Ui, и все три метода доступны, несмотря на то, что я добавляю аннотацию @WebMethod только к одному методу.Может кто-нибудь сказать мне, что не так?Thx

1 Ответ

0 голосов
/ 02 июня 2019

Это поведение, определенное спецификацией JAX-WS.В разделе «API Java для веб-служб на основе XML (JAX-WS) 2.3», §3.3:

Класс Java (не интерфейс), аннотированный с помощью javax.jws.WebService аннотации, может бытьиспользуется для определения веб-службы.

Чтобы обеспечить разделение между интерфейсом веб-службы и реализацией, если аннотация WebService в рассматриваемом классе имеет элемент endpointInterface, то интерфейс, на который ссылается этот элемент, является для всех целей SEI, связанным сучебный класс.

В противном случае класс неявно определяет интерфейс конечной точки службы (SEI), который включает в себя все общедоступные нестатические или не финальные методы, которые удовлетворяют одному из следующих условий :

  1. Они аннотируются с помощью аннотации javax.jws.WebMethod с элементом exclude, установленным в значение false или отсутствует (поскольку для этого элемента аннотации по умолчанию используется значение false).
  2. Они не помечены аннотацией javax.jws.WebMethod, но их декларирующий класс имеет аннотацию javax.jws.WebService .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...