1
我正在开发具有GlassFish v3.1部署目标的JavaEE6应用程序。为了隔离应用程序的实例(因为我们可能为测试和生产或多个QA实例部署多个实例),我想为应用程序中的所有资源使用应用程序范围的资源:部署后配置的应用程序范围资源(JDBC)
- JDBC连接
- JMS资源
- 自定义资源
不幸的是,由于JDBC连接细节不是一成不变的,我需要支持以下顺序:
- 部署WAR
- 在部署过程中,检测到空的JDBC URL /用户/密码,并且不执行自动升级liquibase,显示回退UI警告管理员配置JDBC设置和redeply /重载应用。
- 用户在应用范围内配置URL作用域JDBC资源
- 用户重新加载/重新部署应用程序。
- 完整的部署过程现在包括liquibase模式更新和现在可用的完整Web应用程序。
Unforunately,试图加载与JDBC连接导致部署失败空的URL参数战争:
SEVERE: Exception while invoking class org.glassfish.persistence.jpa.JPADeployer prepare method
SEVERE: Exception while preparing the app
SEVERE: [PersistenceUnit: foo] Unable to build EntityManagerFactory
任何想法如何,我可以得到应用部署远远不够,应用范围的JDBC连接将存在并可能配置?
你的回答的第一句话是解决方案,我终于找到了根源。对于产品发布,我使用JPADeployer可以使用的内存H2数据库URL(例如jdbc:h2:mem:myApp),Liquibase会很高兴地升级等。一旦部署,我们可以配置JDBC设置,并执行在GF中重新加载以获得对我们的适当数据库的实际部署。 – Pete