2009-06-01 12 views
2

인터페이스에서 정의 된 enum을 가진 WCF에서 구현 된 웹 서비스를 사용하고 있습니다. Java Java 클라이언트에서 호출하려고합니다. 저는 Eclipse를 사용하여 BlackBerry 용 Java 응용 프로그램을 개발하고 있습니다. 웹 서비스가 상당히 크기 때문에 (이미 Windows Mobile 클라이언트에서 사용 중) 스텁 코드를 생성하기 위해 Sun Java Wireless Toolkit (WTK) 2.5.2를 사용하고 있습니다.열거 형용 WTK 스텁 생성기에서 java.io.ObjectStreamException이 사용되는 이유는 무엇입니까?

WTK를 사용하여 스텁 코드를 생성하려고하면 Eclipse에서 열거 형에 대한 오류가 발생합니다. 다음 함수에서 java.io.ObjectStreamException을 유형으로 해석 할 수 없다는 오류가 발생합니다.

private Object readResolve() 
    throws java.io.ObjectStreamException { 
    return fromValue(getValue()); 
} 

스텁 생성기를 실행하는 경우 CLDC 1.0 또는 CLDC 1.1 용 스위치가 있습니다. 두 옵션을 모두 사용하면 동일한 문제가 발생합니다.

썬에서 응답없이 forum post을 찾았습니다. 이 게시물의 사용자는 "이제 java.io.ObjectStreamException은 CLDC에 없지만 CDC에 있습니다 .J2ME (특히 CLDC 1.0/1.1) 용 웹 서비스 용 스텁을 만드는 데 유용한 도구가 있습니까?" 나는 [문서 3]을보고 CLDC 1.1에는 존재하지 않는다는 것을 확인했다.

이 상황을 해결하기 위해 Eclipse에서 사용할 수있는 두 가지 빠른 수정이 있습니다. 1) 'java.io'패키지에서 'ObjectStreamException'클래스를 생성하거나 2) 프로젝트 설정을 수정하십시오 (참조를 추가하려고합니다).

업데이트 : JAX-RPC 부분적인 XML 열거에 대한 지원을 제공하지 않습니다

다음

JSR-172 규격의 말씀입니다 ...

5.2.5 열거 .

5.2.6 제한에서 파생 된 단순 유형 JAX-RPC 하위 집합은 제한을 통해 단순 유형을 파생시키는 지원을 제공하지 않습니다.

WCF 열거 형의 WSDL은 <xs:enumeration>을 포함하는 <xs:restriction><xs:simpleType>을 생성합니다. 그래서 나는이 필드가 대신 int이고 상수를 정의한다고 말합니까?

이것은 WTK의 버그입니까? 그럴 경우 Sun에 버그 리포트를 제출하고 응답하는지 확인합니다. 왜 툴킷이 이것을 오류로 표시하지 않습니까?

이제 JSR-172 규격을 준수하도록 인터페이스를 변경해야합니다. WSDL을 읽고 준수 문제를 지적하는 도구가 있습니까?

답변

2

CLDC와 Wireless Toolkit은 모두 Java Micro Edition을 사용합니다. JavaME은 Java 언어의 버전 2를 기반으로하므로 제네릭이없고 열거 형을 의미하지 않습니다.

블랙 베리 핸드셋에 대한 웹 서비스를 조사하는 첫 번째 단계는 JSR-172 사양을 읽는 것입니다.

+0

여기에 JSR-172 사양이 나와 있습니다 ... 5.2.5 열거 형 JAX-RPC 하위 집합은 XML 열거 형을 지원하지 않습니다. 5.2.6 제한에서 파생 된 단순 유형 JAX-RPC 하위 집합은 제한을 통해 단순 유형을 파생시키는 지원을 제공하지 않습니다. WCF 열거 형의 WSDL은 을 포함하는 을 생성합니다. 음 ...그게 효과가없는 것처럼 보입니다. – chrish