当前位置: 首页 > 知识库问答 >
问题:

部署后配置的应用程序范围资源(JDBC)

羊舌赞
2023-03-14

我正在开发一个JavaEE6应用程序,其部署目标是GlassFish V3.1。为了隔离应用程序的实例(因为我们可能部署了多个用于测试和生产的实例,或者多个QA实例),我希望将应用程序范围的资源用于应用程序中的所有资源:

  • JDBC连接
  • JMS资源
  • 自定义资源

不幸的是,由于JDBC连接细节不是静态的,所以我需要支持以下顺序:

  1. 部署战争
  2. 在部署过程中,检测空的JDBC URL/用户/密码,并且不执行自动liquibase升级,显示回退UI警告管理员配置JDBC设置并更新/重新加载应用程序。
  3. 用户在应用程序范围的JDBC资源中配置URL
  4. 用户重新加载/重新部署应用程序。
  5. 完整的部署过程现在包括liquibase架构更新和完整的web应用程序。

令人遗憾的是,尝试为JDBC连接加载带有空url参数的war会导致部署失败:

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连接出现并可以配置吗?

共有1个答案

金钧
2023-03-14

首先,我会输入一个到空白或虚拟数据库实例的URL,然后切换它。

您可以使用一个标记为@startup的类来设计一个切换URL并启动Liquibase脚本的类。如果应用程序是为虚拟数据库配置的,那么这可能还包括您的警告消息。

@启动示例:http://blog.eisele.net/2010/12/Seven-ways-to-get-things-start-java.html

 类似资料:
  • 问题内容: 在Glassfish 4上部署“ myapp.war”之前,我必须 创建jdbc连接池(/WEB-INF/glassfish-resources.xml-> 本身不起作用…从asadmin正常) 为池创建jdbc资源(/WEB-INF/glassfish-resources.xml-> 与上述相同) 创建auth-realm(什么也不会自动,现在使用asadmin) 创建模式(peri

  • 你能给我提供一个资源范围使用或建议的例子吗?

  • 5-根据安装指南从github下载了nodejs应用程序,现在我得到了部署在本地服务器上的应用程序的文件夹结构 6-我需要在应用程序文件夹中包含以下内容才能成功地将应用程序部署到服务器 package.json文件中的a-npm依赖项b-bower.json文件(稍后我应该能够运行bower install在repo中安装bower依赖项)不成功,我没有对该目录的sudo权限 ==>app-roo

  • Requirements 运行一个Spark Streaming应用程序,有下面一些步骤 有管理器的集群-这是任何Spark应用程序都需要的需求,详见部署指南 将应用程序打为jar包-你必须编译你的应用程序为jar包。如果你用spark-submit启动应用程序,你不需要将Spark和Spark Streaming打包进这个jar包。 如果你的应用程序用到了高级源(如kafka,flume),你需

  • 我有一个AWS架构,其中我介绍了一个配置数据库,多个Lambdas将依赖于此。 配置数据库通过CDK填充:通过创建S3 bucket,将数据上传到S3 bucket,S3 bucket反过来通知将填充数据库的Lambda。 我有其他Lambda依赖于正在填充的数据库,其中一个Lambda位于cron上,最初由CDK通过自定义资源调用,因此计时非常关键。 目前,所有AWS资源都是通过单个堆栈部署的,

  • 问题内容: 我如何设置应用程序范围的键侦听器(键盘快捷键),以便在按下组合键(例如+ + )时,将在Java应用程序中调用特定操作。 我知道可以设置菜单项的键盘快捷键,但就我而言,该应用程序没有菜单栏。 问题答案: 查看Java教程的“ 如何使用键绑定”部分。 您需要在组件的一个中创建并注册一个,并在应用程序的一个组件中注册一个(, Action Name )对。假设您没有,则可以在应用程序中向顶