在从 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
骆驼规范返回。我知道它现在支持接口,但我不确定这可能是我的问题的原因。
我是 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 分钟。我怀疑是网络问题,但日志中没有任何内容。配置几乎相同......我正在研究它。