Допустим, у вас есть WSDL и вы хотите написать либо сам веб-сервис, либо клиента для сервиса. Для этого по WSDL нужно сгенерировать Java-классы с помощью утилиты
wsimport, входящую в состав JDK.
Стоит отметить, что сгенерированный код может использовать и на сервере, и на клиенте.
Создайте новую папку и положите в нее вашу WSDL и всё, что к ней относится (это может быть другие WSDL или XSD). Увидеть все, что импортирует ваша основная WSDL можно в теге
import. Например:
В данном примере следует заменить интернет адрес XSD на локальный:
Разумеется, файл example.xsd должен лежать c WSDL в одной директории.
Теперь напишем скрипт для генерирования классов. Рассмотрим сперва
Windows-версию скрипта, а потом
Linux-версию.
Скрипт для Windows
Создайте файл
w-gen.bat в любом текстовом редакторе и скопируйте в него следующий код:
cls
set GEN_DIR=kz
rmdir %GEN_DIR% /s/q
"%JAVA_HOME%/bin/wsimport" -keep -Xnocompile -p kz.kesh.blog.v1 myBlog.wsdl
pause
cls - очистка консоли
GEN_DIR - директория пакета верхнего уровня
rmdir - полное удаление директории
wsimport - утилита для генерации Java-классов из WSDL
keep - сохраняет сгенерированные файлы
Xnocompile - не компилирует сгенерированные Java-файлы
kz.kesh.blog.v1 - имя пакета, в котором будет сгенерированые классы
myBlog.wsdl - наша WSDL
pause - пауза, чтобы консольное окно сразу не закрылось
Данный скрипт генерирует *.java файлы, но вы можете немного переработать скрипт и генерировать скопилированные файлы *.class. Так же вы можете доработать упаковку файлов и WSDL в jar. Например:
"%JAVA_HOME%/bin/jar" cf keskBlog.jar kz
jar - стандартная утилита из JDK для создания jar-файлов
cf - создает новый архив с указанным именем
keskBlog.jar - имя вашего jar-файла
kz - директория, которая упаковывается в jar, она соответствует названию верхнего пакета
Скрипт для Linux
Создайте файл
w-gen.sh:
#!/bin/bash
GEN_DIR="kz"
rm -r $GEN_DIR
wsimport -keep -Xnocompile -p kz.kesh.blog.v1 myBlog.wsdl
Не забудьте дать скрипту права на выполенение:
chmod +x w-gen.sh
#!/bin/bash - обязательная строчка для bash-скриптов
GEN_DIR - директория пакета верхнего уровня
rm - рекурсивное удаление директории
wsimport - утилита для генерации Java-классов из WSDL
keep - сохраняет сгенерированные файлы
Xnocompile - не компилирует сгенерированные Java-файлы
kz.kesh.blog.v1 - имя пакета, в котором будет сгенерированы классы
myBlog.wsdl - наша WSDL
Рахмет! Пригодилось в работе 🙂
🙂