2017-02-07 17 views
0

Я пытаюсь создать код клиента веб-сервиса 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 все еще создает под своим собственным структура каталога и мое сопоставление пространства имен игнорируются.

В каком месте я ошибаюсь?

+0

ли вы имеете в виду, что ось генерирует классы с неправильным Именование пакетов или только в неправильном каталоге? – Andremoniy

+0

@Andremoniy Оба. Они находятся в каталоге org/w3 и т. Д., И пакет имеет эквивалент по отношению к этой структуре. – ManoDestra

+0

Я знаю, это звучит глупо, но вы пытались удалить ранее сгенерированный исходный код перед запуском сборки? – Andremoniy

ответ

0

Мне, наконец, удалось заставить его работать. Я заглянул внутрь содержимого сгенерированных исходных файлов и обнаружил, что он описывает фактическое пространство имен, из которого был сгенерирован файл. Итак, я просто добавил пространство имен THAT (http://www.w3.org/2004/06/xmlmime) к моему сопоставлению, и теперь он отлично работает.

Таким образом, конечные отображения эксплуатационных пространств имен:

<property name="srv.mappings" value="http://www.elster-eis.com/ImportExport=${srv.pkg},http://www.w3.org/2004/06/xmlmime=${srv.pkg}.xmlmime,http://schemas.xmlsoap.org/soap/encoding/=${srv.pkg}.soapenc" /> 

После этого, что, генерируемый источник теперь показывает это в его заголовке:

/* 
* An XML attribute type. 
* Localname: contentType 
* Namespace: http://www.w3.org/2004/06/xmlmime 
* Java type: com.csa.webservice.mas.xmlmime.ContentTypeAttribute 
* 
* Automatically generated - do not modify. 
*/ 
package com.csa.webservice.mas.xmlmime;