Tomcat 6 Web应用程序与数据源部署
在开发和生产环境中部署具有数据源的应用程序的最佳方法是什么?
建议使用META-INF/context.xml来指定Tomcat上下文,但我不明白应该如何在context.xml中指定数据源:
it's将数据库密码放在所有人都可以查看的 context.xml 中是不安全的;
如何为生产和开发模式维护两个不同的数据源?
你如何解决这个问题?
What is the best way to deploy an app with datasource both in development and in production environments?
It is recommended to use META-INF/context.xml to specify Tomcat context but I don't understand how should I specify datasource in context.xml:
it's unsafe to put database password in context.xml which can be viewed by all;
how do I maintain two different datasources for production and devel mode?
How do you solve this problem?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
所以:
在
web.xml
中:另请参阅:
Web用户无法查看。它只能由需要了解它们的服务器管理员查看。
定义两个单独的
,每个数据源具有不同的名称,并通过某些方式切换开发/生产模式param 在web.xml
或属性文件中,以便您可以动态获取一个或另一个数据源。例如与
So:
And in
web.xml
:See also:
It can't be viewed by web users. It's only viewable by serveradmins who needs to know about them anyway.
Define two separate
<Resource>
each with a different name and toggle the dev/prod mode by some param inweb.xml
or properties file so that you can dynamically grab the one or the other datasource. E.g.with
抱歉,在寻找一些要复制和粘贴的代码时,我发现了此问答。 BalusC 是正确的答案,应该标记为答案,但我不太同意第 2 点
您不需要定义不同的上下文参数或不同的数据源。
让我们考虑一下:
在这种情况下,您的应用程序服务器(或您正在使用的任何服务器)使用数据源绑定数据库,并且您的应用程序只知道数据源。因此,您的本地 tomcat 或您正在使用的任何内容都会通过数据源绑定到本地开发数据库。当您在开发、测试、生产或您可能拥有的任何环境中构建、打包和部署应用程序时,您的应用程序服务器(或您正在使用的任何环境)将定义数据源,指向该环境的正确数据库。您只需在所有应用程序服务器中保留相同的 JNDI 名称即可。
Sorry, Looking for some code to copy and paste I found this Q&A. BalusC's is the right answer and should be marked as the answer but I don't quite agree with point 2
You don't need to define different context parameters or different datasources.
Let's consider:
In this scenario, your application server (or whatever you are using) binds the database using the datasource and your application only knows about the datasource. So your local tomcat or whatever you are using binds via the datasource to your local dev database. When you build, pack and deploy in your application for dev, test, production or whatever environment your might have, your application server (or whatever you are using) will have the datasource defined pointing to the right database for that enviroment. You only need to keep the same JNDI name across all app servers.
将连接信息放在 context.xml 文档中是安全的,访问您的应用程序的客户端无法访问该信息,因此这是该信息可以安全存放的位置。对于我们这些不喜欢在服务器上以纯文本形式看到这些密码的人来说,另一种身份验证方法非常有用。
在我看来,不同的数据源是最好通过依赖注入来解决的问题。使用像 Spring 这样的框架,您可以指定在配置中而不是代码中使用哪些资源。
Placing connection information in the context.xml document is safe to the point that it is not accessible from a client visiting your application, so this is where that information can sit safely. Another method of authentication would be useful for those of us who don't like seeing those passwords in plain text on the server.
Different data sources are an issue that is best solved by dependency injection in my opinion. Using a framework like Spring allows you to specify which resources you are using in configuration instead of code.