Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 瓦丁7号+;弹簧&x2B;VaadinSpringIntegration加载项-自动连线bean为null_Java_Spring_Ejb_Jaas_Vaadin7 - Fatal编程技术网

Java 瓦丁7号+;弹簧&x2B;VaadinSpringIntegration加载项-自动连线bean为null

Java 瓦丁7号+;弹簧&x2B;VaadinSpringIntegration加载项-自动连线bean为null,java,spring,ejb,jaas,vaadin7,Java,Spring,Ejb,Jaas,Vaadin7,所以我有一个我一直在开发的Vaadin 7应用程序,但现在需要集成JAAS和OpenAM以进行身份验证和授权。我注意到很多人都在使用Spring来让它工作,所以我选择了这条路线。我使用了VaadinSpringIntegration插件,我认为它的设置是正确的,但是当我启动我的应用程序时,我的自动连线bean是空的。我以前从未使用过Spring,所以很可能我忽略了一些东西 这是我的web.xml的一部分 <web-app id="WebApp_ID" version="3.0" xmlns

所以我有一个我一直在开发的Vaadin 7应用程序,但现在需要集成JAAS和OpenAM以进行身份验证和授权。我注意到很多人都在使用Spring来让它工作,所以我选择了这条路线。我使用了VaadinSpringIntegration插件,我认为它的设置是正确的,但是当我启动我的应用程序时,我的自动连线bean是空的。我以前从未使用过Spring,所以很可能我忽略了一些东西

这是我的web.xml的一部分

<web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>Hoplite Tool</display-name>

 <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>

<servlet>
    <servlet-name>Hoplite</servlet-name>
    <servlet-class>org.hoplite.servlet.HopliteServlet</servlet-class>
    <init-param>
        <param-name>UI</param-name>
        <param-value>org.hoplite.dashboard.DashboardUI</param-value>
    </init-param>
    <init-param>
        <param-name>widgetset</param-name>
        <param-value>org.hoplite.dashboard.DashboardWidgetSet</param-value>
    </init-param>
    <init-param>
        <param-name>UIProvider</param-name>
        <param-value>org.hoplite.dashboard.DashboardUIProvider</param-value>
    </init-param>

    <async-supported>true</async-supported>
</servlet>
<servlet-mapping>
    <servlet-name>BAT3</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>
最后,我的UI类有一个自动连接的bean(很抱歉,这个类太长了,所以我只能提供一个片段)

这是loginBean类

@Component
@Scope("prototype")
public class LoginBean {

    @Autowired
    private HttpServletRequest request;

    /**
     * Logs the user in with given username and password.
     * 
     * @param username
     * @param password
     * @return principal name if login is successful
     * @throws ServletException if login fails
     */
    public String performLogin(String username, String password) throws ServletException {

        // If login fails, we throw exception. Otherwise return the principal
        // name of logged in user.
        request.login(username, password);
        return request.getUserPrincipal().getName();
    }

    /**
     * Logs out the current user.
     * 
     * @throws ServletException if logout fails
     */
    public void performLogout() throws ServletException {
        request.logout();
    }
}
我的bean类和UI类位于org.hoplite.dashboard中


但是,每次我获得主用户界面时,登录栏都是空的……这里有人能帮我吗?

我将一次取一个:

1) 除非另有规定,否则将使用从上下文检索bean。如果您确实需要覆盖默认的UI实例,请确保DashboardUIProvider正在从spring应用程序上下文检索UI实例,以便实现“自动魔术”:

<init-param>
    <param-name>UIProvider</param-name>
    <param-value>org.hoplite.dashboard.DashboardUIProvider</param-value>
</init-param>


豆名
仪表板界面

其中,
dashboardUI
是spring将用于您的UI的隐式名称。如果你改变它,请确保用新的更新您的web.xml

您能从web.xml添加servlet配置吗?我已将servlet配置添加到web.xml端口,其中web.xml中的
com.company.hoplite…
和spring配置中的
是打字错误吗?抱歉…我出于业务目的重命名了包…包名是代码是一致的,所以我修改了“org.hoplite.dashboard”…很抱歉造成混淆,我继续删除了UI提供程序,但现在我收到了以下异常
javax.servlet.ServletException:com.vaadin.server.ServiceException:org.springframework.beans.factory.NoSuchBeanDefinitionException:com.vaadin.server.VaadinServlet.service(VaadinServlet.java:240)javax.servlet.http.HttpServlet.service(HttpServlet.java:847)未定义名为“org.hoplite.DashboardUI”的bean
我试图在web.xml中将参数值更改为“DashboardUI”,并出现相同的错误。我应该在注释或其他地方定义一个名称吗?明白了…我仍然有JAAS的问题,无法从JBoss检索用户,但bean正在自动连接。多谢!
@Push(PushMode.MANUAL)
@Theme("dashboard")
@Title("Hoplite Tool")
@Component
@Scope("prototype")
public class DashboardUI extends UI {

      @Autowired
      private LoginBean loginBean; 

      ...

      //add listener to button
      signin.addClickListener(new ClickListener() {

        @Override
        public void buttonClick(ClickEvent event) {
           String name = loginBean.performLogin(username.getValue().toString(), password.getValue().toString());
           buildMainView();
        }
}
@Component
@Scope("prototype")
public class LoginBean {

    @Autowired
    private HttpServletRequest request;

    /**
     * Logs the user in with given username and password.
     * 
     * @param username
     * @param password
     * @return principal name if login is successful
     * @throws ServletException if login fails
     */
    public String performLogin(String username, String password) throws ServletException {

        // If login fails, we throw exception. Otherwise return the principal
        // name of logged in user.
        request.login(username, password);
        return request.getUserPrincipal().getName();
    }

    /**
     * Logs out the current user.
     * 
     * @throws ServletException if logout fails
     */
    public void performLogout() throws ServletException {
        request.logout();
    }
}
<init-param>
    <param-name>UIProvider</param-name>
    <param-value>org.hoplite.dashboard.DashboardUIProvider</param-value>
</init-param>
<init-param>
    <param-name>UI</param-name>
    <param-value>org.hoplite.dashboard.DashboardUI</param-value>
</init-param>
<init-param>
    <param-name>beanName</param-name>
    <param-value>dashboardUI</param-value>
</init-param>