为什么我得到@WebServlet注释,但没有实现javax.servlet.http.HttpServlet接口。使用vaadinCDI Servlet时出现错误

为什么我得到@WebServlet注释,但没有实现javax.servlet.http.HttpServlet接口。使用vaadinCDI Servlet时出现错误,java,vaadin8,Java,Vaadin8,我正在使用Vaadin框架,我必须实现VaadinCDIServlet,以便在前端使用@EJb注释。使用VaadinCDIServlet时,我的应用程序会出现以下错误: [错误]SRVE9990E:类 MynavigatorUI$Servlet有一个@WebServlet注释 但是没有实现javax.servlet.http.HttpServlet接口 我试图用VaadinCDIServlet替换VaadinCDIServlet,前端工作正常,没有出现错误,但我无法获得EJB注入,取而代之的是n

我正在使用Vaadin框架,我必须实现VaadinCDIServlet,以便在前端使用@EJb注释。使用VaadinCDIServlet时,我的应用程序会出现以下错误:

[错误]SRVE9990E:类 MynavigatorUI$Servlet有一个@WebServlet注释 但是没有实现javax.servlet.http.HttpServlet接口

我试图用VaadinCDIServlet替换VaadinCDIServlet,前端工作正常,没有出现错误,但我无法获得EJB注入,取而代之的是null指针异常

package be.iris.navigator;
import javax.ejb.EJB;
import javax.inject.Inject;
//http://kushalbaldev.blogspot.com/2017/01/navigation-in-vaadin.html
import javax.servlet.annotation.WebServlet;

import com.vaadin.annotations.VaadinServletConfiguration;
import com.vaadin.cdi.CDIUI;
import com.vaadin.cdi.CDIViewProvider;
import com.vaadin.cdi.server.VaadinCDIServlet;
import com.vaadin.navigator.Navigator;
import com.vaadin.navigator.Navigator.ComponentContainerViewDisplay;
import com.vaadin.server.VaadinRequest;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;

import be.iris.controllers.PersonInroRetrieveRemote;
import be.iris.views.ActivityView;
import be.iris.views.EmployeeManagementView;
import be.iris.views.Login;
import be.iris.views.MainView;

// This class is used as navigator, i'm making a one page application.
@SuppressWarnings("serial")
@CDIUI("")
public class MynavigatorUI extends UI{

    @EJB
    private PersonInroRetrieveRemote pr;
    @Inject
    CDIViewProvider viewProvider;
    public Navigator navigator;
    public static final String MAINVIEW = "main";
    public static final String EMPMAN = "help";
    public static final String Activity = "act";

    @Override
    protected void init(VaadinRequest request) {

        final VerticalLayout layout = new VerticalLayout();
        layout.setMargin(true);
        setContent(layout);
        ComponentContainerViewDisplay viewDisplay = new ComponentContainerViewDisplay(layout);
        navigator = new Navigator(UI.getCurrent(), viewDisplay);
        navigator.addProvider(viewProvider);
        navigator.addView("", new Login());
        navigator.addView(MAINVIEW, new MainView());
        navigator.addView(EMPMAN, new EmployeeManagementView());
        navigator.addView(Activity, new ActivityView());

    }
    @WebServlet(value = "/*", asyncSupported = false)
    @VaadinServletConfiguration(productionMode = false, ui = MynavigatorUI.class)
    public static class Servlet extends VaadinCDIServlet {
    }


}

package be.iris.views;

import javax.ejb.EJB;
import javax.inject.Inject;

import com.vaadin.cdi.CDIUI;
import com.vaadin.cdi.CDIView;
import com.vaadin.navigator.View;
import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Label;
import com.vaadin.ui.TextField;
import com.vaadin.ui.VerticalLayout;

import be.iris.controllers.LoginControllerRemote;
import be.iris.controllers.PersonInroRetrieveRemote;
import be.iris.eventhandling.LoginControllerEvent;
import be.iris.eventhandling.NotifEvent;
import be.iris.navigator.MynavigatorUI;

// this pafe is the login view that i'm using for MyNavigatorUI.java
@CDIView("")
public class Login extends VerticalLayout implements View, LoginControllerEvent {

    @EJB
    private PersonInroRetrieveRemote pr;
    @EJB
    private LoginControllerRemote lcr;
    private TextField username;

    @Inject
    public Login() {
        setSizeFull();
        setSpacing(true);
        Label label = new Label("Enter your information below to log in.");
        username = new TextField("username");
        TextField password = new TextField("password");
        addComponent(label);
        addComponent(username);
        addComponent(password);
        addComponent(loginButton());
        addComponent(actBt());

    }

    @Override
    public void enter(ViewChangeEvent event) {

    }

    private Button loginButton() {
        Button button = new Button("Log In", new Button.ClickListener() {
            @Override
            public void buttonClick(ClickEvent event) {
                getUI().getNavigator().navigateTo(MynavigatorUI.MAINVIEW);

            }
        });
        return button;

    }

    private Button actBt() {
        Button button = new Button("ActivTESTTEST", new Button.ClickListener() {
            @Override
            public void buttonClick(ClickEvent event) {
                getUI().getNavigator().navigateTo(MynavigatorUI.Activity);

            }
        });
        return button;

    }

    @Override
    public void loginFailedTooOften(NotifEvent ne) {
        // TODO Auto-generated method stub

    }

}
我希望登录与CDI和我做错了什么一起工作。 我是瓦丁的新手,请帮帮我