调用外部客户端服务以根据输入数据检索数据?

时间:2015-11-27 06:21:07

标签: java spring client apache-camel external

我试图以InOut模式调用外部客户端来交换数据。基本上我想将一些数据发送到第三方网站,作为回应,我将获得一些数据。我尝试使用驼峰cxf,但它不工作,我也使用骆驼spring-ws但不能理解它。 目前我已经制作了一个camel-spring原型项目,其中我使用camelContext.xml来构建我的路线。

<route>
    <from uri="file:src/data?noop=true"/>
    <log message="NextGen Track"/>
    <setExchangePattern pattern="InOut"/>
    <to pattern="InOut" uri="ahc:http://lnx142.us.dnb.com:8192/CommonServices/services/DNBCompanyService/match/"/>
    </route>

此代码给我一个错误

Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------
java.net.ConnectException: http://lnx142.us.dnb.com:8192
    at com.ning.http.client.providers.netty.request.NettyConnectListener.onFutureFailure(NettyConnectListener.java:122)
    at com.ning.http.client.providers.netty.request.NettyConnectListener.operationComplete(NettyConnectListener.java:134)
    at org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:431)
    at org.jboss.netty.channel.DefaultChannelFuture.addListener(DefaultChannelFuture.java:145)
    at com.ning.http.client.providers.netty.request.NettyRequestSender.sendRequestWithNewChannel(NettyRequestSender.java:284)
    at com.ning.http.client.providers.netty.request.NettyRequestSender.sendRequestWithCertainForceConnect(NettyRequestSender.java:140)
    at com.ning.http.client.providers.netty.request.NettyRequestSender.sendRequest(NettyRequestSender.java:115)
    at com.ning.http.client.providers.netty.NettyAsyncHttpProvider.execute(NettyAsyncHttpProvider.java:87)
    at com.ning.http.client.AsyncHttpClient.executeRequest(AsyncHttpClient.java:486)
    at com.ning.http.client.AsyncHttpClient$BoundRequestBuilder.execute(AsyncHttpClient.java:225)
    at org.apache.camel.component.ahc.AhcProducer.process(AhcProducer.java:54)
    at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:129)
    at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)
    at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:448)
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
    at org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:435)
    at org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:211)
    at org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:175)
    at org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:174)
    at org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:101)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask$Sync.innerRunAndReset(Unknown Source)
    at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.nio.channels.UnresolvedAddressException
    at sun.nio.ch.Net.checkAddress(Unknown Source)
    at sun.nio.ch.SocketChannelImpl.connect(Unknown Source)
    at org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink.connect(NioClientSocketPipelineSink.java:108)
    at org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink.eventSunk(NioClientSocketPipelineSink.java:70)
    at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendDownstream(DefaultChannelPipeline.java:779)
    at org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:54)
    at org.jboss.netty.handler.codec.http.HttpClientCodec.handleDownstream(HttpClientCodec.java:97)
    at org.jboss.netty.channel.DefaultChannelPipeline.sendDownstream(DefaultChannelPipeline.java:591)
    at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendDownstream(DefaultChannelPipeline.java:784)
    at org.jboss.netty.handler.stream.ChunkedWriteHandler.handleDownstream(ChunkedWriteHandler.java:109)
    at org.jboss.netty.channel.DefaultChannelPipeline.sendDownstream(DefaultChannelPipeline.java:591)
    at org.jboss.netty.channel.DefaultChannelPipeline.sendDownstream(DefaultChannelPipeline.java:582)
    at org.jboss.netty.channel.Channels.connect(Channels.java:634)
    at org.jboss.netty.channel.AbstractChannel.connect(AbstractChannel.java:207)
    at org.jboss.netty.bootstrap.ClientBootstrap.connect(ClientBootstrap.java:229)
    at org.jboss.netty.bootstrap.ClientBootstrap.connect(ClientBootstrap.java:182)
    at com.ning.http.client.providers.netty.request.NettyRequestSender.connect(NettyRequestSender.java:371)
    at com.ning.http.client.providers.netty.request.NettyRequestSender.sendRequestWithNewChannel(NettyRequestSender.java:283)
    ... 26 more
[1) thread #2 - file://src/data] route1                         INFO  NextGen Track
[1) thread #2 - file://src/data] GenericFileOnCompletion        WARN  Rollback file strategy: org.apache.camel.component.file.strategy.GenericFileRenameProcessStrategy@1c0734d for file: GenericFile[message1.xml]
[1) thread #2 - file://src/data] DefaultErrorHandler            ERROR Failed delivery for (MessageId: ID-PC241549-60923-1448605033535-0-23 on ExchangeId: ID-PC241549-60923-1448605033535-0-24). Exhausted after delivery attempt: 1 caught: java.net.ConnectException: http://lnx142.us.dnb.com:8192

Message History
---------------------------------------------------------------------------------------------------------------------------------------
RouteId              ProcessorId          Processor                                                                        Elapsed (ms)
[route1            ] [route1            ] [file://src/data?noop=true                                                     ] [         2]
[route1            ] [log1              ] [log                                                                           ] [         0]
[route1            ] [setExchangePattern] [setExchangePattern[InOut]                                                     ] [         0]
[route1            ] [to1               ] [ahc:http://lnx142.us.dnb.com:8192/CommonServices/services/DNBCompanyService/ma] [         1]

Exchange
---------------------------------------------------------------------------------------------------------------------------------------
Exchange[
    Id                  ID-PC241549-60923-1448605033535-0-24
    ExchangePattern     InOut
    Headers             {breadcrumbId=ID-PC241549-60923-1448605033535-0-23, CamelFileAbsolute=false, CamelFileAbsolutePath=D:\Jboss-Camel\workspace\NextGenTest\src\data\message1.xml, CamelFileContentType=text/xml, CamelFileLastModified=1448522047683, CamelFileLength=156, CamelFileName=message1.xml, CamelFileNameConsumed=message1.xml, CamelFileNameOnly=message1.xml, CamelFileParent=src\data, CamelFilePath=src\data\message1.xml, CamelFileRelativePath=message1.xml, CamelRedelivered=false, CamelRedeliveryCounter=0}
    BodyType            org.apache.camel.component.file.GenericFile
    Body                [Body is file based: GenericFile[message1.xml]]
]

我也很困惑,我将如何获得响应并存储它。 在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

错误是主机lnx142.us.dnb.com8192端口

的连接例外

如果您想使用AHC组件,请确保服务器在此端口上运行并查看configuration options

或者,您无法测试文件目标,例如:

<to uri="file://src/testcopy" />