Glassfish - Инъекция ресурсов не работает - PullRequest
2 голосов
/ 12 ноября 2010

Использование среды IDE NetBeans и сервера Glassfish. По какой-то причине я не могу ввести DataSource (пробовал миллион вариантов).

private DataSource iserver;
@Resource(name="jdbc/iserver", type=DataSource.class)
public void setIServer(DataSource dataSource) {
    this.iserver = dataSource;
}

(я уже пытался добавить аннотацию @Resource непосредственно в поле). Пул соединений и ресурс jdbc настроены на Glassfish, и на данный момент я добавил код обходного пути (в том же классе):

ctx = new InitialContext();
iserver = (DataSource) ctx.lookup("jdbc/iserver");

Код обходного пути работает отлично. Я не вижу никаких очевидных соответствующих ошибок в журнале Glassfish. Я вижу это, но не уверен, что это связано:

* имя не может быть пустым в javax.management.ObjectName.construct (ObjectName.java:405) * в javax.management.ObjectName. (ObjectName.java:1403) в org.glassfish.admingui .common.handlers.ProxyHandlers.getRuntimeProxyAttrs (ProxyHandlers.java:289) в org.glassfish.admingui.common.handlers.ProxyHandlers.getProxyAttrs (ProxyHandlers.java:273) в ...

Есть предложения?

Ответы [ 2 ]

3 голосов
/ 13 марта 2014

Выберите опцию "name" от "lookup" -->

@Resource(lookup = "java:global/env/jdbc/__default")
DataSource dataSource;
1 голос
/ 13 ноября 2010

Убедитесь, что вы используете сессионный компонент, иначе инъекция не будет работать.

Вот пример того, как я делаю инъекцию

@Resource(name="jdbc/my_db") private DataSource dataSource;
...