【问题标题】:Getting exception of org.dom4j.DocumentException : feature read only while deploying war file in tomcat of linux获取 org.dom4j.DocumentException 异常:在 linux 的 tomcat 中部署 war 文件时功能只读
【发布时间】:2009-11-23 11:43:14
【问题描述】:

我有war文件的工作副本,在windows中运行良好..

现在,当我将该 war 文件部署到 linux + tomcat 中时,它给了我以下堆栈跟踪:

2009-11-23 17:06:08,675  INFO (org.springframework.jdbc.datasource.DriverManagerDataSource:153) - Loaded JDBC driver: com.mysql.jdbc.Driver
2009-11-23 17:06:08,771  INFO (org.hibernate.cfg.annotations.Version:15) - Hibernate Annotations 3.4.0.CR1
2009-11-23 17:06:08,790  INFO (org.hibernate.cfg.Environment:520) - Hibernate 3.3.0.CR1
2009-11-23 17:06:08,796  INFO (org.hibernate.cfg.Environment:553) - hibernate.properties not found
2009-11-23 17:06:08,803  INFO (org.hibernate.cfg.Environment:687) - Bytecode provider name : cglib
2009-11-23 17:06:08,809  INFO (org.hibernate.cfg.Environment:604) - using JDK 1.4 java.sql.Timestamp handling
2009-11-23 17:06:08,905  INFO (org.hibernate.annotations.common.Version:14) - Hibernate Commons Annotations 3.1.0.CR1
2009-11-23 17:06:08,915  INFO (org.hibernate.cfg.Configuration:1452) - configuring from url: jndi:/localhost/MailServerV2/WEB-INF/classes/hibernate.cfg.xml
2009-11-23 17:06:08,968  INFO (org.springframework.beans.factory.support.DefaultListableBeanFactory:421) - Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@afae4a: defining beans [propertyConfigurer,dataSource,sessionFactory,hibernateTemplate,transactionManager,domainsDao,forwardingsDao,gatewayDao,interfacesDao,transportDao,userDao,IDomainsProcessor,IForwardingsProcessor,IGatewayProcessor,IInterfacesProcessor,ITransportProcessor,IUserProcessor,domainsProcessor,forwardingsProcessor,gatewayProcessor,interfacesProcessor,transportProcessor,userProcessor,IUserSecurityProcessor,ITransportSecurityProcessor,IInterfacesSecurityProcessor,IGatewaySecurityProcessor,IForwardingsSecurityProcessor,IDomainsSecurityProcessor,domainsSecurityProcessor,forwardingsSecurityProcessor,gatewaySecurityProcessor,interfacesSecurityProcessor,transportSecurityProcessor,userSecurityProcessor]; root of factory hierarchy
2009-11-23 17:06:08,972 ERROR (org.springframework.web.context.ContextLoader:213) - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in URL [jndi:/localhost/MailServerV2/WEB-INF/classes/spring-config/spring-db-applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.HibernateException: Could not parse configuration: jndi:/localhost/MailServerV2/WEB-INF/classes/hibernate.cfg.xml
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1395)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:512)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:289)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:286)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:188)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:526)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:730)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:387)
        at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:270)
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3764)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4212)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544)
        at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:626)
        at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
        at org.apache.catalina.core.StandardService.start(StandardService.java:448)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
Caused by: org.hibernate.HibernateException: Could not parse configuration: jndi:/localhost/MailServerV2/WEB-INF/classes/hibernate.cfg.xml
        at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1505)
        at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:985)
        at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:64)
        at org.hibernate.cfg.Configuration.configure(Configuration.java:1454)
        at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:973)
        at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:64)
        at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:604)
        at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1454)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1392)
        ... 36 more
Caused by: org.dom4j.DocumentException: feature-read-only Nested exception: feature-read-only
        at org.dom4j.io.SAXReader.read(SAXReader.java:484)
        at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1495)
        ... 45 more
2009-11-23 17:06:08,974 ERROR (org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/MailServerV2]:3768) - Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in URL [jndi:/localhost/MailServerV2/WEB-INF/classes/spring-config/spring-db-applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.HibernateException: Could not parse configuration: jndi:/localhost/MailServerV2/WEB-INF/classes/hibernate.cfg.xml
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1395)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:512)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:289)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:286)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:188)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:526)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:730)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:387)
        at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:270)
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3764)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4212)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544)
        at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:626)
        at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
        at org.apache.catalina.core.StandardService.start(StandardService.java:448)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
Caused by: org.hibernate.HibernateException: Could not parse configuration: jndi:/localhost/MailServerV2/WEB-INF/classes/hibernate.cfg.xml
        at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1505)
        at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:985)
        at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:64)
        at org.hibernate.cfg.Configuration.configure(Configuration.java:1454)
        at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:973)
        at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:64)
        at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:604)
        at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1454)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1392)
        ... 36 more
Caused by: org.dom4j.DocumentException: feature-read-only Nested exception: feature-read-only
        at org.dom4j.io.SAXReader.read(SAXReader.java:484)
        at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1495)
        ... 45 more
Nov 23, 2009 5:06:08 PM org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
Nov 23, 2009 5:06:08 PM org.apache.catalina.core.StandardContext start
SEVERE: Context [/MailServerV2] startup failed due to previous errors
2009-11-23 17:06:08,979  INFO (org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/MailServerV2]:653) - Closing Spring root WebApplicationContext
Nov 23, 2009 5:06:11 PM org.apache.catalina.core.ApplicationContext log
INFO: org.apache.webapp.balancer.BalancerFilter: init(): ruleChain: [org.apache.webapp.balancer.RuleChain: [org.apache.webapp.balancer.rules.URLStringMatchRule: Target string: News / Redirect URL: http://www.cnn.com], [org.apache.webapp.balancer.rules.RequestParameterRule: Target param name: paramName / Target param value: paramValue / Redirect URL: http://www.yahoo.com], [org.apache.webapp.balancer.rules.AcceptEverythingRule: Redirect URL: http://jakarta.apache.org]]
Nov 23, 2009 5:06:11 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
Nov 23, 2009 5:06:11 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
Nov 23, 2009 5:06:11 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
Nov 23, 2009 5:06:11 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
Nov 23, 2009 5:06:11 PM org.apache.coyote.http11.Http11BaseProtocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
Nov 23, 2009 5:06:12 PM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
Nov 23, 2009 5:06:12 PM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/266  config=null
Nov 23, 2009 5:06:12 PM org.apache.catalina.storeconfig.StoreLoader load
INFO: Find registry server-registry.xml at classpath resource
Nov 23, 2009 5:06:12 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 19798 ms

我的 hibernate.cfg.xml 有以下代码:

<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <mapping class="com.sufalam.mailserver.bean.Admin"/>
        //....All classes mapping...
    </session-factory>
</hibernate-configuration>

谁能告诉我到底是什么问题?

提前谢谢...

【问题讨论】:

    标签: java linux spring tomcat


    【解决方案1】:

    无法解析配置: jndi:/localhost/MailServerV2/WEB-INF/classes/hibernate.cfg.xml

    听起来它找不到 xml 文件(你检查过它可以访问它吗?)或者它的格式不正确。请发布hibernate.cfg.xml的相关部分。

    并检查您在类路径上没有包含相同类的多个 jar(例如,在类路径上以某种方式 dom4j 两次)

    【讨论】:

    • 我已经添加了 hibernate.cfg.xml 代码..而且我的类路径中只有一次 dom4j.jar..
    • @Nirmal:你知道类路径覆盖了哪些路径吗?根据 Appserver 配置,您至少需要验证 /WEB-INF/libAppserver/libJRE/lib 甚至更多。应该没有冲突。
    • @jitter:非常感谢您的反馈...我已经检查了所有路径...库中没有冲突...
    【解决方案2】:

    过去我在 windows 和 linux 之间共享 xml 时遇到了一些特殊字符问题。在纯文本编辑器 vim 中打开 hibernate.cfg.xml 并确保没有看到任何奇怪的字符。 Here's some more info.

    【讨论】:

    • @Paroulek :感谢您的回复,但我在 hibernate.cfg.xml 中没有发现任何奇怪的字符。
    猜你喜欢
    • 2014-07-02
    • 2013-01-12
    • 2019-12-22
    • 2019-02-06
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 2017-11-08
    • 2020-12-03
    相关资源
    最近更新 更多