2010-07-24 3 views
3

wsdl에는 2 가지 유형, 동일한 이름, 다른 경우 인 LoginResponse 및 LOGINRESPONSE가 있습니다.wsdl 자바 클래스의 케이스 감도

xfire를 사용하여 Java 클래스를 생성하는 경우 LOGINRESPONSE를 삭제하는 LoginResponse 인 클래스 하나만 생성합니다.

어떻게이 문제를 해결할 수 있습니까? WSDL에서 선언

<s:element name="LoginResponse"> 
    <s:complexType> 
     <s:sequence> 
     <s:element minOccurs="0" maxOccurs="1" name="LoginResult" type="tns:LOGINRESPONSE" /> 
     </s:sequence> 
    </s:complexType> 
    </s:element> 

    <s:complexType name="LOGINRESPONSE"> 
    <s:attribute name="Message" type="s:string" /> 
    <s:attribute name="Token" type="s:string" /> 
    <s:attribute name="DataFormat" type="s:string" /> 
    <s:attribute name="Header" type="s:boolean" use="required" /> 
    <s:attribute name="Suffix" type="s:boolean" use="required" /> 
    </s:complexType> 
+0

"xfire"에서 약간의 결함이있을 수 있습니다. 하지만 완전히 다른 이름을 사용하면 같은 것을 피할 수 있습니다. – YoK

답변

1

이름은 참으로 대소 문자를 구분하고, 자신의 경우 만 다른 이름을 사용하는 법적입니다. 그러나, 그것은 나쁜 생각이어야합니다 :

  • 확실하게, 그것은 가독성의 관점에서 나쁜 아이디어입니다. (당신이 자바 프로그램을 작성한다면 내 말은, 같은 네임 스페이스에 변수 acataCat를 선언하지 않을 것입니다.겠습니까 당신이?)

  • 를 WSDL은 대소 문자를 구분하지만, 프로그래밍 언어 바인딩에 대한 WSDL 이름을 맵핑해야합니다 대/소문자를 구분하지 않는 프로그램 식별자 (예 : Visual Basic)를 사용하거나 생성 된 식별자가 프로그래밍 언어의 스타일 규칙을 따르도록 코드를 변환 할 수 있습니다. 두 경우 모두 대소 문자 만 다른 WSDL 이름은 문제를 일으킬 수 있습니다.

IMO 가장 좋은 문제는 사용자 이름이 대소 문자 만 다른 요소, 유형 등이 없도록 WSDL을 변경하는 것입니다.

+1

wsdl이 (가) 제어 할 수 없습니다. 그러나 wsdl을 로컬 파일로 저장하고 수동으로 파일을 수정 한 다음 Java 클래스를 생성 할 수 있습니다. 이상적은 아니지만 지금은 충분합니다. – portoalet