2013-04-15 5 views
2

Я пытаюсь создать клиентский проект из файла WSDL с помощью Axis 1.4 (у меня нет других вариантов, даже не могу использовать Axis 2) и получения следующих ошибка. Может ли кто-нибудь предложить мне, как я могу это решить? Файл WSDL предоставляется поставщиком.org.apache.axis.wsdl.toJava.DuplicateFileException: Дублируемое имя файла:

org.apache.axis.wsdl.toJava.DuplicateFileException: Duplicate file name: C:\Documents and Settings\My Documents\CalculateTax\com\NewProj\CompanyCodeType.java. 
Hint: you may have mapped two namespaces with elements of the same name to the same package name. 
    at org.apache.axis.wsdl.toJava.JavaWriter.generate(JavaWriter.java:110) 
    at org.apache.axis.wsdl.toJava.JavaBeanWriter.generate(JavaBeanWriter.java:1405) 
    at org.apache.axis.wsdl.toJava.JavaTypeWriter.generate(JavaTypeWriter.java:113) 
    at org.apache.axis.wsdl.toJava.JavaGeneratorFactory$Writers.generate(JavaGeneratorFactory.java:421) 
    at org.apache.axis.wsdl.gen.Parser.generateTypes(Parser.java:547) 
    at org.apache.axis.wsdl.gen.Parser.generate(Parser.java:432) 
    at org.apache.axis.wsdl.gen.Parser.access$000(Parser.java:45) 
    at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:362) 
    at java.lang.Thread.run(Unknown Source) 
+0

Возможно, вы столкнулись с этой ошибкой (https://issues.apache.org/jira/browse/AXIS-2377). – Cebence

+0

Спасибо за ваш ответ! Есть ли способ исправить это? Я имею в виду, изменив код WSDL? Можно ли исправить ошибку Axis 1.4 с помощью кода Axis 2 (я думал, что они исправили эту ошибку в Axis 2). Пожалуйста, дайте мне несколько материалов. Я застрял здесь, и у меня нет других вариантов. Я должен использовать Axis 1.4 для генерации кода клиента. Спасибо за ваше любезноесотрудничество. –

+0

Вы должны проверить WSDL и посмотреть, может ли проблема быть указана на определенную строку. Внедрение кода Axis 2 в более старую версию, скорее всего, не сработает. Вы можете попробовать использовать последнюю версию 1.x для генерации кода, она должна быть достаточно совместимой. – Cebence

ответ

2

вы не должны использовать ось 2.

Например, если у вас есть часть WSDL, как это:

... 
    <xs:complexType name="Address"> 
    <xs:sequence> 
     <xs:element name="Country" type="xs:string"/> 
     <xs:element name="City" type="xs:string"/> 
     <xs:element name="Town" type="xs:string"/> 
    </xs:sequence> 
    </xs:complexType> 
    <xs:complexType name="address"> 
    <xs:sequence> 
     <xs:element name="leftSideOfAt" type="xs:string"/> 
     <xs:element name="domain" type="xs:string"/> 
    </xs:sequence> 
    </xs:complexType> 
    <xs:element name="OwnerAddress" type="tns:Address" /> 
    <xs:element name="EmailAddress" type="tns:address" /> 
    <xs:element name="CompanyEmailAddress" type="tns:address" /> 
    ... 

Это юридическое определение WSDL, но ось является не смогли. Вы можете исправить эту проблему при переименовании complexTypes. Для примера выше:

... 
    <xs:complexType name="Address"> 
    <xs:sequence> 
     <xs:element name="Country" type="xs:string"/> 
     <xs:element name="City" type="xs:string"/> 
     <xs:element name="Town" type="xs:string"/> 
    </xs:sequence> 
    </xs:complexType> 
    <xs:complexType name="Email"> 
    <xs:sequence> 
     <xs:element name="leftSideOfAt" type="xs:string"/> 
     <xs:element name="domain" type="xs:string"/> 
    </xs:sequence> 
    </xs:complexType> 
    <xs:element name="OwnerAddress" type="tns:Address" /> 
    <xs:element name="EmailAddress" type="tns:Email" /> 
    <xs:element name="CompanyEmailAddress" type="tns:Email" /> 
    ... 

Дело в том, когда вы пишете имя ComplexType как «PascalCase», он конфликтует с другим!

3

Ось Описание 1.4 ошибка является (https://issues.apache.org/jira/browse/AXIS-2606)

Hint: you may have mapped two namespaces with elements of the same name to the same package name. 

Таким образом, вы можете решить эту проблему, оставляя необязательный параметр

-p, --package <argument> 
    override all namespace to package mappings, use this package 
    name instead 

... и он будет генерировать классы WSDL без ошибок , Вы можете реорганизовать их позже, если это необходимо.

0

Проблема возникает, когда вы пытаетесь создать java-клиент, используя wsdl с одинаковыми именами элементов. Измените имена элементов и попробуйте. В противном случае вы можете использовать инструмент eclipse для генерации java-клиента. Он будет автоматически определять те же имена элементов и создавать отдельные пакеты для них. Чтобы создать java-клиент с помощью Eclipse: щелкните правой кнопкой мыши файл wsdl> Веб-службы> Создать клиент. Это должно помочь вам.

Смежные вопросы