@Resource аннотация является нулевой во время выполнения - PullRequest
2 голосов
/ 13 июня 2010

Я использую GlassFish v3.В классе объявлено следующее поле:

@Resource
private javax.sql.DataSource _data_source;

В файле web.xml объявлено следующее:

<data-source>
  <name>java:app/env/data</name>
  <class-name>com.mysql.jdbc.Driver</class-name>
  <server-name>localhost</server-name>
  <port-number>3306</port-number>       
  <user>myUser</user>                           
  <password>myPass</password>
</data-source>

Во время выполнения _data_source пуст.Что я делаю не так?

Ответы [ 4 ]

2 голосов
/ 13 июня 2010

Не могли бы вы попробовать это:

@Resource(lookup = "java:app/env/data")
private DataSource _data_source;

Смотри также

1 голос
/ 30 июля 2010

Попробуйте использовать:

@Resource(lookup="java:app/env/data")
private DataSource _data_source;
1 голос
/ 13 июня 2010

В дополнение к ответу Паскаля: если внедрение через аннотации не работает (исключение не происходит, поля просто нулевые), проблема часто заключается в старой версии дескриптора развертывания. Для Glasfish v3 вы можете использовать:

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
0 голосов
/ 15 июня 2010

Примерно так должно работать, без xml:

@Resource(name="jdbc/__default")
private DataSource ds
...
Connection con = null {
try {
  con = ds.getConnection();
  ...
} finally {
  if (con != null) con.close()
}
...