2015-10-30 84 views
2

我有一個訪問REST服務的駱駝路由。事情工作正常,如果REST響應是200好的。但是,如果響應是404,則REST服務會返回有效負載中的一些其他信息,而我無法找到訪問方式。如何從Camel cxfrs中的REST 404響應中訪問有效內容?

這是從運行它的調試日誌的一部分:

[Camel (rraaCamelContext) thread #2 - seda://from_rraa] INFO org.apache.cxf.interceptor.LoggingInInterceptor - Inbound Message 
---------------------------- 
ID: 2 
Response-Code: 404 
Encoding: ISO-8859-1 
Content-Type: application/json 
Headers: {Accept=[application/json], breadcrumbId=[ID-Steves-MacBook-Pro-local-53701-1446241733043-1-7], content-type=[application/json], OriginalHeader=[{name=VerifyEmployeeRequest, version=1, scac=rraa, timeSent=null, uuid=abcd-1234}], pin=[1234], reason=[INIT], Server=[Jetty(9.2.11.v20150529)], transfer-encoding=[chunked], User-Agent=[Apache CXF 3.1.2]} 
Payload: { "employeeID": "bad-name", "message": "id not found" } 

我的路線設置爲:

<route id="rraaIss"> 
    <from uri="seda:from_rraa"/> 
    <process ref="issPreprocessor"/> 
    <unmarshal ref="IssRequest"/> 
    <process ref="webServiceProcessor"/> 
    <to uri="cxfrs:bean:webService"/> 
    <onException> 
    <exception>javax.ws.rs.NotFoundException</exception> 
    <handled><constant>true</constant></handled> 
    <to uri="bean:crewServiceNotFoundProcessor"/> 
    </onException> 
    <process ref="packageWebServiceReplyForIss"/> 
    <to uri="seda:to_rraa"/> 
</route> 

crewServiceNotFoundProcessor豆被調用時,響應404它可以看到異常,但是我怎樣才能從原始的HTTP響應中獲得有效載荷?

回答

0

我現在有這個工作。主要的問題是,我所定義的REST操作:

@GET 
@Path(value="/authentication/{scac}/employees/{id}") 
@Produces({ MediaType.APPLICATION_JSON }) 
public String verifyEmployee(@PathParam("scac") String scac, 
          @PathParam("id") String id, 
          @QueryParam("pin") String pin, 
          @QueryParam("reason") String reason); 

當我改變了返回類型從字符串成響應,完全緩解現已有售,並且throwExceptionOnFailure = false選項現在工作也。所以,這是一個新手的錯誤。