Q1. Каково правило описания расположения файлов wsdl для веб-сервисов как не сохраняющих состояние в ejb jar.
Если предоставляется через атрибут wsdllocation, кажется, что Metro читает WSDL с использованием загрузчика классов, что делает META-INF/wsdl
EJB JAR достойным выбором для размещения WSDL.
Я проверил на своей стороне следующий EJB:
@Stateless
@WebService(wsdlLocation = "META-INF/wsdl/HelloService.wsdl")
public class HelloService {
public String hello(String name) {
return "Hello, " + name + "!";
}
}
WSDL находится в src/main/resources/META-INF/wsdl/
в моем проекте EJB maven.
И доступ к http://localhost:8080/HelloServiceService/HelloService?wsdl показывает my WSDL (а не динамически генерируемый).
Итак, вопрос в том, пытались ли вы http://192.168.44.48:8181/ws.isp.SecurityService/SecurityService?wsdl?
Q2. Можно ли создать файл wsdl во время maven упаковки?
Цель jaxws-maven-plugin:wsgen
может сделать это (см. Параметр genWsdl
), но я должен признать, что теперь я полностью потерян.
При использовании подхода Java-first вы либо позволяете среде выполнения JAX-WS динамически генерировать WSDL во время развертывания ~, либо ~ вы предоставляете статическую версию и используете wsdlLocation
. Однако генерация WSDL и использование wsdlLocation
не имеет особого смысла в IMO. В чем смысл? Документация wsgen как-то подтверждает это:
По умолчанию wsgen не создает файл WSDL. Этот флаг является необязательным и заставляет wsgen генерировать файл WSDL и обычно используется только для того, чтобы разработчик мог посмотреть WSDL до развертывания конечной точки.
Q3. как создать файл wsdl для веб-службы, где у нас есть такие аннотации, как @Stateless и @EJB (в настоящее время я могу сгенерировать их только комментируя эти аннотации)
Я не понимаю вопроса и не понимаю, почему вы хотите сгенерировать WDSL (см. Выше).