2013-09-10 2 views
0

У меня есть этот класс для создания некоторых ресурсов Java EE. Мой проект - EAR с EJB и CDI.Как создать SessionContext в Wildfly

public class Resources { 

    @Dependent 
    @Produces 
    @Resource(mappedName = "java:comp/EJBContext") 
    protected SessionContext sessionContext; 
} 

И это прекрасно работает в JBoss AS 7. Но когда я использую Wildfly (beta1 составленный из GitHub сегодня), я получаю это исключение.

Caused by: org.jboss.weld.exceptions.NullInstanceException: WELD-000044: Unable to obtain instance from null 

Что случилось? Как я могу создать SessionContext с помощью Wildfly? В Wildfly есть другой способ, или это ошибка (поскольку Wildfly еще не готова к производству)?

Обновление Использование последней версии Wildfly, скомпилированной из Github, этот код отлично работает. Я думаю, что это ожидаемая ошибка, так как Wildfly - это бета-версия. Спасибо вам, ребята.

ответ

2

SessionContext - это контекст, связанный с текущим сеансовым компонентом. в вашем случае Класс ресурсов - это не какой-либо компонент ejb, поэтому SessionContext не вводится.

Попробуйте добавить класс @Stateless в Resource. В любом случае кажется странным, что вы хотите создать производителя для SessionContext, который действителен только для текущего компонента. см. Javadoc о том, где SC действителен и что относится к http://docs.oracle.com/javaee/7/api/javax/ejb/SessionContext.html

+0

Спасибо за ваш ответ. Я согласен с вашим комментарием, так как мой класс не является EJB. Вы знаете, почему это отлично работает в JBoss 7x? –

+2

Возможно, у вас было дополнительное сопоставление в ejb-jar.xml или это было другое поведение CDI 1.0 против CDI 1.1, но, честно говоря, это не должно работать. – ctomc

 Смежные вопросы

  • Нет связанных вопросов^_^