我将Play应用作为服务器分发,该服务器由我的客户在本地运行。我发布的功能之一是服务器端API,使它们能够插入在服务器地址空间中运行的代码。该代码被编译为jar文件,并放入与我的安装创建的目录ext/
相同的目录lib/
。
问题是我没有使类加载器找到这些依赖关系的好方法。我已经编写了一个自定义的类加载器,只要加载代码是我的代码,它就可以正常工作。当我实例化顶级自定义类时,情况就是这样,但是在链的下游,例如JDBC驱动程序或Kafka客户端,具体取决于客户端代码。
我发现的权宜之计是将:/path/to/server/ext/*
附加到应用程序启动bash脚本中的app-classpath
的一长串硬编码(出于很好的原因-我知道了)。 2.6中的341)。想知道是否有更好的解决方案。例如,为什么不遵守classpath
env变量?
还有其他东西吗?
答案 0 :(得分:0)
如果您需要区分的只是开发和部署之间的PATH,为什么不将环境变量添加到application.conf
:
my.majestic.path="/blah/blah"
客户可以在conf
文件夹中覆盖此路径以添加该路径。
更多可扩展的解决方案:如果您的客户是使用群集处理应用程序(例如Kubernetes)的大个子,那么您可以使用此功能:
my.majestic.path="/blah/blah"
my.majestic.path=${?MY_MAJESTIC_PATH}
然后MY_MAJESTIC_PATH
将在集群管理中的生产期间被覆盖。这应该由客户处理。