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

时间:2015-08-14 13:17:41

标签: java wcf jaxbelement

我有以下WCF网络服务:

[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客户端中生成代理类时,我获得了Citizen类的RemarksInwardDocument属性的JaxBelement。当我尝试创建asmx服务的代理类时,情况并非如此。我需要做什么才能将字符串作为字符串和自定义类作为复杂类型而不是JaxBelement?

1 个答案:

答案 0 :(得分:0)

在挖掘了大量资源之后,特别是this one this one,并意识到我不是唯一一个面临这个问题的人,我发现有一个名为ObjectFactory的类是在帮助下自动生成的其中我可以轻松创建某些JAXBElement实例作为输入传递给WCF服务函数。此类具有许多公共实例方法,这些方法返回JAXBElement对象作为从WSDL生成的JAXBElement的数量。假设您有一个JAXBElement LastName输入。要将实际数据传递给此输入,您所要做的就是:

 ObjectFactory factory=new ObjectFactory();
 factory.createLastName("Gates");

这样,你不应该在使用wcf服务时遇到任何问题。