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



在从 ServiceMix 5.1.4 (smx-5) 迁移到 ServiceMix 7.0.1 (最新稳定版本) (smx-7) 的上下文中,我可以看到使用 cxf:RsServer 在骆驼路线上出现奇怪的行为

我的骆驼路线看起来像这样:

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,如旧的 Camel 规范。 我知道它现在支持界面,但我不确定这可能是我问题的原因。

我版本 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服务)的正常。

我的设置:

  • 服务组合 7.0.1 ()
    • 没有嵌入式的ActiveMQ
    • 安装在 RedHat 7 Linux 上
  • Java JDK 8 (openJDK build 1.8.0_212-b04)

更新

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

我找到了解决方案。

驱使我选择解决方案的是我的日志中的这些警告消息:

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 中的命名空间处理程序似乎存在问题,可能是因为我的服务器无法访问互联网,因此超时。

在这一点上,这些只是猜测。

在互联网上搜索了一些关于这个主题的信息后,我发现了这个 jira,它似乎在更高版本的 Camel 中有一个修复程序(根据 JIRA 票证,从 2.18 和 2.19 开始)。

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

然后我尝试使用更新的 Camel:2.23.0 升级我的 ServiceMix 7.0.1(我也尝试使用 2.24.1,但我的许多 OSGI 依赖项都坏了。

我应用的更改是:

  1. 在文件org.apache.karaf.features.cfg中 更改了行: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中 更改了行: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

(或使用clean选项重新启动服务组合)

完全启动后,当我重新安装我的功能时,所有捆绑包都以比以前更流畅和更快的方式启动。

结论:SM-3390 可能是捆绑包启动缓慢的原因。

相关内容

  • 没有找到相关文章

最新更新