Когда дело доходит до XSD, те хорошие люди, которые создали Spring-WS, рекомендуют контракт-первый. Их руководство объясняет, почему это так:
http://docs.spring.io/spring-ws/site/reference/html/why-contract-first.html
... что достаточно для меня.
Будь то динамически генерировать WSDL, не столько проблема. Однако в прошлом мне нужно было создать WSDL, который соответствует строгим корпоративным стандартам. Если это то, что вам нужно сделать, то вы должны придерживаться статичной. Кроме того, мне нужно было настроить WSDL, чтобы убедиться, что определение обслуживания хорошо играет с клиентами .NET. Опять же, единственный способ сделать это, если вы написали WSDL самостоятельно.
Конечно, если вы все еще учитесь на WSDL, вам может быть легче генерировать его изначально. Если вам нужно стать статичным позже, тогда можно взять копию сгенерированного WSDL в качестве отправной точки.