我最近开始与大约40名其他开发人员合作开展一个项目。我们正在与Apache Felix一起使用OSGi。我们使用maven-pax-plugin使用Maven构建和部署。 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的信息,但是在“Listening for transport dt_socket ...”行之后,这是16分钟的沉默。在此期间,我可以将远程调试器(IntelliJ)连接到服务器,因此必须运行一些东西。
我的同事们似乎都不知道在这段时间里发生了什么,以及为什么我们两个人需要这么长时间,但对其他人来说却过得很快。谷歌没有给我任何线索,所以我想我会在这里问。
这是一个非常复杂的项目设置,所以我想一次编写小块并进行大量测试,但是等待16分钟来测试一个小的改变当然会降低生产力。
我希望有人可以帮助我。谢谢!
答案 0 :(得分:0)
了解捆绑包是否都能很好地提升。通过访问Felix控制台并发出“ps”,“scr info”命令或放入Web控制台。
一旦所有捆绑包都被解析并激活,然后开始查看特定于应用程序的日志/事件,以确定它是否正常运行。
答案 1 :(得分:0)
我想说你已经将suspend选项设置为true启用了调试代理。在你的poms中寻找类似的东西:
<provision>
<param>--vmOptions="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"</param>
</provision>
将suspend=y
更改为suspend=n
。
我知道这是一个老问题,但也许有人会有类似的问题。