访问Java Web服务时出现Coldfusion错误

我创建了一个Java-AXIs2 webservice,它返回一个java对象(用户定义的类)。 我尝试使用它在coldfusion上访问它

 

当我尝试访问此wsObj并执行某些操作时,我收到以下错误

 Cannot perform web service invocation getTranscodeVideoFile. The fault returned when invoking the web service operation is:
AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException faultSubcode: faultString: org.xml.sax.SAXException: No deserializer for {http://www.w3.org/2001/XMLSchema}anyType faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXException: No deserializer for {http://www.w3.org/2001/XMLSchema}anyType at org.apache.axis.encoding.ser.BeanDeserializer.onStartChild(BeanDeserializer.java:314) at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035) at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165) at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141) at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:236) at org.apache.axis.message.RPCElement.getParams(RPCElement.java:384) at org.apache.axis.client.Call.invoke(Call.java:2448) at org.apache.axis.client.Call.invoke(Call.java:2347) at org.apache.axis.clien... ''

The error occurred on line 34.

任何人都有任何想法来处理这个问题。

webservice类看起来像这样

 public class TranscodeVideoFileFactoryWS { private TranscodeVideoFile[] temp = new TranscodeVideoFile[1]; public String getTranscodeVideoFile() { return "nasir"; } } 

我想访问返回的类。

您的问题的关键隐藏在错误的这一部分中:

 No deserializer for 

您尝试使用的Web服务正在使用自定义数据类型; Web服务很可能需要参数…或者返回一个值…这是CF不理解的变量类型(比如自定义类)。

遗憾的是,要解决此问题,您必须深入了解Web服务的内容,并了解您是否可以在您的最终实现这些自定义类型。

– 编辑 –

根据注释中Java类的描述,在初始化时,私有var被实例​​化:

 private TranscodeVideoFile[] temp = new TranscodeVideoFile[1]; 

虽然与您的方法调用没有直接关系,但它作为初始CreateObject()的一部分创建的,因此,我试图在后面的对象调用中以某种身份维护它。 不幸的是,该类是自定义的并且对于CF是未知的,并且如果继续沿着该开发路径继续,则将生成反序列化器错误。

有一个解决方案……但在这种情况下还有一个“正确的事”。

手动将编译后的类添加到webservice存根目录,这使得ColdFusion可以识别它们,这样当您在Web服务上调用方法时,ColdFusion知道如何处理类,并相应地序列化/反序列化它们。

在使用Netsuite API时,我使用了这个过程几个月,信用:Jeremy Gibbens。 您还想对ColdFusion工具进行一些研究,该工具允许ad-hoc产生存根 – 该工具是wsdl2java。

关于Wsdl2Java的日期文章 ,但仍然相关。

正确的事情”

如果可以,请不要使用SOAP上的自定义类型。 如果您可以控制包装FFMpeg Helper对象的代码,并且正在为服务本身做出贡献 – 请不要编写任何处理自定义类的代码。 使用ColdFusion理解的类型。

与ColdFusion兼容的数据类型,用于Web服务 。