2015-03-03 68 views
1

我有一個應用程序使用CDI焊接2.2.9.Final和嵌入式Tomcat 7.0.57,一切正常。 升級到嵌入式的Tomcat 7.0.59,當我開始我的應用程序後,我得到了以下異常:WELD-001201:加載beans.xml + 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 

回答

0

的問題是java.io.FileNotFoundException:JNDI:/本地主機/ WEB-INF /豆。 xml

我今天剛碰上類似的東西。無論是找不到文件,還是嘗試使用ENTITY聲明將其包含在web.xml中。如果您嘗試使用ENTITY聲明加載beans.xml,則問題是由Tomcat 7.0.59中的新安全策略引起的 - 阻止加載外部實體現在是默認設置。上下文參數xmlBlockExternal現在默認設置爲「true」。

您必須在您的上下文中覆蓋此內容:Tomcat/conf/context.xml中的主要上下文或應用程序級上下文文件中的主要上下文。要覆蓋,請添加像這樣的參數:

 <Context xmlBlockExternal="false">