我在stackoverflow上看到过很少的类似问题,但是我不知道该如何解决我的问题。在将Spring Security添加到我的Spring MVC项目中之后,出现以下异常:
Jul 20, 2014 3:18:04 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc SEVERE: The web application [] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
这是我在 pom.xml中的* mysql-connecter *
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.31</version> </dependency>
这是我添加的类:
@Component @Transactional public class UserDetailsServiceImpl implements UserDetailsService{ @Autowired private UserDAO userDAO; @Autowired private UserAssembler userAssembler; private static final Logger logger = LoggerFactory.getLogger(UserDetailsServiceImpl.class); @Transactional(readOnly = true) public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException { User user = userDAO.findByEmail(username); if(null == user) throw new UsernameNotFoundException("User not found"); return userAssembler.buildUserFromUser(user); } }
和汇编器
@Service("assembler") public class UserAssembler { @Autowired private UserDAO userDAO; @Transactional(readOnly = true) public User buildUserFromUser(net.viralpatel.contact.model.User user) { String role = "ROLE_USER";//userEntityDAO.getRoleFromUserEntity(userEntity); Collection<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>(); authorities.add(new GrantedAuthorityImpl(role)); return new User(user.getLogin(), user.getPassword(), true, true, true, true, authorities); } }
这是我的spring-security.xml
<beans:bean id="webexpressionHandler" class="org.springframework.security.web.access.expression.DefaultWebSecurityExpressionHandler" /> <http auto-config="true"> <intercept-url pattern="/account/*" access="ROLE_ADMIN" /> <form-login login-page="/login" default-target-url="/account/overview" authentication-failure-url="/login?error=true"/> <remember-me/> </http> <beans:bean id="myUserDetailsService" class="net.viralpatel.contact.service.UserDetailsServiceImpl" /> <authentication-manager alias="authenticationManager"> <authentication-provider user-service-ref="myUserDetailsService" /> </authentication-manager>
编辑:
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /opt/idea-IU-135.909/bin::/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib Jul 20, 2014 3:58:36 PM org.apache.catalina.core.JreMemoryLeakPreventionListener lifecycleEvent SEVERE: Failed to load class com.mysql.jdbc.NonRegisteringDriver during Tomcat start to prevent possible memory leaks. java.lang.ClassNotFoundException: com.mysql.jdbc.NonRegisteringDriver
我所做的只是将mysql-connector-java-5.1.31-bin.jar放在$ CATALINA_HOME / lib中。没有修改server.xml。