我正在使用带有远程方法的CFC在ColdFusion 8中构建WebService。我需要在WSDL中指定复杂的数据类型,因此我为每种类型创建CFC。例如,假设我有一个“人”类型。它包括一个“年龄”属性。此属性必须始终为整数。但是,ColdFusion没有“integer”作为有效类型 - 只有Numeric,它在WSDL中转换为“xsd:double”。如何指定属性 - 或者参数 - 具有“整数”类型?
仅供参考,亨利的答案非常有用,但我正在尝试从函数中返回一个Object - 而不仅仅是一个整数。我需要将一个属性作为整数返回。
答案 0 :(得分:1)
编写自己的WSDL。保存CFC并通过将浏览器指向http://mysite/mypath/myCFC.cfc?WSDL来捕获RPC生成的WSDL 抓取源代码,或清理浏览器添加的所有内容。使 确保
<?xml
版本标记之前没有空格。 在“回复”消息中找到xsd:double
,并将其更改为xsd:int
。在组件中指定WSDL。添加带有文件名的
wsdlfile="mywsdl.wsdl"
属性并添加属性style="document"
这是用户定义的WSDL所必需的。将Web服务绑定到WSDL ColdFusion自动执行此操作 - 但它会缓存它们。当WSDL发生更改时,您需要重新启动该服务或转到CF中的“数据与服务 - > Web服务” 管理并刷新服务。
更改您的功能以返回
"Any"
而不是"Numeric"
- 醇>
在您的cfreturn中,实例化Java Integer
<cfreturn createObject("java","java.lang.Integer").init(JavaCast("int",myvalue))
/&GT;