Java 从EJB返回枚举

Java 从EJB返回枚举,java,enums,ejb,Java,Enums,Ejb,我希望使用Enum从EJB返回代码和消息。当前仅返回整数值代码。 因为我们有不止一个客户端应用程序,当EJB公共类更新时,客户端并不总是更新,反之亦然。如果客户端上的枚举类型不同步,会发生什么情况 如果我在客户端有一个旧的枚举定义,在EJB端有一个新的定义,反之亦然,它会工作吗 例如 客户端: public enum Color { WHITE(21, "White"), BLACK(22, "Black"); private int code; private int message;

我希望使用Enum从EJB返回代码和消息。当前仅返回整数值代码。 因为我们有不止一个客户端应用程序,当EJB公共类更新时,客户端并不总是更新,反之亦然。如果客户端上的枚举类型不同步,会发生什么情况

如果我在客户端有一个旧的枚举定义,在EJB端有一个新的定义,反之亦然,它会工作吗

例如 客户端:

 public enum Color {
 WHITE(21, "White"), BLACK(22, "Black");

 private int code;
private int message;

 private Color(int c, String message) {
   code = c;
   message = m;
 }

 public int getCode() {
   return code;
 }

public String getMessage(){
 return message;
}
EJB端:

 public enum Color {
 WHITE(21, "White"), BLACK(22, "Black"), RED(23, "Red");

 private int code;
private int message;

 private Color(int c, String message) {
   code = c;
   message = m;
 }

 public int getCode() {
   return code;
 }

public String getMessage(){
 return message;
}
我的EJB方法是:

public Color getBestColor(); 
并返回:

Color.WHITE

如果客户端枚举定义具有您发送的值,它将正常工作(例如白色)。如果客户端没有该值,那么您将在客户端获得IllegalArgumentException(例如红色)。(有关枚举序列化的详细信息)。

非常感谢。完美的答案(需要链接确认),这意味着我想做的工作将很好:)我会注意到枚举序列化可能适用于JRMP,但RMI-IIOP是不同的。Sun和IBM的RMI-IIOP枚举序列化实现都有缺陷,所以如果您使用的是RMI-IIOP,我建议您仔细测试。