Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.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多模块项目中创建bean entityManagerFactoryBean?_Java_Xml_Spring_Spring Mvc - Fatal编程技术网

如何在java多模块项目中创建bean entityManagerFactoryBean?

如何在java多模块项目中创建bean entityManagerFactoryBean?,java,xml,spring,spring-mvc,Java,Xml,Spring,Spring Mvc,entityManagerFactoryBean spring-security.xml位于web目录中 persistence-context.xml位于persistence目录中 com.softserveinc.ita.redplatform.common.entity 更新 真的 org.hibernate.dialogue.mysql5dialogue web.xml 红台 调度员 org.springframework.web.servlet.DispatcherSer

entityManagerFactoryBean

spring-security.xml位于web目录中


persistence-context.xml位于persistence目录中


com.softserveinc.ita.redplatform.common.entity
更新
真的
org.hibernate.dialogue.mysql5dialogue
web.xml


红台
调度员
org.springframework.web.servlet.DispatcherServlet
1.
调度员
/
org.springframework.web.context.ContextLoaderListener
上下文配置位置
/WEB-INF/spring-security.xml
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/*

dispatcher-servlet.xml


类路径*:**/properties/*属性
/WEB-INF/views/
.jsp

JPAAdminUserDao类具有FindUserByMail方法

@Transactional
公共类JPAAdminUserDao扩展了JPAGenericDao
实现AdminUserDao{
@自动连线
私有EntityManager EntityManager FactoryBean;
/**
* 
*@param电子邮件接收
*@return AdminUser对象
*/
公共最终管理员用户findUserByEmail(最终字符串电子邮件){
列表用户=新建ArrayList();
users=(列表)entityManagerFactoryBean.getEntityManagerFactory().createEntityManager()
.createQuery(“来自”+AdminUser.class.getName()
+“作为用户,其中user.email=:email”)
.setParameter(“email”,email).getResultList();
如果(users.size()>0){
返回用户。获取(0);
}否则{
返回null;
}
}
}
UserDetailsService实现

公共类UserDetailsService实现实现UserDetailsService{
/**
*使用JPAAdminUserDao对象。
*/
@自动连线
私人JPAAdminUserDao jpaUserDao;
@凌驾
公共最终用户详细信息loadUserByUsername(最终字符串用户名)
抛出UsernameNotFoundException{
HashSet=newhashset();
AdminUser=(AdminUser)jpaUserDao.findUserByEmail(用户名);
if(AdminUser的用户实例){
添加(新字符串(“角色用户”);
添加(新字符串(“角色\管理员”);
添加(新字符串(“ROLE_REDADMIN”);
}否则{
添加(新字符串(“角色用户”);
}
列表权限=buildUserAuthority(设置);
返回buildUserForAuthentication(用户、权限);
}
/**
* 
*@param user接收用户对象
*@param authorities接收用户权限列表
*@return返回用户对象
*/
私人用户buildUserForAuthentication(最终AdminUser用户,
最后名单(主管当局){
返回新用户(User.getEmail(),User.getPassword(),true,
真的,真的,真的,权威);
}
/**
* 
*@param userRoles接收
*@返回权限列表
*/
私有列表buildUserAuthority(最终版)
设置用户角色){
Set setAuths=new HashSet();
//建立用户权限
for(字符串userRole:userRoles){
添加(新的SimpleGrantedAuthority(userRole));
}
列表结果=新建
ArrayList(setAuths);
返回结果;
}
公开最终JPAAdminUserDao getJpaUserDao(){
返回jpaUserDao;
}
公共最终作废setAdminUserDao(最终JPAAdminUserDao newJpaUserDao){
this.jpaUserDao=newJpaUserDao;
}
}
如果我评论下一行



在spring安全中,我将在方法FindUserByMail中的JPAAdminUserDao类中使用java.lang.NullPointerException。加载spring xml beans配置文件时,您似乎遇到了问题。您的
持久性上下文.xml
可能从未加载

是否确定此行正在导入
持久性上下文.xml
文件(如果不再需要,请将其删除,它可能会加载一些上下文两次):

要确保正确加载
servlet context.xml
文件,请在
web.xml
中的
DispatcherServlet
声明中添加init参数:

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/path/to/servlet-context.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

调度员
org.springframework.web.servlet.DispatcherServlet
上下文配置位置
/path/to/servlet-context.xml
1.
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security.xsd">

<!-- enable use-expressions -->
<http auto-config="true" use-expressions="true">

    <intercept-url pattern="/adm/**" access="hasRole('ROLE_ADMIN')" />
    <intercept-url pattern="/red/**" access="hasAnyRole('ROLE_ADMIN', 'ROLE_REDADMIN')" />
    <intercept-url pattern="/**" access="permitAll" />

    <!-- access denied page -->
    <access-denied-handler error-page="/index" />
    <form-login login-page="/login" default-target-url="/index"
        login-processing-url="/j_spring_security_check" 
        authentication-failure-url="/login?error" 
        username-parameter="email"
        password-parameter="password" />
    <logout logout-success-url="/login?logout" />
    <csrf />
</http>

<beans:bean id="UserDetailsServiceImplementation"
    class="com.softserveinc.ita.redplatform.business.service.UserDetailsServiceImplementation">
    <beans:property name="adminUserDao" ref="jpaUserDao" />
</beans:bean>

<beans:bean id="jpaUserDao" 
class="com.softserveinc.ita.redplatform.persistence.dao.impl.JPAAdminUserDao">
<beans:property name="entityManagerFactoryBean" ref="entityManagerFactoryBean"/>
</beans:bean>

<authentication-manager>
    <authentication-provider user-service-ref="UserDetailsServiceImplementation">
    </authentication-provider>
</authentication-manager>
 <?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-4.2.xsd
    http://www.springframework.org/schema/tx 
    http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
    http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">

    <context:component-scan base-package="com.softserveinc.ita.redplatform.persistence.dao.impl" />

    <bean id="entityManagerFactoryBean"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">

        <property name="dataSource" ref="dataSource" />

        <property name="persistenceUnitName" value="JPAUnit" />

        <property name="packagesToScan">
            <list>
                <value>com.softserveinc.ita.redplatform.common.entity</value>
            </list>
        </property>

        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
        </property>

        <property name="jpaProperties">
            <props>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
            </props>
        </property>
    </bean>

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
      <property name="driverClassName" value="${jdbc.driverClassName}" />
      <property name="url" value="${jdbc.url}" />
      <property name="username" value="${jdbc.username}" />
      <property name="password" value="${jdbc.password}" />
    </bean>

    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactoryBean" />
    </bean>

<!--    <bean id="jpaUserDao" class="com.softserveinc.ita.redplatform.persistence.dao.impl.JPAAdminUserDao"> -->
<!--    <property name="managerFactoryBean" ref="entityManagerFactoryBean"/> -->
<!--    </bean> -->

    <tx:annotation-driven />

</beans>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">


<display-name>REDplatform</display-name>

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

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

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

<!-- Spring Security -->
<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
    http://www.springframework.org/schema/beans     
    http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
    http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-4.2.xsd">

<context:component-scan
    base-package="com.softserveinc.ita.redplatform.web.controller" />

<import resource="classpath*:**/spring/*context.xml" />
<bean
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <value>classpath*:**/properties/*properties</value>
    </property>
</bean>



<bean
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix">
        <value>/WEB-INF/views/</value>
    </property>
    <property name="suffix">
        <value>.jsp</value>
    </property>
</bean>

<bean id="conversionService"
class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
    <property name="formatters">
        <set>
            <ref bean="realEstateAgencyDTOFormatter" />
        </set>
    </property>
</bean>
<mvc:annotation-driven conversion-service="conversionService" />

<mvc:resources mapping="/resources/**" location="/resources/" />
   @Transactional
 public class JPAAdminUserDao extends JPAGenericDao<AdminUser, Long> 
   implements AdminUserDao {
@Autowired
private EntityManager entityManagerFactoryBean;
/**
 * 
 * @param email receiving
 * @return AdminUser object
 */
public final AdminUser findUserByEmail(final String email) {
    List<AdminUser> users = new ArrayList<AdminUser>();
    users =       (List<AdminUser>)entityManagerFactoryBean.getEntityManagerFactory().createEntityManager()
            .createQuery("from " + AdminUser.class.getName() 
                    + " as user where user.email=:email")
            .setParameter("email", email).getResultList();
    if (users.size() > 0) {
        return users.get(0);
    } else {
        return null;
    }
}
}
public class UserDetailsServiceImplementation implements UserDetailsService   {

/**
 * Using JPAAdminUserDao object.
 */
@Autowired
private JPAAdminUserDao jpaUserDao;

 @Override
public final UserDetails loadUserByUsername(final String username) 
        throws UsernameNotFoundException {

    HashSet<String> set = new HashSet<String>();
    AdminUser user = (AdminUser) jpaUserDao.findUserByEmail(username);
    if (user instanceof AdminUser) {
        set.add(new String("ROLE_USER"));
        set.add(new String("ROLE_ADMIN"));
        set.add(new String("ROLE_REDADMIN"));
    } else {
        set.add(new String("ROLE_USER"));
    }
    List<GrantedAuthority> authorities = buildUserAuthority(set);
    return buildUserForAuthentication(user, authorities);

}

/**
 * 
 * @param user Receiving user object
 * @param authorities Receiving list of user authorities 
 * @return returning user object 
 */
private User buildUserForAuthentication(final AdminUser user, 
        final List<GrantedAuthority> authorities) {
    return new User(user.getEmail(), user.getPassword(), true, 
            true, true, true, authorities);
}

/**
 * 
 * @param userRoles receiving
 * @return Returning list of authorities
 */
private List<GrantedAuthority> buildUserAuthority(final 
        Set<String> userRoles) {

    Set<GrantedAuthority> setAuths = new HashSet<GrantedAuthority>();
    // Build user's authorities
    for (String userRole : userRoles) {
        setAuths.add(new SimpleGrantedAuthority(userRole));
    }
    List<GrantedAuthority> result = new 
            ArrayList<GrantedAuthority>(setAuths);

    return result;
}

public final JPAAdminUserDao getJpaUserDao() {
    return jpaUserDao;
}

public final void setAdminUserDao(final JPAAdminUserDao newJpaUserDao) {
    this.jpaUserDao = newJpaUserDao;
}
}
<beans:property name="entityManagerFactoryBean"     ref="entityManagerFactoryBean"/>
<import resource="classpath*:**/spring/*context.xml" />
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/spring-security.xml
        **/path/to/persistence-context.xml
    </param-value>
</context-param>
<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/path/to/servlet-context.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>