【发布时间】:2010-12-17 13:33:35
【问题描述】:
我有一个 J2EE webapp,用于上传文件,然后由数据库过程处理。因为我们不希望 webapp 必须等到数据库过程完成,所以它在不同的线程中执行。
在单独线程中运行的进程需要获取并关闭自己的连接。 webapps 通常使用 ServiceLocator 查找数据源 jndi 名称,ServiceLocator 反过来从应用程序上下文中查找它(jndi 名称的查找键被定义为类常量),但是对于使用 ServiceLocator 查找 jndi 名称的单独线程失败。为了解决这个问题,我们使用 jndi 名称作为类常量,以便线程可以直接查找数据源。
这意味着数据源的 jndi 名称现在已为应用程序固定,我们不能再通过修改 web.xml 将相同的应用程序部署在同一个容器中但使用不同的数据源。
在这方面有哪些行业最佳做法? jndi 名称应该是可配置的,还是可以为应用程序修复它?有没有人实现了一个可配置的数据源 jndi 名称解决方案,该解决方案既可用于 webapp,也可用于容器中的其他线程?
【问题讨论】:
标签: java web-applications jakarta-ee datasource jndi