WELD-001201:加载beans.xml + Tomcat 7.0.59时出错

时间:2015-03-03 01:09:56

标签: java tomcat tomcat7 cdi weld

我有一个使用CDI焊接2.2.9.Final和嵌入式Tomcat 7.0.57的应用程序,一切正常。 升级到嵌入式Tomcat 7.0.59后,当我启动应用程序时,我遇到以下异常:

    Caused by: org.jboss.weld.exceptions.IllegalStateException: WELD-001201: Error loading beans.xml jndi:/localhost/WEB-INF/beans.xml
at org.jboss.weld.xml.BeansXmlParser.parse(BeansXmlParser.java:124)
at org.jboss.weld.bootstrap.WeldBootstrap.parse(WeldBootstrap.java:131)
at org.jboss.weld.environment.servlet.deployment.WebAppBeanArchiveScanner.scan(WebAppBeanArchiveScanner.java:78)
at org.jboss.weld.environment.deployment.discovery.AbstractDiscoveryStrategy.performDiscovery(AbstractDiscoveryStrategy.java:83)
at org.jboss.weld.environment.servlet.WeldServletLifecycle.createDeployment(WeldServletLifecycle.java:230)
at org.jboss.weld.environment.servlet.WeldServletLifecycle.initialize(WeldServletLifecycle.java:120)
at org.jboss.weld.environment.servlet.EnhancedListener.onStartup(EnhancedListener.java:61)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5513)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 6 more
    Caused by: java.io.FileNotFoundException: jndi:/localhost/WEB-INF/beans.xml
at org.apache.naming.resources.DirContextURLConnection.getInputStream(DirContextURLConnection.java:384)
at java.net.URL.openStream(URL.java:1037)
at org.jboss.weld.xml.BeansXmlParser.parse(BeansXmlParser.java:101)
... 14 more

1 个答案:

答案 0 :(得分:0)

问题是java.io.FileNotFoundException:jndi:/localhost/WEB-INF/beans.xml

我今天碰到了类似的东西。无法找到该文件,或者您尝试使用ENTITY声明从web.xml中包含该文件。如果您尝试使用ENTITY声明加载beans.xml,则问题是由Tomcat 7.0.59中的新安全策略引起的 - 阻止加载外部实体现在是默认设置。现在,上下文参数xmlBlockExternal默认设置为“true”。

您必须在上下文中覆盖它:~Tomcat / conf / context.xml中的主上下文或应用程序级上下文文件中的主上下文。要覆盖,请添加如下的参数:

        <Context xmlBlockExternal="false">