2014-10-23 2 views
0

Glassfish에 배포/게시 할 때이 오류 메시지가 나타납니다. GlassFish 4.0, Eclipse Kepler, Maven, Spring Security 및 PostGreSQL 데이터베이스를 사용하고 있습니다.glassfish 서버에 배포 할 때 "org.springframework.beans.factory.CannotLoadBeanClassException : 클래스를 찾을 수 없습니다 ..."

오늘 이전에 모든 것이 잘 작동 했으므로 오류없이 게시 할 수있었습니다. 그런 다음 JSP 페이지에서 ManagedBean 클래스를 찾을 수없는 다른 문제를 해결하기 위해 이전에 관리 Bean으로 성공적으로 작업했지만 프로젝트에서 마우스 오른쪽 버튼을 클릭하고 프로젝트를 빌드 한 다음 프로젝트 -> Maven- > 업데이트 프로젝트, 다른 곳에서 읽었습니다. 그 후에 오류가 나타났습니다.

Eclipse에서 프로젝트 탐색기에서 볼 수있는 빌드 - 폴더에 일부 Java 클래스가 없기 때문에 클래스 경로에 문제가있는 것 같군요. Unfortunatly이 첫 번째 JavaEE/Maven 프로젝트이므로이 문제를 해결하는 방법을 모르겠습니다.

스택 트레이스에서 관련 부분 (여러 번 나타납니다) :

org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [util.MyAuthenticationHandler] for bean with name 'myAuthenticationHandler' defined in ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.lang.ClassNotFoundException: util.MyAuthenticationHandler 
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1327) ~[spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE] 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:594) ~[spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE] 
at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1396) ~[spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE] 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:385) [spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE] 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:354) [spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE] 
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:82) [spring-context-4.0.3.RELEASE.jar:4.0.3.RELEASE] 
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:609) [spring-context-4.0.3.RELEASE.jar:4.0.3.RELEASE] 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) [spring-context-4.0.3.RELEASE.jar:4.0.3.RELEASE] 
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403) [spring-web-4.0.3.RELEASE.jar:4.0.3.RELEASE] 
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) [spring-web-4.0.3.RELEASE.jar:4.0.3.RELEASE] 
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) [spring-web-4.0.3.RELEASE.jar:4.0.3.RELEASE] 
at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:5362) [web-core.jar:na] 
at com.sun.enterprise.web.WebModule.contextListenerStart(WebModule.java:743) [web-glue.jar:na] 
at org.apache.catalina.core.StandardContext.start(StandardContext.java:5898) [web-core.jar:na] 
at com.sun.enterprise.web.WebModule.start(WebModule.java:691) [web-glue.jar:na] 
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1041) [web-core.jar:na] 
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:1024) [web-core.jar:na] 
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:747) [web-core.jar:na] 
at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2278) [web-glue.jar:na] 
at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1924) [web-glue.jar:na] 
at com.sun.enterprise.web.WebApplication.start(WebApplication.java:139) [web-glue.jar:na] 
at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122) [internal-api.jar:na] 
at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:291) [internal-api.jar:na] 
at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:352) [internal-api.jar:na] 
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:497) [kernel.jar:na] 
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219) [kernel.jar:na] 
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491) [deployment-admin.jar:na] 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:527) [kernel.jar:na] 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:523) [kernel.jar:na] 
at java.security.AccessController.doPrivileged(Native Method) [na:1.7.0_17] 
at javax.security.auth.Subject.doAs(Subject.java:356) [na:1.7.0_17] 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:522) [kernel.jar:na] 
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:546) [kernel.jar:na] 
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1423) [kernel.jar:na] 
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1500(CommandRunnerImpl.java:108) [kernel.jar:na] 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1762) [kernel.jar:na] 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1674) [kernel.jar:na] 
at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:534) [kernel.jar:na] 
at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:224) [kernel.jar:na] 
at org.glassfish.grizzly.http.server.StaticHttpHandler.service(StaticHttpHandler.java:297) [nucleus-grizzly-all.jar:na] 
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:246) [kernel.jar:na] 
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191) [nucleus-grizzly-all.jar:na] 
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168) [nucleus-grizzly-all.jar:na] 
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189) [nucleus-grizzly-all.jar:na] 
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) [nucleus-grizzly-all.jar:na] 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288) [nucleus-grizzly-all.jar:na] 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206) [nucleus-grizzly-all.jar:na] 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136) [nucleus-grizzly-all.jar:na] 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114) [nucleus-grizzly-all.jar:na] 
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) [nucleus-grizzly-all.jar:na] 
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838) [nucleus-grizzly-all.jar:na] 
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113) [nucleus-grizzly-all.jar:na] 
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115) [nucleus-grizzly-all.jar:na] 
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55) [nucleus-grizzly-all.jar:na] 
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135) [nucleus-grizzly-all.jar:na] 
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564) [nucleus-grizzly-all.jar:na] 
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544) [nucleus-grizzly-all.jar:na] 
at java.lang.Thread.run(Thread.java:722) [na:1.7.0_17] 
Caused by: java.lang.ClassNotFoundException: util.MyAuthenticationHandler 
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1761) ~[war-util.jar:na] 
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1611) ~[war-util.jar:na] 
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:236) ~[spring-core-4.0.3.RELEASE.jar:4.0.3.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:392) ~[spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1348) ~[spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1319) ~[spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE] 
    ... 57 common frames omitted 

클래스 MyAuthenticationHandler는 "util을"패키지에 존재 SRC 폴더입니다. 이전에 말했듯이, 모든 것이 이전에 작동했기 때문에 코드에서 아무 것도 변경하지 않았습니다.

applicationContext.xml :

<?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:aop="http://www.springframework.org/schema/aop" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xmlns:jee="http://www.springframework.org/schema/jee" 
     xmlns:lang="http://www.springframework.org/schema/lang" 
     xmlns:util="http://www.springframework.org/schema/util" 
     xmlns:task="http://www.springframework.org/schema/task" 
     xmlns:sec="http://www.springframework.org/schema/security" 

     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
      http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd 
      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 
      http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd 
      http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd 
      http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd 
      http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd 
      http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd 
"> 

    <!-- begin Spring Security config --> 
    <sec:global-method-security secured-annotations="enabled" /> 

    <!-- Don't SSL encrypt static resources --> 
    <!-- <sec:http pattern="/resources/**" security="none"/> --> 

    <sec:http auto-config="true" access-denied-page="/faces/loginerror.jsp"> 

     <!-- On Glassfish, dev ports are 8080 and 8181, whereas on 
     production its 80 and 443 --> 
     <sec:port-mappings> 
      <sec:port-mapping http="8080" https="8181"/> 
     </sec:port-mappings> 

     <sec:intercept-url 
      pattern="/faces/admin/**" 
      access="ROLE_ADMIN" requires-channel="https" /> 
     <sec:intercept-url 
      pattern="/faces/users/**" 
      access="ROLE_USER, ROLE_ADMIN" requires-channel="https" /> 
     <sec:intercept-url 
      pattern="/**" 
      access="IS_AUTHENTICATED_ANONYMOUSLY"/> 

     <!-- Use O/S provided login window 
     <http-basic /> 
     --> 
     <!-- Use custom form for login --> 
     <sec:form-login 
      login-processing-url="/j_spring_security_check" 
      login-page="/faces/login.jsp" 
      authentication-success-handler-ref="myAuthenticationHandler" 
      authentication-failure-url="/faces/loginerror.jsp"/> 

     <sec:logout logout-url="/j_spring_security_logout" 
        invalidate-session="true" 
        logout-success-url="/faces/index.jsp" /> 

    </sec:http> 

    <sec:authentication-manager alias="authenticationManager"> 
     <sec:authentication-provider> 
      <sec:password-encoder ref="encoderBean"> 
       <sec:salt-source user-property="username"/> 
      </sec:password-encoder> 
      <sec:jdbc-user-service data-source-ref="dataSource" 
       users-by-username-query= 
       "select username, password, enabled from expuser where username=?" 
       authorities-by-username-query= 
       "select username, authority from expuser where username=?" /> 

      <!-- if not using a database for accounts, hard-code them here 
      <sec:user-service> 
       <sec:user name="admin" password="admin" authorities="ROLE_ADMIN, ROLE_MEMBER" /> 
       <sec:user name="member" password="member" authorities="ROLE_MEMBER" /> 
      </sec:user-service> 
      --> 
     </sec:authentication-provider> 
    </sec:authentication-manager> 

    <bean id="myAuthenticationHandler" class="util.MyAuthenticationHandler" /> 
    <bean id="webexpressionHandler" class="org.springframework.security.web.access.expression.DefaultWebSecurityExpressionHandler"/> 

    <bean id="encoderBean" class="org.springframework.security.authentication.encoding.ShaPasswordEncoder"> 
     <constructor-arg value="512" /> 
     <property name="iterations" value="1024"/> 
    </bean> 


    <!-- Server managed connection pool accessed via JNDI --> 
    <jee:jndi-lookup id="dataSource" jndi-name="jdbc/Datasource"/> 

    <!-- (Optional) Automatically receives and logs AuthenticationEvent messages --> 
    <bean id="loggerListener" class="org.springframework.security.authentication.event.LoggerListener"/> 

</beans> 

MyAuthenticationHandler.java : 사전에

package util; 

import java.io.IOException; 
import java.util.Set; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import org.springframework.security.core.Authentication; 
import org.springframework.security.core.authority.AuthorityUtils; 
import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler; 

public class MyAuthenticationHandler extends 
     SimpleUrlAuthenticationSuccessHandler { 

    @Override 
    public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) 
      throws IOException, ServletException { 
     String userTargetUrl = "/faces/users/indexUser.jsp"; 
     String adminTargetUrl = "/faces/admin/indexAdmin.jsp"; 
     Set<String> roles = AuthorityUtils.authorityListToSet(authentication.getAuthorities()); 
     if(roles.contains("ROLE_ADMIN")){ 
      getRedirectStrategy().sendRedirect(request, response, adminTargetUrl); 
     }else if(roles.contains("ROLE_USER")){ 
      getRedirectStrategy().sendRedirect(request, response, userTargetUrl); 
     }else{ 
      super.onAuthenticationSuccess(request, response, authentication); 
      return; 
     } 
    } 
} 

감사합니다!

답변

0

Maven-> Update Project를 사용하면 pom.xml 파일에 따라 업데이트하는 프로젝트 속성을 의미합니다. Java 빌드 경로배치 어셈블리을 확인하십시오.

+0

좀 더 구체적으로 확인해야할까요? 배포 어셈블리에서 중요하거나 필요한 설정은 무엇입니까? – zimmi2904

+0

http://examples.javacodegeeks.com/enterprise-java/maven/troubleshooting-maven-dependency-libraries-not-deployed-in-eclipse-ide/ – njjnex

관련 문제