Servicemix 7.0.1-迁移后CXF服务器启动太慢

时间:2019-06-17 12:55:41

标签: cxf apache-servicemix cxfrs camel-cxf

在从ServiceMix 5.1.4(smx-5)迁移到ServiceMix 7.0.1(最新稳定版本)(smx-7)的情况下,我可以看到使用cxf:RsServer < / p>

我的骆驼路线如下:

from("cxfrs:bean:rsServer?bindingStyle=SimpleConsumer&synchronous=true")
      .setBody(simple("${body[0]}"))
      .marshal(df)
      .convertBodyTo(String.class)
      .to("{{user.request.endpoint}}")
      .process(checkResponseStatusCode())
      .unmarshal(df);

在蓝图中,我有:

<cxf:rsServer id="rsServer" address="/user-data/v1" 
     loggingFeatureEnabled="true" depends-on="user-rest-v1" 
     serviceClass="org.my.company.user.rest.v1.resources.UserDataServiceRest" 
     staticSubresourceResolution="true">
      <cxf:providers>
          <bean name="jacksonJsonProvider" class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider" />
          <ref component-id="authenticationFilter" />
      </cxf:providers>
      <cxf:properties>
          <entry key="binding">
              <ref component-id="mySecurityCxfRsBinding" />
          </entry>
      </cxf:properties>
</cxf:rsServer>

UserDataServiceRest类包含方法签名,并按照旧的骆驼规范返回null。 我知道它现在支持接口,但是我不确定这可能是导致我出现问题的原因。

我版本smx-5的所有捆绑包都在几秒钟内启动(每个捆绑包)。在smx-7中,相同的捆绑包至少在2分钟内开始(每个捆绑包)。

虽然花费了这么长时间,但我在日志中看不到任何活动。

请注意,我的服务器也有这样的问题:

<jaxrs:server id="pingServiceSvc" address="/ping">
    <jaxrs:serviceBeans>
        <ref component-id="pingServiceBean" />
    </jaxrs:serviceBeans>
    <jaxrs:providers>
        <ref component-id="commonExceptionHandler" />
    </jaxrs:providers>
    <jaxrs:inInterceptors>
        <ref component-id="requiredParametersInterceptorBean" />
    </jaxrs:inInterceptors>
</jaxrs:server>

对于任何请求(ping服务),它只会回答OK。

我的设置:

  • ServiceMix 7.0.1()
    • 没有嵌入式ActiveMQ
    • 已安装在RedHat 7 linux上
  • Java JDK 8(openJDK构建1.8.0_212-b04)

更新

当我在本地(CentOS 6.10)尝试时,捆绑包(暴露CXF服务器)在大约20秒后启动。但是,当将其部署在真实服务器(RHEL 7)上时,将花费超过2分钟的时间。 我怀疑存在网络问题,但日志中没有任何内容。 配置几乎是相同的...我正在研究它。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

促使我寻求解决方案的是我的日志中的以下警告消息:

2019-06-27T09:24:24Z | WARN  | NamespaceHandlerRegistryImpl     | 34 | NamespaceHandler org.apache.camel.blueprint.handler.CamelNamespaceHandler is behaving badly and should be fixed |  |  | 
2019-06-27T09:24:24Z | WARN  | NamespaceHandlerRegistryImpl     | 34 | NamespaceHandler org.apache.camel.component.cxf.blueprint.CxfNamespaceHandler is behaving badly and should be fixed |  |  | 
2019-06-27T09:24:24Z | DEBUG | BlueprintContainerImpl           | 34 | Running blueprint container for bundle com.mycompany.user.user-rest-v1/1.0.1.SNAPSHOT in state WaitForNamespaceHandlers |  |  | 
2019-06-27T09:24:24Z | WARN  | NamespaceHandlerRegistryImpl     | 34 | Unable to find namespace handler for http://cxf.apache.org/configuration/beans |  |  | 

CXF中的名称空间处理程序似乎存在问题,可能是因为我的服务器无法访问Internet,所以超时。

这只是推测。

在Internet上搜索了有关此主题的内容后,我发现this jira似乎在更高版本的Camel中有所修复(根据JIRA票据,从2.18和2.19开始)。

不幸的是,没有比2.16.5更高版本的Camel更新版本的ServiceMix稳定版本。

然后,我尝试使用最新版本的Camel:2.23.0升级ServiceMix 7.0.1(我也尝试使用2.24.1,但是我的许多OSGI依赖关系都被破坏了。)

我应用的更改是:

    文件org.apache.karaf.features.cfg中的
  1. 更改了这一行:mvn:org.apache.camel.karaf/apache-camel/2.16.5/xml/features, \ 与:mvn:org.apache.camel.karaf/apache-camel/2.23.0/xml/features, \

  2. 文件profile.cfg.erb中的
  3. 更改了这一行:repository.mvn\:org.apache.camel.karaf/apache-camel/2.16.5/xml/features = mvn:org.apache.camel.karaf/apache-camel/2.16.5/xml/features 与:repository.mvn\:org.apache.camel.karaf/apache-camel/2.23.0/xml/features = mvn:org.apache.camel.karaf/apache-camel/2.23.0/xml/features

之后,   *停止您的ServiceMix   *清理缓存文件夹   *启动ServiceMix

(或使用clean选项重新启动servicemix)

全面启动后,当我重新安装功能时,所有捆绑软件均以平稳的方式启动,并且比以前更快。

结论:SM-3390可能是捆绑软件起步缓慢的原因。