2
請考慮下面的一段典型的VMware配置文件(* .vmx)所在:如何反序列化Java屬性文件中給出的bean?
memsize = "2048"
MemTrimRate = "-1"
mks.enable3d = "TRUE"
nvram = "Windows Server 2003 Standard Edition.nvram"
pciBridge0.pciSlotNumber = "17"
pciBridge0.present = "TRUE"
pciBridge4.functions = "8"
pciBridge4.pciSlotNumber = "18"
pciBridge4.present = "TRUE"
pciBridge4.virtualDev = "pcieRootPort"
pciBridge5.functions = "8"
pciBridge5.pciSlotNumber = "19"
pciBridge5.present = "TRUE"
pciBridge5.virtualDev = "pcieRootPort"
pciBridge6.functions = "8"
pciBridge6.pciSlotNumber = "20"
pciBridge6.present = "TRUE"
pciBridge6.virtualDev = "pcieRootPort"
pciBridge7.functions = "8"
pciBridge7.pciSlotNumber = "32"
pciBridge7.present = "TRUE"
pciBridge7.virtualDev = "pcieRootPort"
replay.filename = ""
replay.supported = "FALSE"
roamingVM.exitBehavior = "go"
通過觀察這種配置,可以想見一個PciBridge
的java bean類具有以下特徵:
class PciBridge
{
public int pciSlotNumber; // or public int getPciSlotNumber(){...} and public void setPciSlotNumber(int v){...}
public boolean present; // or get/is/set methods
public int functions; // or get/set methods
public String virtualDev; // or get/set methods
}
此外,負責讀取VMX文件中的配置管理器可能會暴露出下面的方法:
public <T> List<T> getObjects(final String prop, Class<T> clazz);
然後給出上述配置,調用getObjects("pciBridge", PciBridge.class)
將返回配置中指定的所有PciBridge
對象的列表 - 在我們的例子中總共爲5。
如何實現此功能?當然,我在幾種不同的產品中看到了相同的模式,所以我認爲應該有一些東西可以用來實現此功能。
任何想法?
謝謝。
編輯
更正 - 我並不認爲VMWare的利用Java屬性文件格式(雙引號是多餘的),但精神是一樣的。此外,有適當的Java應用程序使用相同的模式。