在做Portlet的時候碰到一個奇怪的問題,使用Java應用程式來進行RFT傳輸好好的,但在Pluto下,同樣的一段程式卻不行,提示:
No client transport named 'https' found!
搜尋GT官網的maillist,發現有人提到是AXIS沒有讀到正確的設定檔,把GT4目錄下的config-client.wsdd拷貝到WEB-INF/classes下即可。於是照做,但現在還是有問題:
[http-8080-Processor24] ERROR delegation.DelegationUtil - org.apache.axis.ConfigurationException: java.lang.ClassNotFoundException: org.globus.wsrf.impl.security.authorization.ClientPropertiesHandler
但該類在wsrf_core.jar裡已有定義,為什麼唯獨此類沒找到呢?難道Pluto沒有搜尋WEB-INF/lib下的庫(已把GT下的所有jar都拷貝到該目錄下了,包括wsrf_core.jar)?把wsrf_core.jar複製到pluto的其它共用庫目錄下也不行。這個問題久久無法解決,一直擱置到今天。今天叫同學幫忙一起看,調試了半天沒有結果。但後來定睛一看,在那個wsrf_core.jar檔案裡的確找不到org/globus/wsrf/impl/security/authorization/ClientPropertiesHandler.class,而只有org/globus/wsrf/impl/security/authentication/ClientPropertiesHandler.class!再看GT4/lib下的wsrf_core.jar,其中是有這個類的,而這兩個jar檔案大小居然不一樣!頓時恍然大悟,可能是原來的wsrf_core.jar是某箇舊版本或者破壞掉的檔案,於是用新檔案覆蓋之,重裝Pluto,果然一切順利。
看來以後做事情不僅要多抱著些懷疑態度,還要更加認真謹慎才行。