execute multiple CXF WS calls in a row. I have a unit test that makes
one single call to the proxied WS and it works fine. If I loop that
call more than once Mule just hangs. The following stack trace leads
at org.apache.cxf.interceptor.StaxInInterceptor.handleMessage(StaxInInterceptor.java:83)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:77)
at org.mule.transport.cxf.CxfServiceComponent.sendToDestination(CxfServiceComponent.java:290)
at org.mule.transport.cxf.CxfServiceComponent.onCall(CxfServiceComponent.java:115)
at org.mule.model.resolvers.CallableEntryPointResolver.invoke(CallableEntryPointResolver.java:52)
at org.mule.model.resolvers.DefaultEntryPointResolverSet.invoke(DefaultEntryPointResolverSet.java:50)
at org.mule.component.DefaultLifecycleAdapter.intercept(DefaultLifecycleAdapter.java:202)
at org.mule.component.AbstractJavaComponent.invokeComponentInstance(AbstractJavaComponent.java:84)
at org.mule.component.AbstractJavaComponent.doOnCall(AbstractJavaComponent.java:75)
at org.mule.component.AbstractComponent.onCall(AbstractComponent.java:96)
at org.mule.service.AbstractService.sendEvent(AbstractService.java:510)
at org.mule.routing.inbound.DefaultInboundRouterCollection.send(DefaultInboundRouterCollection.java:221)
at org.mule.routing.inbound.DefaultInboundRouterCollection.route(DefaultInboundRouterCollection.java:181)
at org.mule.transport.AbstractMessageReceiver$DefaultInternalMessageListener.onMessage(AbstractMessageReceiver.java:603)
at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:346)
at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:287)
at org.mule.transport.http.HttpMessageReceiver$HttpWorker.doRequest(HttpMessageReceiver.java:271)
at org.mule.transport.http.HttpMessageReceiver$HttpWorker.processRequest(HttpMessageReceiver.java:229)
at org.mule.transport.http.HttpMessageReceiver$HttpWorker.run(HttpMessageReceiver.java:189)
at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1061)
at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:575)
at com.ctc.wstx.stax.WstxInputFactory.doCreateSR(WstxInputFactory.java:548)
at com.ctc.wstx.stax.WstxInputFactory.createSR(WstxInputFactory.java:604)
at com.ctc.wstx.stax.WstxInputFactory.createSR(WstxInputFactory.java:629)
at com.ctc.wstx.stax.WstxInputFactory.createXMLStreamReader(WstxInputFactory.java:324)
at org.apache.cxf.interceptor.StaxInInterceptor.handleMessage(StaxInInterceptor.java:81)
... 25 more
at org.apache.commons.httpclient.ChunkedInputStream.getChunkSizeFromInputStream(ChunkedInputStream.java:252)
at org.apache.commons.httpclient.ChunkedInputStream.nextChunk(ChunkedInputStream.java:221)
at org.apache.commons.httpclient.ChunkedInputStream.read(ChunkedInputStream.java:176)
at org.apache.commons.httpclient.ChunkedInputStream.read(ChunkedInputStream.java:196)
at com.ctc.wstx.io.ReaderBootstrapper.initialLoad(ReaderBootstrapper.java:245)
at com.ctc.wstx.io.ReaderBootstrapper.bootstrapInput(ReaderBootstrapper.java:132)
at com.ctc.wstx.stax.WstxInputFactory.doCreateSR(WstxInputFactory.java:543)
... 29 more
> Here's some of the stack. Perhaps this is really simple and I'm just
> an idiot. Please, I'd love that to be the case. Just please clue me
> in. Thanks:
>
> [10-03 23:05:22] ERROR InputStreamRequestEntity [connector.http.0.receiver.4]: c
> hunked stream ended unexpectedly
> Unable to get the current logfile size with stat: The filename, directory name,
> or volume label syntax is incorrect. (0x7b)
> java.io.IOException: chunked stream ended unexpectedly
> at org.apache.commons.httpclient.ChunkedInputStream.getChunkSizeFromInpu
> tStream(ChunkedInputStream.java:252)
> at org.apache.commons.httpclient.ChunkedInputStream.nextChunk(ChunkedInp
> utStream.java:221)
> at org.apache.commons.httpclient.ChunkedInputStream.read(ChunkedInputStr
> eam.java:176)
> at org.apache.commons.httpclient.ChunkedInputStream.read(ChunkedInputStr
> eam.java:196)
> at org.apache.commons.httpclient.methods.InputStreamRequestEntity.buffer
> Content(InputStreamRequestEntity.java:136)
> at org.apache.commons.httpclient.methods.InputStreamRequestEntity.getCon
> tentLength(InputStreamRequestEntity.java:187)
> at org.apache.commons.httpclient.methods.EntityEnclosingMethod.getReques
> tContentLength(EntityEnclosingMethod.java:336)
> at org.apache.commons.httpclient.methods.EntityEnclosingMethod.addConten
> tLengthRequestHeader(EntityEnclosingMethod.java:406)
> at org.apache.commons.httpclient.methods.EntityEnclosingMethod.addReques
> tHeaders(EntityEnclosingMethod.java:374)
> at org.apache.commons.httpclient.HttpMethodBase.writeRequestHeaders(Http
> MethodBase.java:2177)
> at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodB
> ase.java:2060)
> at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.j
> ava:1096)
> at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(Htt
> pMethodDirector.java:398)
> at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMe
> thodDirector.java:171)
> at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.jav
> a:397)
> at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.jav
> a:346)
> at org.mule.transport.http.HttpClientMessageDispatcher.execute(HttpClien
> tMessageDispatcher.java:109)
> at org.mule.transport.http.HttpClientMessageDispatcher.doSend(HttpClient
> MessageDispatcher.java:243)
> at org.mule.transport.AbstractMessageDispatcher.send(AbstractMessageDisp
> atcher.java:157)
> at org.mule.transport.AbstractConnector.send(AbstractConnector.java:1890
> )
> at org.mule.endpoint.DefaultOutboundEndpoint.send(DefaultOutboundEndpoin
> t.java:76)
> at org.mule.DefaultMuleSession.sendEvent(DefaultMuleSession.java:327)
> at org.mule.DefaultMuleSession.sendEvent(DefaultMuleSession.java:213)
> at org.mule.routing.outbound.AbstractOutboundRouter$2.doInTransaction(Ab
> stractOutboundRouter.java:148)
> at org.mule.transaction.TransactionTemplate.execute(TransactionTemplate.
> java:99)
> at org.mule.routing.outbound.AbstractOutboundRouter.send(AbstractOutboun
> dRouter.java:155)
> at org.mule.routing.outbound.FilteringOutboundRouter.route(FilteringOutb
> oundRouter.java:68)
> at org.mule.routing.outbound.OutboundPassThroughRouter.route(OutboundPas
> sThroughRouter.java:70)
> at org.mule.routing.outbound.DefaultOutboundRouterCollection$1.doInTrans
> action(DefaultOutboundRouterCollection.java:64)
> at org.mule.transaction.TransactionTemplate.execute(TransactionTemplate.
> java:45)
> at org.mule.routing.outbound.DefaultOutboundRouterCollection.route(Defau
> ltOutboundRouterCollection.java:69)
> at org.mule.service.AbstractService.sendToOutboundRouter(AbstractService
> .java:904)
> at org.mule.model.seda.SedaService.doSend(SedaService.java:238)
> at org.mule.service.AbstractService.sendEvent(AbstractService.java:510)
> at org.mule.DefaultMuleSession.sendEvent(DefaultMuleSession.java:354)
> at org.mule.routing.inbound.DefaultInboundRouterCollection.send(DefaultI
> nboundRouterCollection.java:221)
> at org.mule.routing.inbound.DefaultInboundRouterCollection.route(Default
> InboundRouterCollection.java:181)
> at org.mule.transport.AbstractMessageReceiver$DefaultInternalMessageList
> ener.onMessage(AbstractMessageReceiver.java:603)
> at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessa
> geReceiver.java:346)
> at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessa
> geReceiver.java:287)
> at org.mule.transport.http.HttpMessageReceiver$HttpWorker.doRequest(Http
> MessageReceiver.java:271)
> at org.mule.transport.http.HttpMessageReceiver$HttpWorker.processRequest
> (HttpMessageReceiver.java:229)
> at org.mule.transport.http.HttpMessageReceiver$HttpWorker.run(HttpMessag
> eReceiver.java:189)
> at org.mule.work.WorkerContext.run(WorkerContext.java:310)
> at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.run
> Worker(ThreadPoolExecutor.java:1061)
> at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Wor
> ker.run(ThreadPoolExecutor.java:575)
> at java.lang.Thread.run(Unknown Source)
>
>
> On Fri, Oct 3, 2008 at 12:56 PM, Todd Orr <
torr0101@...> wrote:
>> Here's some of the Mule stdout if it helps:
>>
>> ********************************************************************************
>>
>> ERROR 2008-10-03 12:08:05,793 [connector.http.0.receiver.4]
>> org.mule.service.DefaultServiceExceptionStrategy:
>> ********************************************************************************
>> Message : Failed to route event via endpoint:
>> DefaultOutboundEndpoint{endpointUri=
http://localhost:8080/service/soap,
>> connector=HttpConnector{this=26f9e5, started=true, initialised=true,
>> name='connector.http.0', disposed=false,
>> numberOfConcurrentTransactedReceivers=4,
>> createMultipleTransactedReceivers=true, connected=true,
>> supportedProtocols=[http], serviceOverrides=null},
>> transformer=[ObjectToHttpClientMethodRequest{this=edbe39, name='null',
>> ignoreBadInput=false, returnClass=interface
>> org.apache.commons.httpclient.HttpMethod, sourceTypes=[interface
>> org.mule.api.MuleMessage, class [B, class java.lang.String, class
>> java.io.InputStream, interface org.mule.api.transport.OutputHandler,
>> class org.mule.transport.NullPayload]}],
>> name='endpoint.http.localhost.8080.service.soap', properties={},
>> transactionConfig=Transaction{factory=null, action=NEVER, timeout=0},
>> filter=null, deleteUnacceptedMessages=false, securityFilter=null,
>> synchronous=true, initialState=started, remoteSync=true,
>> remoteSyncTimeout=3000, endpointEncoding=UTF-8}. Message payload is of
>> type: PostMethod
>> Type : org.mule.api.transport.DispatchException
>> Code : MULE_ERROR-42999
>> JavaDoc :
>>
http://mule.mulesource.org/docs/apidocs/org/mule/api/transport/DispatchException.html>> Payload : org.apache.commons.httpclient.methods.PostMethod@1dfd90f
>> ********************************************************************************
>> Exception stack is:
>> 1. Content must be set before entity is written
>> (java.lang.IllegalStateException)
>> org.apache.commons.httpclient.methods.InputStreamRequestEntity:177
>> (
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalStateException.html)
>> 2. Failed to route event via endpoint:
>> DefaultOutboundEndpoint{endpointUri=
http://localhost:8080/service/soap,
>> connector=HttpConnector{this=26f9e5, started=true, initialised=true,
>> name='connector.http.0', disposed=false,
>> numberOfConcurrentTransactedReceivers=4,
>> createMultipleTransactedReceivers=true, connected=true,
>> supportedProtocols=[http], serviceOverrides=null},
>> transformer=[ObjectToHttpClientMethodRequest{this=edbe39, name='null',
>> ignoreBadInput=false, returnClass=interface
>> org.apache.commons.httpclient.HttpMethod, sourceTypes=[interface
>> org.mule.api.MuleMessage, class [B, class java.lang.String, class
>> java.io.InputStream, interface org.mule.api.transport.OutputHandler,
>> class org.mule.transport.NullPayload]}],
>> name='endpoint.http.localhost.8080.service.soap', properties={},
>> transactionConfig=Transaction{factory=null, action=NEVER, timeout=0},
>> filter=null, deleteUnacceptedMessages=false, securityFilter=null,
>> synchronous=true, initialState=started, remoteSync=true,
>> remoteSyncTimeout=3000, endpointEncoding=UTF-8}. Message payload is of
>> type: PostMethod (org.mule.api.transport.DispatchException)
>> org.mule.transport.http.HttpClientMessageDispatcher:120
>> (
http://mule.mulesource.org/docs/apidocs/org/mule/api/transport/DispatchException.html)
>> ********************************************************************************
>>
>> On Fri, Oct 3, 2008 at 12:25 PM, Todd Orr <
torr0101@...> wrote:
>>> I'm attempting to simply proxy an existing WS for version management,
>>> etc. At this point all I'm trying to do is simply pass requests from
>>> the new endpoint to the existing one. I've read this doc
>>> (
http://www.mulesource.org/display/MULE2USER/Proxying+Web+Services) on
>>> how to do it, but it's not working out so well. My config is as
>>> follows:
>>>
>>>
>>> <service name="service">
>>>
>>> <inbound>
>>>
>>> <cxf:inbound-endpoint
>>> address="
http://localhost:63081/service"
>>> proxy="true" />
>>>
>>> </inbound>
>>>
>>>
>>> <outbound>
>>>
>>> <outbound-pass-through-router>
>>>
>>> <cxf:outbound-endpoint
>>> address="
http://localhost:8080/service/soap"
>>> proxy="true" />
>>>
>>> </outbound-pass-through-router>
>>>
>>> </outbound>
>>>
>>> </service>
>>>
>>>
>>> This appears to be inline with the doc. The first thing I noted is
>>> that it's not presenting the proxied WSDL. The original WSDL at
>>>
http://localhost:8080/service/soap?wsdl is correct, but the WSDL at
>>>
http://localhost:63081/service?wsdl refers to the ProxyService and is
>>> completely different. However, the client can still connect, so I'm
>>> willing to live with this oddity if I can get this functional even
>>> though it'd be nice to not have to.
>>>
>>> The bigger issue is that when a client that was previously working
>>> when configured to hit the original service address attempts to use
>>> the new address it hangs, then times out. Looking at the stdout of
>>> mule I see that it receives and passes on a request, but immediately
>>> closing the HTTP connections. It hangs too until it times out. Upon
>>> timing out, or maybe just before (it happens very quickly) something
>>> is sent to the original address, but it appears as if no parameters
>>> are sent. I get output on the stdout of the JBoss instance hosting the
>>> original service that shows that the correct operation was called, but
>>> with no arguments.
>>>
>>> I've fiddled with all combinations of synchronous and asyncRemote with
>>> no change.
>>>
>>> This is day 2 of trying to solve this. I've already googled the crap
>>> out of the issue and am officially tired. Any help is greatly
>>> appreciated.
>>>
>>> Thanks,
>>> T
>>>
>>
>