簡體   English   中英

如何使用VM組件在Mule中配置REST Web服務

[英]How to configure REST webservice in Mule with VM components

我有一個在Mule中公開REST Web服務的要求。我有以下Mule:

<flow name="MainService" doc:name="MainService">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8082" doc:name="HTTP" contentType="application/json"/>
<logger  level="INFO" doc:name="RequestLogger" message="#[message.inboundProperties['http.context.path']]     #[message.inboundProperties['http.request']] "/>
<set-property propertyName="HTTP_REQUEST_PROPERTY" value=" #[message.inboundProperties['http.request']]" doc:name="Property"/>
<set-property propertyName="HTTP_CONTEXT_PATH_PROPERTY" value="#[message.inboundProperties['http.context.path']]" doc:name="Property"/>

<mulexml:object-to-xml-transformer acceptMuleMessage="true" doc:name="Object to XML"/>
<logger message="Pay :- #[message.payload]" level="INFO" doc:name="Logger"/>
<vm:outbound-endpoint exchange-pattern="request-response" path="Flow1-WT-Main" doc:name="VM"/>
<logger message="ResponseLog :- #[message.payloadAs(java.lang.String)]" level="INFO" doc:name="Logger"/>
</flow>

<flow name="testFlow1" doc:name="testFlow1" initialState="started">
<vm:inbound-endpoint exchange-pattern="request-response" path="Flow1-WT-Main" doc:name="VM"/> 
<mulexml:xml-to-object-transformer doc:name="XML to Object"/>
<jersey:resources doc:name="REST">
<component class="com.test.services.schema.maindata.v1.Impl.MainDataImpl">
   <method-entry-point-resolver>
        <include-entry-point method="retrieveDataOperation"/>
        <include-entry-point method="insertDataOperation"/>
        <include-entry-point method="updateDataOperation"/>
        <include-entry-point method="deleteDataOperation"/>
   </method-entry-point-resolver>
</component>
</jersey:resources>
</flow>

現在..每當我運行應用程序並觸發Web服務時,我都會收到以下異常:-

ERROR 2014-08-11 19:23:27,861 [[RESTWebServiceWithVM].connector.http.mule.default.receiver.02] org.mule.exception.DefaultMessagingExceptionStrategy: 
********************************************************************************
Message               : Failed to invoke JerseyResourcesComponent{testFlow1.component.1947219057}. Component that caused exception is: JerseyResourcesComponent{testFlow1.component.1947219057}. Message payload is of type: String
Code                  : MULE_ERROR--2
--------------------------------------------------------------------------------
Exception stack is:
1. null (java.lang.NullPointerException)
  org.mule.module.jersey.JerseyResourcesComponent:116 (null)
2. Failed to invoke JerseyResourcesComponent{testFlow1.component.1947219057}. Component that caused exception is: JerseyResourcesComponent{testFlow1.component.1947219057}. Message payload is of type: String (org.mule.component.ComponentException)
  org.mule.component.AbstractComponent:144 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/component/ComponentException.html)
--------------------------------------------------------------------------------
Root Exception stack trace:
java.lang.NullPointerException
    at org.mule.module.jersey.JerseyResourcesComponent.doInvoke(JerseyResourcesComponent.java:116)
    at org.mule.component.AbstractComponent.invokeInternal(AbstractComponent.java:122)
    at org.mule.component.AbstractComponent.access$000(AbstractComponent.java:57)
    + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************

INFO  2014-08-11 19:23:27,907 [[RESTWebServiceWithVM].connector.http.mule.default.receiver.02] org.mule.api.processor.LoggerMessageProcessor: ResponseLog :- {NullPayload}

調試應用程序之后..發現從VM入站端點來的有效負載中獲取HTTP_REQUEST_PROPERTYHTTP_CONTEXT_PATH_PROPERTY的Null值。出於這個原因,我嘗試在第一個流程中顯式設置HTTP_CONTEXT_PATH_PROPERTY和HTTP_REQUEST_PROPERTY,如下所示:-

<set-property propertyName="HTTP_REQUEST_PROPERTY" value=" #[message.inboundProperties['http.request']]" doc:name="Property"/>
<set-property propertyName="HTTP_CONTEXT_PATH_PROPERTY" value="#[message.inboundProperties['http.context.path']]" doc:name="Property"/>

但是仍然會引發相同的異常..如果它是Mule中的Bug ..是否有任何解決方法? 是否可以公開使用VM配置的REST Web服務? 請幫忙

  • 刪除兩個XML轉換器
  • 刪除兩個set-property
  • 添加:在HTTP入站和VM出站之間, <copy-properties propertyName="http.*" doc:name="Copy All HTTP Headers"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM