为什么在 WTK 枚举存根生成器中使用 java.io.ObjectStreamException?
我正在使用 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 服务存根?” 我通过查看[文档 3< 验证了它在 CLDC 1.1 中不存在/a>)。
Eclipse 中有两个快速修复程序可以修复这种情况:1)在包“java.io”中创建类“ObjectStreamException”或 2)修复项目设置(需要我添加引用)。
更新:
这是 JSR-172 规范的内容...
5.2.5 枚举 JAX-RPC 子集不提供对 XML 枚举的支持。
5.2.6 通过限制派生的简单类型 JAX-RPC 子集不提供对通过限制派生简单类型的支持。
WCF 枚举的 WSDL 生成
,其中
包含
。 那么我是否只是说这个字段是一个 int 并定义常量?
这只是 WTK 中的一个错误吗? 如果是的话,我向 Sun 提交了一份错误报告,看看他们是否回应。 为什么工具包不将其标记为错误?
所以现在我需要更改接口,使其符合 JSR-172。 是否有工具可以读取 WSDL 并指出合规性问题?
I am using a web service implemented in WCF which has enums defined in the interface. I am trying to call this from a Java BlackBerry client. I am using Eclipse to develop the Java application for BlackBerry. I am using the Sun Java Wireless Toolkit (WTK) 2.5.2 to generate stub code since the web service is rather large (already in use by a Windows Mobile client).
When I try generating stub code using the WTK, I get errors in Eclipse about the enums. In the following function, it complains that java.io.ObjectStreamException cannot be resolved to a type.
private Object readResolve()
throws java.io.ObjectStreamException {
return fromValue(getValue());
}
When running the Stub Generator, there is a switch for either CLDC 1.0 or CLDC 1.1. Generating with both options result in the same issue.
I found a forum post about this at Sun with no response. The person in this post states that, "Now java.io.ObjectStreamException is not in CLDC but is in CDC instead. Is there a good tool out there for creating Stubs for Web Services for J2ME specifically CLDC 1.0/1.1 ?" I verified that it doesn't exist in CLDC 1.1 by looking at the [documentation 3).
There are two quick fixes available in Eclipse to fix this situation: 1) Create class 'ObjectStreamException' in package 'java.io' or 2) Fix project setup (which is wanting me to add a reference).
Update:
Here is what the JSR-172 specification says...
5.2.5 Enumeration
The JAX-RPC Subset does not provide support for XML enumerations.
5.2.6 Simple Types Derived By Restriction
The JAX-RPC Subset does not provide support for deriving simple types by restriction.
The WSDL for the WCF enumeration generates a <xs:simpleType>
with <xs:restriction>
containing <xs:enumeration>
. So do I just say this field is an int instead and define constants?
Is this just a bug in the WTK? In case it was, I filed a bug report with Sun and will see if they respond. Why wouldn't the toolkit flag this as an error?
So now I need to change the interface so that it is JSR-172 compliant. Are there tools to read WSDL and point out compliancy issues?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
CLDC 和 Wireless Toolkit 都使用 Java Micro Edition。
JavaME 基于 java 语言的第 2 版,这意味着没有泛型和枚举。
研究 Blackberry 手机 Web 服务的第一步是阅读 JSR-172 规范。
CLDC and the Wireless Toolkit both use Java Micro Edition.
JavaME is based on version 2 of the java language, which means no generics and no enums.
The first step in investigating Web Services for your Blackberry handset would be to read the JSR-172 specifications.