« Return to Thread: CXF WS Proxy Hangs

Re: CXF WS Proxy Hangs

by redijedi :: Rate this Message:

Reply to Author | View in Thread

This appears to have something to do with Mule not being able to
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
me to believe it might have something to do with CXF, but non-proxied
WS do work fine with the same unit test:

org.apache.cxf.interceptor.Fault: Could not create XMLStreamReader
(input was of encoding UTF-8).
        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.model.seda.SedaService.doSend(SedaService.java:237)
        at org.mule.service.AbstractService.sendEvent(AbstractService.java:510)
        at org.mule.DefaultMuleSession.sendEvent(DefaultMuleSession.java:354)
        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 org.mule.work.WorkerContext.run(WorkerContext.java:310)
        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 java.lang.Thread.run(Thread.java:595)
Caused by: com.ctc.wstx.exc.WstxIOException: chunked stream ended unexpectedly
        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
Caused by: java.io.IOException: chunked stream ended unexpectedly
        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.UTF8Reader.loadMore(UTF8Reader.java:365)
        at com.ctc.wstx.io.UTF8Reader.read(UTF8Reader.java:110)
        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


Perhaps its the version of CXF that Mule is working with?

On Fri, Oct 3, 2008 at 11:08 PM, Todd Orr <torr0101@...> wrote:

> 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
>>>
>>
>

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


 « Return to Thread: CXF WS Proxy Hangs