2009-06-01 9 views
2

Ich verwende einen Web-Service, der in WCF implementiert ist und Enums in der Schnittstelle definiert. Ich versuche, dies von einem Java-BlackBerry-Client aus aufzurufen. Ich benutze Eclipse, um die Java-Anwendung für BlackBerry zu entwickeln. Ich verwende die Sun Java Wireless Toolkit (WTK) 2.5.2, um Stub-Code zu generieren, da der Webdienst ziemlich groß ist (bereits von einem Windows Mobile-Client verwendet).Warum wird java.io.ObjectStreamException im WTK-Stub-Generator für Aufzählungen verwendet?

Wenn ich versuche, Stub-Code mit dem WTK zu erzeugen, bekomme ich Fehler in Eclipse über die Enums. In der folgenden Funktion beschwert es sich, dass java.io.ObjectStreamException nicht in einen Typ aufgelöst werden kann.

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

Beim Betrieb des Stub-Generators gibt es einen Schalter für CLDC 1.0 oder CLDC 1.1. Das Generieren mit beiden Optionen führt zum gleichen Problem.

Ich habe eine forum post darüber bei Sun ohne Antwort gefunden. Die Person in diesem Post gibt Folgendes an: "Jetzt befindet sich java.io.ObjectStreamException nicht in CLDC, sondern in CDC. Gibt es ein gutes Tool zum Erstellen von Stubs für Web-Services für J2ME, insbesondere CLDC 1.0/1.1?" Ich habe überprüft, dass es in CLDC 1.1 nicht existiert, indem ich auf die [Dokumentation 3] schaue.

Es gibt zwei Schnellkorrekturen in Eclipse, um diese Situation zu beheben: 1) Erstellen Sie die Klasse 'ObjectStreamException' im Paket 'java.io' oder 2) Fix Projekt-Setup (das möchte ich eine Referenz hinzufügen).

Update:

Hier ist, was die JSR-172 Spezifikation sagt ...

5.2.5 Enumeration Die JAX-RPC-Subset bietet keine Unterstützung für XML Aufzählungen.

5.2.6 Einfache Typen, die durch Einschränkung abgeleitet sind Das JAX-RPC-Subset bietet keine Unterstützung für die Ableitung einfacher Typen durch Einschränkung.

Die WSDL für die WCF-Enumeration generiert eine <xs:simpleType> mit <xs:restriction>, die <xs:enumeration> enthält. Also sage ich einfach, dass dieses Feld ein int ist und definiere Konstanten?

Ist das nur ein Fehler in der WTK? Falls ja, habe ich einen Fehlerbericht mit Sun eingereicht und werde sehen, ob sie antworten. Warum würde das Toolkit dies nicht als Fehler kennzeichnen?

So jetzt muss ich die Schnittstelle ändern, so dass es JSR-172-konform ist. Gibt es Tools zum Lesen von WSDL und zum Aufzeigen von Kompatibilitätsproblemen?

Antwort

2

CLDC und das Wireless Toolkit verwenden beide Java Micro Edition. JavaME basiert auf Version 2 der Java-Sprache, dh keine Generika und keine Enums.

Der erste Schritt bei der Untersuchung von Web Services für Ihr Blackberry-Mobiltelefon wäre das Lesen der JSR-172-Spezifikationen.

+0

Hier ist, was die JSR-172-Spezifikation sagt ... 5.2.5 Enumeration Das JAX-RPC-Subset bietet keine Unterstützung für XML-Enumerationen. 5.2.6 Einfache Typen, die durch Einschränkung abgeleitet sind Das JAX-RPC-Subset bietet keine Unterstützung für die Ableitung einfacher Typen durch Einschränkung. Die WSDL für die WCF-Enumeration generiert einen mit , der enthält. Hmmm...sieht nicht so aus, wird funktionieren. – chrish