我最近开始与大约 40 名其他开发人员一起从事一个项目。我们将 OSGi 与 Apache Felix 一起使用。我们使用 Maven 和 maven-pax-plugin 构建和部署。 OSGi 和 pax 对我来说都是新手,所以我不知道有关项目设置的任何细节。
要部署到我自己的机器上,我使用命令
mvn clean install
mvn pax:provision
pax:provision 命令启动 pax-runner,日志中的最后几行如下:
-> Provision bundle [...., at default start level, bundle will be started, bundle will be loaded from the cache]
-> Preparing framework [Felix 4.0.3]
-> Downloading bundles...
-> Using execution environment [NONE]
-> Runner has successfully finished his job!
Listening for transport dt_socket at address: 5005
在一些正在使用的电脑上,在 Apache Felix 启动之前大约需要 30 秒到 1 分钟,然后才能通过浏览器访问该应用程序。但是,在我同事的电脑上这需要大约 8-9 分钟,而在我的电脑上大约需要 16 分钟。
在这 16 分钟内,没有过度使用 CPU 或网络流量。好像什么都没有发生。
我曾尝试将日志记录级别更改为调试,这为我提供了大量有关 pax-runner 的信息,但在“监听传输 dt_socket...”行之后,是 16 分钟的沉默。在那段时间里,我可以将我的远程调试器 (IntelliJ) 连接到服务器,所以一定有东西在运行。
我的同事似乎都不知道这段时间发生了什么,也不知道为什么我们两个人花了这么长时间,但其他人却匆匆而过。 Google 也没有给我任何线索,所以我想我应该在这里问。
这是一个相当复杂的项目设置,所以我想一次编写小块程序并进行大量测试,但不得不等待 16 分钟来测试一个小的更改当然会降低工作效率。
我希望有人能帮我解决这个问题。谢谢!
最佳答案
看看捆绑是否都很好。通过访问 Felix 控制台并发出“ps”、“scr info”命令或放入 Webconsole。
一旦所有的包都被解析和激活,然后开始查看特定于应用程序的日志/事件以确定它是否可以运行。
关于java - 如何使用maven pax :provision加速部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20194944/