2013-04-08 1 views
0

내 웹 서비스와 함께 사용되는 스키마가 내 작업 영역의 스키마와 일치하지 않는 이상한 문제가 발생했습니다.배치 된 웹 서비스 스키마가 작업 영역의 내용과 일치하지 않습니다.

  <xsd:element name="checkFooBars" minOccurs="1" nillable="false"> 
       <xsd:simpleType> 
        <xsd:restriction base="xsd:string"> 
         <xsd:enumeration value="Y"/> 
         <xsd:enumeration value="N"/> 
        </xsd:restriction> 
       </xsd:simpleType> 
      </xsd:element> 

(이 URL을 통해 : www.myapplication.com/MyApplicationHttpRouter/MyService/MyService_schema1.xsd) 응용 프로그램에서 액세스의 스키마 같은 요소 : 다음과 같다 :

<xs:element name="checkFooBars" type="xs:string" /> 

이 일으키는 문제가 내 작업 공간에서 요소는이 정의가 여기서 서비스 사용자는 온라인 스키마를보고 요소에 대한 제한 사항을 볼 수 없습니다.

여기에서 무슨 일이 일어나고 있는지 또는 그 이유를 아는 사람이 있습니까?

+0

정확한 답변을 알 수 없지만 WAS가 배포 된 XSD 이외의 스키마를 선택하는 것으로 보입니다. 내 생각 엔, 다른 것을 모른 채로 WAS가 주석 된 Java 클래스를 사용하여 해당 스키마를 작성한다는 것입니다. 서비스 클래스의 주석이이 제한 사항을 포착합니까? –

답변

0

WSDL에서 Java Bean 뼈대를 생성 할 때 WSDL 파일을 복사하는 것이 누락되었습니다. "Copy to WSDL to project"라는 체크 박스가 있습니다. 나는 체크 박스를 설정하고 Java 코드를 재생성했다. WSDL은 EJB 프로젝트의 META-INF에 복사되고 서비스 구현에는 META-INF/myService.WSDL으로 설정된 MyServiceSOAPImpl.java의 @WebService 주석의 wsdlLocation 속성이 있습니다. 나는 폴더 구조가 마음에 들지 않았으므로 META-INF/wsdl/MyService/myService.WSDL으로 변경했다. (그리고 MyServiceSOAPImpl.java에서 Java 참조를 업데이트했다.) RAD 7에서는 대상 디렉토리를 지정할 방법이 없지만 RAD 8.5에는이 디렉토리가있다.

WSDL을 제공하지 않으면 실시간으로 WSDL이 생성됩니다. 생성 된 코드는 주석에 제한이 있었지만 코드에서 구현되지 않았으므로 런타임 생성 된 WSDL과 스키마에는 요소가없는 간단한 문자열로 제한이 없는데, 이는 Java가 올바르지 않은 것 (하지만 이것은 알려진 문제 일 수 있습니다).

+0

우리가 웹 서비스에서 제한적인 스키마를 시도한 이후 오랜 시간이 걸렸지 만, 우리가 마지막으로 시도한 시간에 모든 기본 툴링이이를 시행하지 않는다는 것을 발견했습니다. 우리는 스스로를하기 위해 뒤로 굽혀 보았지만, 결국 이것이 나쁜 생각이라는 일반적인 철학처럼 보였습니다. 따라서 툴링이 기본적으로 그렇게하지 않으면 놀랄 일이 아닙니다. – dbreaux