Что делать, когда введенный бин остается нулевым? - PullRequest
2 голосов
/ 12 марта 2012

В моем приложении у меня есть класс, который использует ссылку на класс Utils. Желая дружить с CDI, я пишу

public abstract class CommonClientBase<InterfaceType> {

    /**
     * Used utility class
     */
    private @Inject Utils utils;
}

Где Utils - простой класс, в котором абсолютно НЕТ конструктора и НЕТ внедренного поля.

Я должен добавить, что в моем проекте объявлен файл META-INF / beans.xml, содержащий

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xmlns:weld="http://jboss.org/schema/weld/beans" 
       xsi:schemaLocation="
          http://java.sun.com/xml/ns/javaee http://docs.jboss.org/cdi/beans_1_0.xsd
          http://jboss.org/schema/weld/beans http://jboss.org/schema/weld/beans_1_1.xsd">
    <weld:scan>
        <weld:exclude name="org.granite.cdi.**"/>
    </weld:scan>
</beans>

Итак, что может сделать моя ссылка utils, чтобы остаться null после загрузки приложения и, что более важно, как я могу решить эту пустоту?

Кроме того, я должен сказать, что этот код раньше работал со сваркой 1.0.1-Final, но теперь не работает со сваркой 1.1.4.Final

РЕДАКТИРОВАТЬ Также обратите внимание, что абстрактный класс также используется через квалифицированные экземпляры подклассов:

@JndiClient
public class ClientEJBInterfaceJndiClient extends CommonClientBase<ClientEJBInterface> implements ClientEJBInterface {
}

которые генерируются из некоторого серверного кода.

...