Spring using JNDI with Tomcat… why do I need a META-INF/context.xml in my project

随声附和 提交于 2019-12-23 00:27:43

问题


I am trying to get Spring working with tomcat JNDI resource to access my database. My project works if a META-INF/context.xml in my project with the resource information but once I remove it it stops.. why.


回答1:


If you deploy a Web application in Tomcat, in the deployment process, Tomcat will copy the META-INF/context.xml file in $CATALINA_HOME/conf/ so the context will be available for your application. Take in mind, that if you remove context.xml from you application because you dont want it, you also have to delete it manually from $CATALINA_HOME/conf/

If you have edited the server.xml for including your dababase resource and is not working when you remove context.xml it could be because you made some mistake defining your resourde in server.xml

UPDATED:

When resource is in server.xml, in context you should make a reference to global resource in server.xml. For example:

<Context crossContext="true" reloadable="true" >
    <ResourceLink name="jdbc/myApp" type="javax.sql.DataSource" global="jdbc/myApp" />
</Context>



回答2:


This is unrelated to Spring.

To use JNDI you are expected to define the various resources either as global configuration or as application specifici configuration. For example JNDI DataSource Configuration

Why do you expect it to work in any other case? How would Tomcat know which resources to provide if you don't define them?

UPDATE:
You define a resouce in your server.xml but you have to associate the resource with your web application. That is why you also need to modify context.xml



来源:https://stackoverflow.com/questions/9843183/spring-using-jndi-with-tomcat-why-do-i-need-a-meta-inf-context-xml-in-my-proj

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!