Java 如何为web服务中可能的扩展准备业务对象

Java 如何为web服务中可能的扩展准备业务对象,java,web-services,object,service,Java,Web Services,Object,Service,在创建Web服务时,我决定在客户端和Web服务之间交换业务对象(BO) 如果将来我收到一个请求来扩展我的模型,并在BO中添加一些新属性(字段)并将其发送给客户机,那么最好的方法是什么 因此,基本上,每个BO可能有0..n个元字段。 每个元字段都是键,类似于值,其中键可以是从简单数据类型到其他BO的任何内容 这里有一个用于建模BOs的Java代码,我只需要确认我走上了正确的道路 class AbstractBO{ //optional list of meta fields for futur

在创建Web服务时,我决定在客户端和Web服务之间交换业务对象(BO)

如果将来我收到一个请求来扩展我的模型,并在BO中添加一些新属性(字段)并将其发送给客户机,那么最好的方法是什么

因此,基本上,每个BO可能有0..n个元字段。
每个元字段都是键,类似于值,其中键可以是从简单数据类型到其他BO的任何内容

这里有一个用于建模BOs的Java代码,我只需要确认我走上了正确的道路

class AbstractBO{

 //optional list of meta fields for future extension
 List<MetaField> metaFieldList;

 //setters. getters

}

----

class MetaField {

 private Object key;
 private Object value; 

// setters
// getters

}

----

class MyBO extends AbstractBO {

//BO specific fields
private String name;
...


}

---

TODAY

class Person extends AbstractBO {

 private String name;
 private int age;

 //extend metaFieldList = null;

}


----

TOMORROW

class Person extends AbstractBO {

 private String name;
 private int age;

 //list with new metafield 

}
classabstractbo{
//用于将来扩展的元字段的可选列表
列表元字段列表;
//二传手,接球手
}
----
类元域{
私钥;
私人客体价值;
//二传手
//吸气剂
}
----
类MyBO扩展了AbstractBO{
//BO特定字段
私有字符串名称;
...
}
---
今天
类Person扩展了AbstractBO{
私有字符串名称;
私人互联网;
//扩展metaFieldList=null;
}
----
明天
类Person扩展了AbstractBO{
私有字符串名称;
私人互联网;
//带有新元字段的列表
}

如何为个人建模以备将来使用?

如果,正如您后续的评论所暗示的,您实际上希望发送直接的目标代码(可能是通过实现
可序列化的
),而不是使用XML或JSON(实现web服务时通常会这样做),那我不知道你怎么才能真正实现你想要的


当Java试图通过反序列化来重新创建对象时,它必须将输入数据与它认为的类相匹配。出于最佳实践目的,您应该实现
serialVersionUID
,并在每次修改类时对其进行更改,以便在添加变量时,如果另一端的人有旧版本的代码,他们将无法错误地重构您发送给他们的类。

您打算通过(例如SOAP/RMI)或更轻量级的(XML/JSON)发送实际对象吗?我打算发送实际对象-BOs。