Java 如何为web服务中可能的扩展准备业务对象
在创建Web服务时,我决定在客户端和Web服务之间交换业务对象(BO) 如果将来我收到一个请求来扩展我的模型,并在BO中添加一些新属性(字段)并将其发送给客户机,那么最好的方法是什么 因此,基本上,每个BO可能有0..n个元字段。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
每个元字段都是键,类似于值,其中键可以是从简单数据类型到其他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。