2011-06-22 78 views
4

我正在寻找使用枚举来从EJB返回代码和消息。目前只返回一个整数值的代码。 由于我们有多个客户端应用程序,并且在EJB公共类和vica之间并不总是更新客户端。如果客户端的枚举类型不同步会发生什么?从EJB返回枚举

将它的工作,如果我有一个枚举的旧定义在客户端,并在EJB侧和正相反一个新的定义?

E.g 客户端:

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 

回答

2

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

+0

非常感谢。完美的答案(与链接确认),并意味着我想要做的将工作正常:) – timothyja

+0

我会注意到枚举序列化可能适用于JRMP,但RMI-IIOP是不同的。 RMI-IIOP枚举序列化的Sun和IBM实现都有错误,所以如果你使用RMI-IIOP,我会建议仔细测试。 –