资源链接上的NPE到tomcat 7.0.62中的全局JNDI资源

时间:2017-01-04 13:07:41

标签: java tomcat tomcat7 jndi

我在tomcat-7.0.62 \ conf \ server.xml中有一个GlobalNamingResource:

<GlobalNamingResources>
    <Resource
        name="jdbc/postgresDB"
        auth="Container"
        type="javax.sql.DataSource"
        driverClassName="org.postgresql.Driver"
        url="jdbc:postgresql://localhost/someDB"
        username="someUser"
        password="somePassword"
        factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" />
</GlobalNamingResources>

和主机配置:

<Host name="localhost" deployXML="false">

在tomcat-7.0.62 \ conf \ context.xml中,我有一个到全局JNDI资源的ResourceLink:

<ResourceLink global="jdbc/postgresDB" name="jdbc/postgresDB" type="javax.sql.DataSource"/>

启动tomcat时,我得到以下异常:

jaan 04, 2017 2:35:20 PM org.apache.tomcat.util.digester.Digester endElement
SEVERE: End event threw exception
java.lang.NullPointerException
    at org.apache.tomcat.util.IntrospectionUtils.callMethod1(IntrospectionUtils.java:847)
    at org.apache.catalina.startup.SetNextNamingRule.end(SetNextNamingRule.java:104)
    at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1060)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:609)
    at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:183)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1343)
    ...
jaan 04, 2017 2:35:20 PM org.apache.catalina.startup.ContextConfig processContextConfig
SEVERE: Parse error in context.xml for /host-manager
org.xml.sax.SAXParseException; systemId: .../apache-tomcat-7.0.62/conf/context.xml; lineNumber: 25; columnNumber: 69; Error at (25, 69) : null
    at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2705)
    at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2737)
    at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1063)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:609)
    at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:183)
    ...     

lineNumber: 25; columnNumber: 69;直接位于context.xml中ResourceLink标记的末尾。

使用配置我设法通过删除deployXML =&#34; false&#34;来摆脱异常。来自server.xml主机标记的属性。以前在tomcat 7.0.42上使用相同的设置。

我不明白为什么它在7.0.62中不起作用,如果我希望deployXML属性为false,我该如何在7.0.62中执行此操作。 我应该如何定义ResourceLinks(如本例中的数据库连接),以在同一个tomcat实例中的多个webapps之间共享资源。

0 个答案:

没有答案