有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在构建Play应用程序后向其添加动态依赖项

我将我的Play应用程序作为服务器分发,该服务器由我的客户在prem上运行。我发布的功能之一是服务器端API,使他们能够插入在服务器地址空间中运行的代码。这段代码被编译为jar文件,并放入由我的安装程序创建的目录ext/,其级别与常规的lib/目录相同

问题是我没有一个好的方法让类装入器找到这些依赖项。我已经编写了一个自定义类加载器,只要是我的代码进行加载,它就可以正常工作。当我实例化顶级自定义类时就是这种情况,但不是更进一步,例如JDBC驱动程序或Kafka客户机,依赖于客户机代码

我找到的权宜之计是在应用程序启动bash脚本(2.6中的第341行)中,将:/path/to/server/ext/*附加到长的、硬编码的app-classpath列表中(这是一个很好的理由——我明白了)。想知道是否有更好的解决方案。例如,为什么不使用classpathenv变量呢

还是别的什么


共 (1) 个答案

  1. # 1 楼答案

    如果您只需要区分开发和部署之间的路径,为什么不将环境变量添加到application.conf

    my.majestic.path="/blah/blah"
    

    客户可以在conf文件夹中覆盖该路径以添加该路径

    更具可扩展性的解决方案:如果您的客户是使用群集处理应用程序(如Kubernetes)的大男孩和女孩,那么您可以拥有以下功能:

    my.majestic.path="/blah/blah"
    my.majestic.path=${?MY_MAJESTIC_PATH}
    

    然后MY_MAJESTIC_PATH将在集群管理的生产过程中被覆盖。这应该由客户来处理