繁体   English   中英

WCF服务中的字符串类型在JavaClient中解释为JAXBelement

[英]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类的CitizenRemarks属性类型,我得到了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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM