[英]String type in WCF service interpreted as JAXBelement in JavaClient
我有以下WCF Web服务:
[ServiceContract]
interface IService
{
[OperationContract]
void SaveInwardDocument(InwardDocument document);
}
public class Serice:IService{
void SaveInwardDocument(InwardDocument document){...};
}
[DataContract]
public class InwardDocument{
[DataMember]
public Citizen {get;set;}
//some other enum properties
[DataMember]
public string Remarks {get;set;}
}
[DataContract]
public class Citizen{
//Citizen proeperties
}
当我基于上述服务的wsdl在Java客户端中生成代理类时,对于InwardDocument
类的Citizen
和Remarks
属性类型,我得到了InwardDocument
。 当我尝试创建asmx服务的代理类时,情况并非如此。 我应该怎么做才能将字符串作为字符串,将自定义类作为复杂类型,而不是JaxBelement?
在挖掘了很多资源之后,尤其是这一资源和这一资源,并意识到我不是唯一面对这个问题的人之后,我发现有一个名为ObjectFactory的类可以自动生成,借助它我可以轻松地创建某些JAXBElement实例作为输入传递给WCF服务功能。 此类具有与从WSDL生成的JAXBElement数量相同的返回JAXBElement对象的公共实例方法。 假设您有一个JAXBElement LastName输入。 要将实际数据传递到此输入,您要做的就是:
ObjectFactory factory=new ObjectFactory();
factory.createLastName("Gates");
这样,使用wcf服务就不会有任何问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.