Spring 错误 - 使用 Spring 配置文件:异常启动过滤器 applicationFilterChain

Spring error - Using Spring profiles : Exception starting filter applicationFilterChain

我从一个工作的 Spring 配置的 Web 应用程序开始,并且一直在 Spring 上下文配置文件中的 beans 标记中添加一个 Spring 配置文件:

 <beans profile="MyProfile"

来自web.xml

<!-- Default Spring profile -->
<param-name>spring.profiles.default</param-name>
<param-value>MyProfile</param-value>

<filter>
    <filter-name>applicationFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy
    </filter-class>
</filter>

<filter-mapping>
    <filter-name>applicationFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

我现在遇到以下异常,我不确定如何解决这个问题。

2015-11-25T16:06:17.631+0000|SEVERE: WebModule[/MyWebApp]PWC1270: 异常启动过滤器 applicationFilterChain java.lang.InstantiationException 在 org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:124) 在 org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4685) 在 org.apache.catalina.core.StandardContext.start(StandardContext.java:5377) 在 com.sun.enterprise.web.WebModule.start(WebModule.java:498) 在 org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:917) 在 org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:901) 在 org.apache.catalina.core.StandardHost.addChild(StandardHost.java:733) 在 com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2019) 在 com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1669) 在 com.sun.enterprise.web.WebApplication.start(WebApplication.java:109) 在 org.glassfish.internal.data.EngineRef.start(EngineRef.java:130) 在 org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:269) 在 org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:301) 在 com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:461) 在 com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240) 在 org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:389) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:348) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1066) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259) 在 com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:461) 在 com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:212) 在 com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:179) 在 com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117) 在 com.sun.enterprise.v3.services.impl.ContainerMapper$Hk2DispatcherCallable.call(ContainerMapper.java:354) 在 com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) 在 com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860) 在 com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757) 在 com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056) 在 com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229) 在 com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) 在 com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) 在 com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) 在 com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) 在 com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) 在 com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) 在 com.sun.grizzly.ContextTask.run(ContextTask.java:71) 在 com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) 在 com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) 在 java.lang.Thread.run(Thread.java:744) Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: 没有定义名为 'applicationFilterChain' 的 bean 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:549) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1095) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:277) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 在 org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1109) 在 org.springframework.web.filter.DelegatingFilterProxy.initDelegate(DelegatingFilterProxy.java:326) 在 org.springframework.web.filter.DelegatingFilterProxy.initFilterBean(DelegatingFilterProxy.java:236) 在 org.springframework.web.filter.GenericFilterBean.init(GenericFilterBean.java:194) 在 org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:264) 在 org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:120) ... 还有 41 个

好的 - 问题是我的 web.xml 文件

中的条目
<param-name>spring.profiles.default</param-name> 
<param-value>MyProfile</param-value> 

没有被激活所以我使用 JVM 参数传入: -Dspring.profiles.active=MyProfile 现在可以使用了