我一直在使用从ColdFusion 7使用Web服务的BlackBerry应用程序.Java ME SDK和Java Wireless Toolkit都要求生成的WSDL属于document / literal类型。
幸运的是,我已经对Web服务开发进行了输入,因此我尝试在cfcomponent标记中设置'style =“document”'。这生成了一个文档/文字样式WSDL,但现在wscompile在几个地方生成以下错误:
找到未知的简单类型:javax.xml.soap.SOAPElement 找到未知的简单类型:java.util.Calendar
为什么会发生这种情况?
JDLDP工具可以正确解析WSDL,但存根使用J2ME平台中不可用的命名空间。我原以为ColdFusion WSDL可以更容易地与Java系列中的其他产品一起工作。
答案 0 :(得分:0)
如果服务没有太大变化(因此WSDL不会发生太大变化),您可以将WSDL保存为文本文件并根据需要进行修改。我的建议 - 再次假设服务或多或少已经完成 - 将从cfcomponent
标签中取出样式声明并生成WSDL,然后将其保存为纯文本文件并根据需要进行修改被BlackBerry应用程序使用。
答案 1 :(得分:0)
事实证明,该问题与导致问题的方法参数和返回类型的数据类型有关。 WSDL是有效的,J2SE的wscompile版本能够正确解析它。但由于移动平台上的API功能减少,某些数据类型无法使用J2ME版本的wscompile进行解析。
我确实需要在ColdFusion Web服务的cfcomponent标记中保留'style =“document”'声明,因为J2ME的存根生成器只会解析文档/文字类型的WSDL文件。
http://developers.sun.com/mobility/midp/articles/webservices/提供了JAX-RPC for Java ME支持的数据类型的参考。