在Mule流程下,Jersey类有什么问题?

时间:2015-12-08 07:44:07

标签: mule mule-studio mule-component mule-el mule-cluster

在下面的mule流程中,我已经为具有VM端点的REST Web服务实现了Jersey类。

<flow name="APIKeyLoadFlow" doc:name="APIKeyLoadFlow"
        initialState="started">
        <http:inbound-endpoint exchange-pattern="request-response"
            address="${api.load.invoke.url}" doc:name="HTTP"
            responseTimeout="${apikey.http.responsetimeout}" />
        <logger message="Start Of APIKeyLoadFlow -#[payload]" level="INFO"
            doc:name="ENTRY_LOG" />

        <request-reply timeout="300000" >
            <vm:outbound-endpoint connector-ref="VM_Connector"
                exchange-pattern="one-way" path="APIKeyLoadRequest">
            </vm:outbound-endpoint>
            <vm:inbound-endpoint connector-ref="VM_Connector"
                exchange-pattern="one-way" path="APIKeyLoadResponse">
            </vm:inbound-endpoint>
        </request-reply>
        <logger message="End of APIKeyLoadFlow" level="INFO" doc:name="EXIT_LOG" />
        <catch-exception-strategy doc:name="Catch Exception Strategy">
            <logger level="WARN" doc:name="Exception_Log"
                message="Exception in ApiKeyFlow #[System.getProperty('line.separator')] Error Description = #[exception.getMessage()]" />
        </catch-exception-strategy>
    </flow>
    <flow name="ApiKeyLoadRestServiceFlow" doc:name="ApiKeyLoadRestServiceFlow">
        <vm:inbound-endpoint exchange-pattern="one-way"
            path="APIKeyLoadRequest" doc:name="APIKey_Load_Request">
        </vm:inbound-endpoint>
        <logger message="Start of ApiKeyLoadRestServiceFlow -#[payload]" level="INFO"
            doc:name="ENTRY_LOG" />
        <jersey:resources doc:name="REST">
            <component class="com.elexon.bmrs.apikey.service.impl.ApiKeyLoadImpl" />
        </jersey:resources>
        <logger message="End of ApiKeyLoadRestServiceFlow" level="INFO"
            doc:name="EXIT_LOG" />
        <vm:outbound-endpoint exchange-pattern="one-way"
            path="APIKeyLoadResponse" doc:name="APIKey_Load_Response">
        </vm:outbound-endpoint>

但是我在运行请求时遇到异常?请告诉我实施流程中的问题是什么?

INFO 2015-12-08 13:09:59,792 [[apikey_load_phase3] .connector.http.mule.default.receiver.02] org.mule.api.processor.LoggerMessageProcessor:APIKeyLoadFlow -org.apache.commons的开始.httpclient.ContentLengthInputStream @ 1517f14 INFO 2015-12-08 13:09:59,813 [[apikey_load_phase3] .connector.http.mule.default.receiver.02] org.mule.lifecycle.AbstractLifecycleManager:Initialising:'VM_Connector.dispatcher.25489136'。对象是:VMMessageDispatcher INFO 2015-12-08 13:09:59,813 [[apikey_load_phase3] .connector.http.mule.default.receiver.02] org.mule.lifecycle.AbstractLifecycleManager:Starting:'VM_Connector.dispatcher.25489136'。对象是:VMMessageDispatcher INFO 2015-12-08 13:09:59,830 [[apikey_load_phase3] .ApiKeyLoadRestServiceFlow.stage1.02] org.mule.api.processor.LoggerMessageProcessor:启动ApiKeyLoadRestServiceFlow -org.apache.commons.httpclient.ContentLengthInputStream@1517f14 ERROR 2015-12-08 13:09:59,833 [[apikey_load_phase3] .ApiKeyLoadRestServiceFlow.stage1.02] org.mule.exception.DefaultMessagingExceptionStrategy:

消息:无法调用JerseyResourcesComponent {ApiKeyLoadRestServiceFlow.component.14630019}。导致异常的组件是:JerseyResourcesComponent {ApiKeyLoadRestServiceFlow.component.14630019}。消息有效内容的类型为:ContentLengthInputStream

代码:MULE_ERROR - 2

异常堆栈是: 1. null(java.lang.NullPointerException)   org.mule.module.jersey.JerseyResourcesComponent:116(null) 2.无法调用JerseyResourcesComponent {ApiKeyLoadRestServiceFlow.component.14630019}。导致异常的组件是:JerseyResourcesComponent {ApiKeyLoadRestServiceFlow.component.14630019}。消息有效内容的类型为:ContentLengthInputStream(org.mule.component.ComponentException)

org.mule.component.AbstractComponent:144(http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/component/ComponentException.html

Root异常堆栈跟踪: 显示java.lang.NullPointerException     在org.mule.module.jersey.JerseyResourcesComponent.doInvoke(JerseyResourcesComponent.java:116)     at org.mule.component.AbstractComponent.invokeInternal(AbstractComponent.java:122)     在org.mule.component.AbstractComponent.access $ 000(AbstractComponent.java:57)     + 3个以上(设置调试级别日志记录或'-Dmule.verbose.exceptions = true'用于所有内容)

1 个答案:

答案 0 :(得分:0)

Jersey组件需要绑定到http端点,因此不确定它是否可以在VM端点后面工作,因为在传递传输障碍等时,所有http头和请求信息都将丢失。您可以尝试复制来自在vm调用之前入站到出站,但仍然不确定这是否有效。