2011-08-08 29 views
0

以下是我的領域類RequestFactory與值類型的接口/抽象類

class Person { 
    String getName(); 
    Vehicle getVehicle(); 
} 

interface Vehicle { 
    String getCompanyName(); 
    String getRegNo(); 
    Point getParkingSpaceRequired(); 
} 

abstract class AbstractVehicle { 
} 

class Motorcycle extends AbstractVehicle { 
} 

class Car extends AbstractVehicle { 
} 

創建PersonProxy作爲EntityProxy是直線前進,併爲person.getName()工作的罰款

我已經創建VehicleProxy爲ValueProxy並用.with('vehicle')調用fire() 但是我收到錯誤:

域類型com .... AbstractVehicle $$ EnhancerByCGLIB $$ e86549b9無法發送到客戶端。

在PersonProxy 我@ProxyFor(值= Person.class,定位器= PersonLocator.class)
在VehicleProxy我@ProxyFor(值= Vehicle.class)

所以,如何處理這樣的RequestFactory中的繼承?
我是否應該將Vehicle從ValueProxy更改爲EntityProxy?
那麼如何實現VehicleLocator的方法?

回答

0

您應該爲MotorocycleCar編寫代理接口,而不是接口Vehicle的代理接口。我從來沒有使用requestfactory代理接口的接口(不是類),在我看來,這就是你得到這個異常的原因。

[編輯]
在上述這種情況下,你將不得不Vehicle接口移動到shared包,使服務器和客戶端的網站會看到它。在枚舉的情況下,這是非常常見的解決方案 - 域類具有一些枚舉屬性,並且代理接口還必須包含此屬性的訪問器。

其他解決方案(我認爲可能無法工作)是寫代理接口爲Vehicle接口和MotorocycleCar代理的接口應該擴展它。

+0

那麼PersonProxy的getVehicle()應該返回什麼?車輛? 和MotorcycleProxy應該擴展Vehicle接口嗎?或者我應該有VehicleProxy? – Nachiket

+0

對,我錯過了這部分 - 對不起。請看看我的編輯。 –