Я пытаюсь создать код клиента веб-сервиса Axis2 (v1.6.1) из нескольких файлов WSDL, чтобы у меня было несколько клиентов веб-служб в рамках одного проекта. Я использую Ant для генерации исходного кода, используя задачу codegen.Как создать исходный код Axis2 в пользовательском пакете
Поэтому мне нужно использовать собственное пространство имен для сопоставления пакетов, чтобы каждый код клиента веб-сервиса отличался от других, чтобы избежать столкновения.
Вот пространства имен из одного примера файла WSDL:
<wsdl:definitions targetNamespace="http://www.elster-eis.com/ImportExport"
xmlns:tns="http://www.elster-eis.com/ImportExport"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
мне удалось получить основную часть сгенерированного кода в соответствующие пакеты. И мне удалось получить пространство имен soapenc для создания в пользовательском пакете. Тем не менее, я не могу получить код, который генерируется в org\w3\www\_2004\_06\xmlmime
, в структуру каталога моего настраиваемого пакета.
Вот соответствующие части моего Ant файла сборки:
<property name="srv.pkg" value="com.company.webservice.mas" />
<property name="srv.mappings" value="http://www.elster-eis.com/ImportExport=${srv.pkg},http://www.w3.org/2001/XMLSchema=${srv.pkg}.xsd,http://schemas.xmlsoap.org/wsdl/soap/=${srv.pkg}.soap,http://microsoft.com/wsdl/mime/textMatching/=${srv.pkg}.tm,http://schemas.xmlsoap.org/soap/encoding/=${srv.pkg}.soapenc,http://schemas.xmlsoap.org/wsdl/mime/=${srv.pkg}.mime,http://schemas.xmlsoap.org/wsdl/soap12/=${srv.pkg}.soap12,http://schemas.xmlsoap.org/wsdl/http/=${srv.pkg}.http,http://schemas.xmlsoap.org/wsdl/=${srv.pkg}.wsdl" />
<target name="build.source" depends="define.tasks">
<codegen
wsdlfilename="${srv.wsdl}"
packageName="${srv.pkg}"
databindingName="xmlbeans"
output="."
generateAllClasses="true"
serverside="true"
generateservicexml="true"
testcase="true"
namespaceToPackages="${srv.mappings}"
/>
</target>
А вот пространство имен для упаковки отображения снова для удобства чтения (они все на одной строке, через запятую, без пробелов, в Ant построить файл):
http://www.elster-eis.com/ImportExport= $ {srv.pkg},
http://www.w3.org/2001/XMLSchema= $ {} srv.pkg .xsd,
http://schemas.xmlsoap.org/wsdl/soap/= $ {srv.pkg} .soap,
http://microsoft.com/wsdl/mime/textMatching/= $ {srv.pkg} .tm,
http://schemas.xmlsoap.org/soap/encoding/= $ {srv.pkg} .soapenc,
http://schemas.xmlsoap.org/wsdl/mime/= $ {srv.pkg } .mime,
http://schemas.xmlsoap.org/wsdl/soap12/= $ {} srv.pkg .soap12,
http://schemas.xmlsoap.org/wsdl/http/= $ {} srv.pkg .http,
http://schemas.xmlsoap.org/wsdl/= $ {srv.pkg} .wsdl»
Я пытаюсь получить все сгенерированный код для создания под моим $ {} srv.pkg структуры, но код org.w3 все еще создает под своим собственным структура каталога и мое сопоставление пространства имен игнорируются.
В каком месте я ошибаюсь?
ли вы имеете в виду, что ось генерирует классы с неправильным Именование пакетов или только в неправильном каталоге? – Andremoniy
@Andremoniy Оба. Они находятся в каталоге org/w3 и т. Д., И пакет имеет эквивалент по отношению к этой структуре. – ManoDestra
Я знаю, это звучит глупо, но вы пытались удалить ранее сгенерированный исходный код перед запуском сборки? – Andremoniy