Я хотел бы интегрировать Vaadin 7 с J2EE EJB, но у меня есть проблема, что я не могу искать компонент с состоянием из сервлета. Я прочитал учебник, который дает совет, как сделать эту интеграцию с CDI, но я не хочу использовать CDI.Интеграция Vaadin 7 + EJB (как добавить компонент состояния к сервлету)
Поэтому я переписываю учебник таким образом. Но служба поиска не находит мой бобы с состоянием - MyVaadinUI. Может ли кто-нибудь мне помочь? Что не так с моим кодом? Я не уверен, нужны ли мне специальные файлы конфигурации в модуле WAR, например ejb-jar.xml? Becouse У меня их нет. Мои приложения состоят из модуля EAR и EJB - где только модуль UserBean и WAR, где находится этот класс и jee6UiProveder. Благодаря
package cz.simon.webmailapp.web;
@Theme("mytheme")
@SuppressWarnings("serial")
@Stateful
@LocalBean
public class MyVaadinUI extends UI{
@EJB
private UserBean bean;
@WebServlet(value = "/*", asyncSupported = true,
initParams = {
@WebInitParam(name = "UIProvider", value = "cz.simon.webmailapp.web.Jee6UIProvider") })
@VaadinServletConfiguration(productionMode = false, ui = MyVaadinUI.class, widgetset = "cz.simon.webmailapp.web.AppWidgetSet")
public static class Servlet extends VaadinServlet {
public UI getUI() {
Context jndi = null;
UI ui = null;
try {
jndi = new InitialContext();
ui = (UI) jndi.lookup("java:module/MyVaadinUI");
} catch (NamingException ex) {
Logger.getLogger(MyVaadinUI.class.getName()).log(Level.SEVERE, null, ex);
}
return ui;
}
}
@Override
protected void init(VaadinRequest request) {
bean.setUser("Test");
final VerticalLayout layout = new VerticalLayout();
layout.setMargin(true);
setContent(layout);
Button button = new Button(bean.getUser() + "Click Me!!!");
button.addClickListener(new Button.ClickListener() {
public void buttonClick(ClickEvent event) {
layout.addComponent(new Label("Thank you for clicking"));
}
});
layout.addComponent(button);
}
}
Какая ошибка вы получаете? Не могли бы вы объяснить, почему вы не хотите использовать CDI? Использование сессионных компонентов в модуле WAR EAR кажется не идеальным для меня и может быть проблемой. – raffael
Вы, кажется, смешиваете компоненты пользовательского интерфейса и контроллера в целом ... вы должны попробовать уважать MVC ... –