具有数据源部署的Tomcat 6 webapp
在开发和生产环境中部署具有数据源的应用程序的最佳方式是什么 建议使用META-INF/context.xml来指定Tomcat上下文,但我不明白应该如何在context.xml中指定datasource:具有数据源部署的Tomcat 6 webapp,tomcat,datasource,context.xml,Tomcat,Datasource,Context.xml,在开发和生产环境中部署具有数据源的应用程序的最佳方式是什么 建议使用META-INF/context.xml来指定Tomcat上下文,但我不明白应该如何在context.xml中指定datasource: 将数据库密码放在context.xml中是不安全的,所有人都可以看到它 如何为生产和开发模式维护两个不同的数据源 如何解决此问题?将连接信息放在context.xml文档中是安全的,因为访问您的应用程序的客户端无法访问连接信息,所以这是信息可以安全存放的地方。另一种身份验证方法对于我们这些不喜
如何解决此问题?将连接信息放在context.xml文档中是安全的,因为访问您的应用程序的客户端无法访问连接信息,所以这是信息可以安全存放的地方。另一种身份验证方法对于我们这些不喜欢在服务器上以纯文本形式查看密码的人来说很有用 在我看来,不同的数据源是依赖注入最好解决的问题。使用像Spring这样的框架,您可以指定在配置中使用哪些资源,而不是代码 我不明白应该如何在context.xml中指定datasource: 因此:
在web.xml
中:
jdbc/dbname
javax.sql.DataSource
另见:
1:将数据库密码放在context.xml中是不安全的,所有人都可以看到 web用户无法查看它。它只能由需要了解它们的服务器管理员查看
2:如何维护生产和开发模式的两个不同数据源 定义两个单独的
,每个都有不同的名称,并通过web.xml
或属性文件中的某个参数切换开发/生产模式,以便动态获取其中一个数据源。例如
发展
真的
与
boolean dev=boolean.valueOf(getServletContext().getInitParameter(“dev”);
如果(开发){
dataSource=getDataSource(“jdbc/devdb”);
}否则{
dataSource=getDataSource(“jdbc/proddb”);
}
对不起,我在寻找一些要复制和粘贴的代码时发现了这个问答。BalusC的答案是正确的,应该标记为答案,但我不太同意第2点
2:如何维护生产和开发模式的两个不同数据源
您不需要定义不同的上下文参数或不同的数据源。
让我们考虑一下:
在这个场景中,您的应用程序服务器(或您正在使用的任何东西)使用数据源绑定数据库,并且您的应用程序只知道数据源。因此,您的本地tomcat或您正在使用的任何东西都会通过数据源绑定到您的本地dev数据库。当您在应用程序中为开发、测试、生产或您可能拥有的任何环境构建、打包和部署应用程序时,您的应用程序服务器(或您正在使用的任何环境)将定义指向该环境的正确数据库的数据源。您只需在所有应用服务器上保持相同的JNDI名称。+1。我很感兴趣的是,在您的示例中,为什么您更喜欢
而不是
。我的意思是,在这种情况下是否不需要指定
(可在
中找到)?如果使用
,会有什么不同?只需几句话,没有在中找到过于复杂的细节。@info:
创建一个新的资源实例,
使用一个现有的资源实例(在Tomcat中,因此在context.xml
中定义为
)有趣,但不知道。使用
是否更实用?关于
,在
@info中没有:auth仅在创建过程中使用。如果是context.xml
中的
,则隐式表示容器本身。如果不介意,请在回答中添加一个内容:或者,可以使用注释。使用此注释时,不再需要在部署描述符中定义资源(即不需要web.xml中的
和/或
元素)。