处理枚举序列化的最佳实践
Best practice to deal with serialization of enum
众所周知,在项目中使用枚举时会出现一些序列化问题,尤其是将代码部署到集群时:
因为我们无法在一秒钟内完成部署,一些已部署的服务器可能会将新项目写入会话,而另一个可能会读取它并发生反序列化异常。
我的问题是
- 处理此类问题的最佳做法是什么?
- 是否有语法糖或其他东西可以在运行时将枚举转换为
String
以避免这种情况。为什么不呢?
As we know, there will be some serialization problem when we use enum in a project, especially for deploying the code to a cluster:
我什么都不知道。
Since we can't finish deploy in a second, some deployed server could write a new item to a session, while the other may read it and occur deserialization exception.
无论枚举如何,这都是一个问题。除非管理得当,否则对 class 的任何更改都可能引发这种情况。
What's the best practice to deal with such a problem?
与任何其他 class 相同。 (1) 避免改变 (2) 当你不能改变时,小心管理它。
Is there a syntactic sugar or sth else for enum to be casted as String during runtime to avoid this.
没有
Why not?
我不想代表 Java 作者,但序列化下的版本控制已经非常明确。
如果您打算向枚举添加值,也许您应该改用数据库 table。
众所周知,在项目中使用枚举时会出现一些序列化问题,尤其是将代码部署到集群时:
因为我们无法在一秒钟内完成部署,一些已部署的服务器可能会将新项目写入会话,而另一个可能会读取它并发生反序列化异常。
我的问题是
- 处理此类问题的最佳做法是什么?
- 是否有语法糖或其他东西可以在运行时将枚举转换为
String
以避免这种情况。为什么不呢?
As we know, there will be some serialization problem when we use enum in a project, especially for deploying the code to a cluster:
我什么都不知道。
Since we can't finish deploy in a second, some deployed server could write a new item to a session, while the other may read it and occur deserialization exception.
无论枚举如何,这都是一个问题。除非管理得当,否则对 class 的任何更改都可能引发这种情况。
What's the best practice to deal with such a problem?
与任何其他 class 相同。 (1) 避免改变 (2) 当你不能改变时,小心管理它。
Is there a syntactic sugar or sth else for enum to be casted as String during runtime to avoid this.
没有
Why not?
我不想代表 Java 作者,但序列化下的版本控制已经非常明确。
如果您打算向枚举添加值,也许您应该改用数据库 table。