2

我正在使用在 WCF 中实现的 Web 服务,它在接口中定义了枚举。我正在尝试从 Java BlackBerry 客户端调用它。我正在使用 Eclipse 为 BlackBerry 开发 Java 应用程序。我正在使用Sun Java Wireless Toolkit (WTK) 2.5.2 生成存根代码,因为 Web 服务相当大(Windows Mobile 客户端已经在使用)。

当我尝试使用 WTK 生成存根代码时,我在 Eclipse 中收到有关枚举的错误。在以下函数中,它抱怨 java.io.ObjectStreamException 无法解析为类型。

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

运行存根生成器时,有一个用于 CLDC 1.0 或 CLDC 1.1 的开关。使用这两个选项生成会导致相同的问题。

我在 Sun 找到了一个关于此的论坛帖子,但没有任何回应。这篇文章中的人说,“现在 java.io.ObjectStreamException 不在 CLDC 中,而是在 CDC 中。是否有一个很好的工具可以为 J2ME 特别是 CLDC 1.0/1.1 创建 Web 服务存根?” 我通过查看 [documentation 3 )验证了它在 CLDC 1.1 中不存在。

Eclipse 中有两个快速修复程序可以解决这种情况:1)在包“java.io”中创建类“ObjectStreamException”或 2)修复项目设置(希望我添加参考)。

更新:

这是 JSR-172 规范所说的……

5.2.5 枚举 JAX-RPC 子集不提供对 XML 枚举的支持。

5.2.6 由限制派生的简单类型 JAX-RPC 子集不支持通过限制派生简单类型。

WCF 枚举的WSDL 生成一个<xs:simpleType>包含. 那么我是否只是说这个字段是一个 int 而不是定义常量?<xs:restriction><xs:enumeration>

这只是WTK中的一个错误吗?如果是这样,我向 Sun 提交了一份错误报告,看看他们是否做出回应。为什么工具包不将此标记为错误?

所以现在我需要更改接口,使其符合 JSR-172。是否有工具可以阅读 WSDL 并指出合规性问题?

4

1 回答 1

2

CLDC 和 Wireless Toolkit 都使用 Java Micro Edition。JavaME 基于 Java 语言的第 2 版,这意味着没有泛型和枚举。

为您的黑莓手机调查 Web 服务的第一步是阅读 JSR-172 规范。

于 2009-06-01T18:30:57.453 回答