2

我最近开始与大约 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

在某些正在使用的电脑上,在这行之后大约需要 30 秒到 1 分钟,Apache Felix 才会启动并且可以通过浏览器访问应用程序。但是,在我同事的电脑上,这大约需要 8-9 分钟,而在我的电脑上大约需要 16 分钟。

在这 16 分钟内,没有过多的 CPU 使用或网络流量。好像什么事都没有发生。

我尝试将日志记录级别更改为调试,这为我提供了大量有关 pax-runner 的信息,但在“侦听传输 dt_socket ...”行之后,这是 16 分钟的沉默。在那段时间里,我可以将我的远程调试器 (IntelliJ) 连接到服务器,所以必须运行一些东西。

我的同事似乎都不知道这段时间会发生什么,以及为什么我们两个人花了这么长时间,而其他人却匆匆而过。谷歌也没有给我任何线索,所以我想我会在这里问。

这是一个相当复杂的项目设置,所以我想一次编写小块并进行大量测试,但是不得不等待 16 分钟来测试一个小改动当然会降低生产力。

我希望有人可以帮助我。谢谢!

4

2 回答 2

0

找出捆绑包是否都被很好地提出来。通过访问 Felix 控制台并发出“ps”、“scr info”命令或放入 Web 控制台。

一旦所有的捆绑包都被解析并激活,然后开始查看特定于应用程序的日志/事件以确定它是否可操作。

于 2014-01-28T19:11:50.270 回答
0

我会说你已经启用了挂起选项设置为 true 的调试代理。在你的 poms 中寻找类似的东西:

      <provision>
        <param>--vmOptions="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"</param>
      </provision>

更改suspend=ysuspend=n

我知道这是个老问题,但也许有人会有类似的问题。

于 2016-07-18T11:45:55.557 回答