2
我無法嘗試在Java EE 6和Glassfish 3.1(嵌入式)中使用@Resource註解。我想查找一個JNDI數據源,所以我試圖讓它在Glassfish中使用默認數據源。在我的代碼中,我有:使用@Resource爲Java EE 6和Glassfish 3.1注入資源
@Resource(lookup = "java:global/env/jdbc/__default")
DataSource dataSource;
它編譯得很好。我正在使用Maven +的建議here。
然而,當我部署我的.war我總是得到以下錯誤:
WARNING: Incorrect @Resource annotation class definition - missing lookup attribute
symbol: FIELD
location: javax.sql.DataSource ResourceLookup.dataSource
這是這樣一個簡單的例子,我會感到非常驚訝,如果它是一個錯誤。我一定做錯了什麼。有任何想法嗎?
P.S.我希望你不要在生產中使用jdbc/__ default,它是默認安裝Glassfish的德比數據庫。 – Jim
進一步看,當Glassfish顯示這個錯誤時,這是因爲它得到了NoSuchMethodError異常,這意味着你得到了Resource註解編譯代碼的錯誤版本。最有可能的是類路徑問題。你有沒有j2ee.jar捆綁在你的.war或類似的東西?如果你的戰爭只有你的代碼,並且沒有j2ee或者jee庫,那麼可以試試Glassfish的新副本。也可能你的JDK太舊了。 – Jim
查看[Glassfish來源](http://grepcode.com/file/maven.glassfish.org/content/repositories/glassfish-releases/org.glassfish.deployment/dol/3.0.1/com/sun/enterprise/deployment /annotation/handlers/ResourceHandler.java)在底部。這個鏈接是3.0代碼,我無法在線快速找到3.1代碼,但是我已經在我的機器上找到了它,並且評論如下: //可能意味着lib認可dir未設置,而舊版本 //資源正在從JDK中挑選出來。 //不要將其視爲致命錯誤。 – Jim