2011-06-22 115 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,我會建議仔細測試。 –