2013-04-25 112 views
0

我有一些Axis2 Web服務被部署爆炸,這意味着我不創建.aar文件來保存在services目錄中,但有一個目錄,其中的文件和文件夾Axis2服務存在。像下面這樣:確定啓動期間Axis2服務的文件系統路徑

[...] Axis2的\ WEB-INF \ SERVICES \ someService \ META-INF \ service.xml的

我的服務類正在實施ServiceLifeCycle服務的啓動過程中做一些事情。在啓動過程中我需要做的事情是在服務目錄中需要一個文件,但我似乎無法在啓動過程中獲取到我的服務目錄的路徑。通常情況下,AxisService.getFileName()會提供到我的服務目錄的路徑,但在啓動過程中似乎沒有到服務的路徑,但getFileName()會提供「null」。看起來路徑只適用於已啓動的服務,因爲在shutDown方法中,getFileName爲我的服務提供了正確的路徑。

有沒有什麼辦法可以在服務啓動期間獲得可能的路徑?我已經在尋找Hooks或者至少在服務啓動後直接得到通知,但是在第一次調用它來獲得我的路徑並執行我的「某事」之前,它似乎並沒有可用的。

我不想要的是在service.xml文件中配置我的服務的路徑,我更喜歡與服務能夠檢索它自己的路徑的東西。

感謝您的幫助!

回答

1

Axis2爲每個服務提供一個類加載器,該類加載器可以訪問服務打包的文件(在AAR或分解的服務目錄中)。訪問與該服務一起打包的文件的正常方式是使用該類加載器的getResource()getResourceAsStream()函數。

要獲得服務類加載器,您可以撥打AxisService.getClassLoader()。從打包在服務中的類中調用this.getClass().getClassLoader()也應該可以工作。

+0

謝謝,這似乎正是我要找的。我已經看到了類加載器的訪問,但認爲它不能用於解析我的文件的路徑。幸運的是我錯了。 :-)像下面這樣的一行給了我請求文件的完整路徑:URL dummy = arg1.getClassLoader()。getResource(「META-INF/config/app_config.cfg」); – 2013-04-25 21:19:02

相關問題