2014-05-08 24 views
0

我试图从Spring XML配置迁移到Java基础,我至少运行它,但资产(CSS,JS,IMG)不加载,我得到一个错误500从响应。 资产文件夹位于WEB-INF相同级别的webapp文件夹下 任何人都知道我该如何修复它?可能是配置上的错误。Spring Java Config不加载资产

堆栈跟踪:

07-May-2014 22:02:58.793 SEVERE [http-apr-8080-exec-1] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [dispatcher] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause 
java.lang.NullPointerException 
    at org.apache.catalina.webresources.Cache.noCache(Cache.java:150) 
    at org.apache.catalina.webresources.Cache.getResource(Cache.java:64) 
    at org.apache.catalina.webresources.StandardRoot.getResource(StandardRoot.java:203) 
    at org.apache.catalina.webresources.StandardRoot.getResource(StandardRoot.java:193) 
    at org.apache.catalina.core.ApplicationContext.getResource(ApplicationContext.java:533) 
    at org.apache.catalina.core.ApplicationContextFacade.getResource(ApplicationContextFacade.java:198) 
    at org.apache.catalina.core.StandardContext$NoPluggabilityServletContext.getResource(StandardContext.java:6510) 
    at org.springframework.web.context.support.ServletContextResource.exists(ServletContextResource.java:102) 
    at org.springframework.web.servlet.resource.ResourceHttpRequestHandler.getResource(ResourceHttpRequestHandler.java:178) 
    at org.springframework.web.servlet.resource.ResourceHttpRequestHandler.handleRequest(ResourceHttpRequestHandler.java:123) 
    at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:51) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) 
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:618) 
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:301) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:186) 
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) 
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344) 
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:74) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:516) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1015) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:652) 
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:277) 
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2451) 
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2440) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

和我的配置类

@Configuration 
@ComponentScan(basePackages = {"br.com.cheetah.catalog.*"}) 
@Import({SecurityContext.class, PersistenceContext.class}) 
@EnableWebMvc 
public class SpringMvcContext extends WebMvcConfigurerAdapter 
{ 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) 
    { 
     registry.addResourceHandler("/asset/**").addResourceLocations("../webapp/asset/**").setCachePeriod(20); 
    } 

    @Bean 
    public InternalResourceViewResolver viewResolver() 
    { 
     InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); 
     viewResolver.setViewClass(JstlView.class); 
     viewResolver.setPrefix("/WEB-INF/pages/"); 
     viewResolver.setSuffix(".jsp"); 
     return viewResolver; 
    } 
} 

的持久性配置

@Configuration 
@EnableJpaRepositories(basePackages = {"br.com.cheetah.catalog.repository"}, 
         entityManagerFactoryRef = "entityManagerFactory", 
         transactionManagerRef = "transactionManager") 
@EnableTransactionManagement(proxyTargetClass = true) 
public class PersistenceContext 
{ 
    @Bean(name = "entityManagerFactory") 
    public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean() 
    { 
     LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean(); 
     entityManagerFactoryBean.setPersistenceUnitName("PersistenceUnit"); 
     return entityManagerFactoryBean; 

    } 

    @Bean(name = "transactionManager") 
    public JpaTransactionManager transactionManager() 
    { 
     JpaTransactionManager transactionManager = new JpaTransactionManager(); 
     transactionManager.setEntityManagerFactory(entityManagerFactoryBean() 
                  .getObject()); 
     return transactionManager; 
    } 

    @Bean 
    public PersistenceAnnotationBeanPostProcessor 
    persistenceAnnotationBeanPostProcessor() 
    { 
     return new PersistenceAnnotationBeanPostProcessor(); 
    } 
} 

初始化程序

@Order(1) 
public class SpringInitializer extends 
           AbstractAnnotationConfigDispatcherServletInitializer 
{ 
    @Override 
    protected Class<?>[] getRootConfigClasses() 
    { 
     return new Class<?>[]{SpringMvcContext.class}; 
    } 

    @Override 
    protected Class<?>[] getServletConfigClasses() 
    { 
     return null; 
    } 

    @Override 
    protected String[] getServletMappings() 
    { 
     return new String[]{"/"}; 
    } 
} 

安全配置

+0

怎么样'addResourceLocations( “/ web应用/资产/”)'? –

回答

0

感谢安德烈·斯特凡,我把它简单地更换工作,为

@Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) 
    { 
     registry.addResourceHandler("/asset/**").addResourceLocations("/asset/**"); 
    }