2011-05-10 48 views
3

我正在使用BlazeDS開發帶Java後端和Flash(純ActionScript)前端的webapp。BlazeDS環境中的RemoteObject:從JAXB/XJC生成的類中序列化對象

我使用RemoteObject東西發送對象,使用自定義序列化,在那裏我需要實現Externalizable(Java)和IExternalizable(AS)接口。迄今爲止,這工作得很好。

但是現在我需要將對象從Java發送到Flash,其類由JAXB/XJC生成。當然,這些生成的Java類不會實現Externalizable接口,所以看起來我不能在這裏使用我的方法。

一種可能性似乎是編寫一個XJC插件,它使類實現Externalizable。但這看起來像一個艱難的工作...

有沒有人有一個好主意如何解決這個問題?

+0

JAXB [Inheritance Plugin](http://confluence.highsource.org/display/J2B/Inheritance+plugin)通過在類定義中添加「implement NameOfInterface」來使生成的類「實現」接口。爲了實現必要的方法,需要開發另一個插件。 – Morrandir 2011-05-11 09:09:28

+0

目前我正在爲此開發一個JAXB插件。這看起來不像我以前想的那樣討厭。 – Morrandir 2011-05-12 07:47:29

回答

0

我終於開發了一個JAXB/XJC插件。 (如果有人有興趣,請聯繫我。) 現在正常工作。

0

幾個選項:

  • 建立在你JAXB生成的類的頂部的一組對象。我會選擇這個選項。
  • 在您的JAXB生成的類之上構建一個代理,它將相應地序列化/反序列化每個對象。如果您的對象正在實現Externalizable接口,那麼您可以使用Java中的動態代理API,不需要動態代碼生成來修改blazeds分配。我會遠離它,但它是可行的。
+0

您的第一個建議是不是意味着要再次實現使用JAXB生成的類?而實際上我並不真正瞭解你的第一個和第二個建議的區別。 – Morrandir 2011-05-12 07:47:53