tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Niki Dokovski <nick...@gmail.com>
Subject Re: websocket connection (at startup) between 2 webapps in same Tomcat 7.0.47 instance hangs indefinitely
Date Sat, 19 Oct 2013 14:05:57 GMT
On Sat, Oct 19, 2013 at 4:26 PM, Bob DeRemer <bob.deremer@thingworx.com>wrote:

>
>
> > -----Original Message-----
> > From: Niki Dokovski [mailto:nickytd@gmail.com]
> > Sent: Saturday, October 19, 2013 9:24 AM
> > To: Tomcat Developers List
> > Subject: Re: websocket connection (at startup) between 2 webapps in same
> > Tomcat 7.0.47 instance hangs indefinitely
> >
> > On Sat, Oct 19, 2013 at 4:20 PM, Niki Dokovski <nickytd@gmail.com>
> wrote:
> >
> > >
> > >
> > >
> > > On Sat, Oct 19, 2013 at 12:09 AM, Bob DeRemer
> > <bob.deremer@thingworx.com>wrote:
> > >
> > >>  Hi Guys,****
> > >>
> > >> ** **
> > >>
> > >> In our implementation, we have a gateway app that uses jsr websockets
> > >> to communication with our main application server.  In a small
> > >> system, we want to run them both on a single Tomcat instance using
> > >> the same Tomcat NIO connector, but directing to different respective
> > >> WS paths.  This works fine if you deploy the MAIN first, then the GW
> > >> - so that MAIN is already up and running.  If you restart Tomcat when
> > >> both webapps are deployed - and the GW
> > >> (client) starts first, it hangs indefinitely in the following code
> > >> trying to establish a WS connection:
> > >>
> > >
> > > Hi Bob,
> > > Do you use the latest implementation? In your case, if got it
> > > correctly, we have following:
> > >
>
> This was with the latest TAGGED code (7.0.47), not trunk.  If this was a
> known issue that's fixed in TRUNK, let me know and I'll test it out.
>
> Thx - bob
>

I tested with a sample app that has an annotated server endpoint,an
annotated client endpoint and a context listener.
In the listener, I obtain instance of ServerContainer and try to connect to
the server endpoint.
In both implementations (trunk and tc7.0.x) I got

"javax.websocket.DeploymentException: The HTTP response from the server
[HTTP/1.1 404 Not
Found] did not permit the HTTP upgrade to WebSocket"

as expected. However, the response processing is a blocking operation and
can lead to the wait you describe. Can you isolate the case with a test
app? Obviously I'm missing something.

>
>
> >
>
> >
> > >  1. a socket listening - Hence connections are processed
> > >
> >      2. missing application - Hence 404 Not Found status code is
> expected I
> > expect to have 404 response code on initial upgrade request
> >
> > cheers
> > Niki
> >
> >
> > (sorry for previous partial response, hit send by mistake)
> >
> >
> > > ****
> > >>
> > >> ** **
> > >>
> > >> Is this a bug or a known limitation when a client/server in the same
> > >> webapp try to connect at startup?****
> > >>
> > >> ** **
> > >>
> > >> Thanks****
> > >>
> > >> ** **
> > >>
> > >> "localhost-startStop-1" daemon prio=6 tid=0x000000000ef0f800
> > >> nid=0x1624 waiting on condition [0x000000001046e000]****
> > >>
> > >>    java.lang.Thread.State: WAITING (parking)****
> > >>
> > >>        at sun.misc.Unsafe.park(Native Method)****
> > >>
> > >>        - parking to wait for  <0x00000007d6d98b18> (a
> > >> java.util.concurrent.CountDownLatch$Sync)****
> > >>
> > >>        at
> > >> java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)****
> > >>
> > >>        at
> > >> java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInt
> > >> errupt(AbstractQueuedSynchronizer.java:834)
> > >> ****
> > >>
> > >>        at
> > >> java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared
> > >> Interruptibly(AbstractQueuedSynchronizer.java:994)
> > >> ****
> > >>
> > >>        at
> > >> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedIn
> > >> terruptibly(AbstractQueuedSynchronizer.java:1303)
> > >> ****
> > >>
> > >>        at
> > >> java.util.concurrent.CountDownLatch.await(CountDownLatch.java:236)***
> > >> *
> > >>
> > >>        at sun.nio.ch.PendingFuture.get(PendingFuture.java:180)****
> > >>
> > >>        at
> > >>
> > org.apache.tomcat.websocket.WsWebSocketContainer.processResponse(WsWe
> > >> bSocketContainer.java:568)
> > >> ****
> > >>
> > >>        at
> > >>
> > org.apache.tomcat.websocket.WsWebSocketContainer.connectToServer(WsWe
> > >> bSocketContainer.java:317)
> > >> ****
> > >>
> > >>        at
> > >> com.thingworx.core.communication.channels.jsr356.client.Jsr356ClientC
> > >> hannel.connect(Jsr356ClientChannel.java:57)
> > >> ****
> > >>
> > >>        at
> > >>
> > com.thingworx.core.communication.endpoints.CommunicationEndpoint.conn
> > >> ect(CommunicationEndpoint.java:186)
> > >> ****
> > >>
> > >>        at
> > >> com.thingworx.core.communication.CommunicationSubsystem.startSubsyste
> > >> m(CommunicationSubsystem.java:88)
> > >> ****
> > >>
> > >>        at
> > >> com.thingworx.core.subsystems.SubsystemBase.start(SubsystemBase.java:
> > >> 48)*
> > >> ***
> > >>
> > >>        at
> > >> com.thingworx.apiserver.APIServerManager.startSubsystem(APIServerMana
> > >> ger.java:92)
> > >> ****
> > >>
> > >>        at
> > >> com.thingworx.core.subsystems.SubsystemBase.start(SubsystemBase.java:
> > >> 48)*
> > >> ***
> > >>
> > >>        at
> > >> com.thingworx.apiserver.Bootstrapper.contextInitialized(Bootstrapper.
> > >> java:57)
> > >> ****
> > >>
> > >>        at
> > >> org.apache.catalina.core.StandardContext.listenerStart(StandardContex
> > >> t.java:4939)
> > >> ****
> > >>
> > >>        at
> > >> org.apache.catalina.core.StandardContext.startInternal(StandardContex
> > >> t.java:5434)
> > >> ****
> > >>
> > >>        - locked <0x00000007da3e0308> (a
> > >> org.apache.catalina.core.StandardContext)****
> > >>
> > >>        at
> > >> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)*
> > >> ***
> > >>
> > >>        - locked <0x00000007da3e0308> (a
> > >> org.apache.catalina.core.StandardContext)****
> > >>
> > >>        at
> > >> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.
> > >> java:1559)
> > >> ****
> > >>
> > >>        at
> > >> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.
> > >> java:1549)
> > >> ****
> > >>
> > >>        at
> > >> java.util.concurrent.FutureTask.run(FutureTask.java:262)****
> > >>
> > >>        at
> > >> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.
> > >> java:1145)
> > >> ****
> > >>
> > >>        at
> > >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> > >> .java:615)
> > >> ****
> > >>
> > >>        at java.lang.Thread.run(Thread.java:744)****
> > >>
> > >> ** **
> > >>
> > >>    Locked ownable synchronizers:****
> > >>
> > >>        - <0x00000007da3a7ab0> (a
> > >> java.util.concurrent.ThreadPoolExecutor$Worker)****
> > >>
> > >> ** **
> > >>
> > >> ** **
> > >>
> > >> ** **
> > >>
> > >> *Bob DeRemer*
> > >>
> > >> *Senior Director, Architecture and Development*
> > >>
> > >> ** **
> > >>
> > >> [image: Description: Description: Description: Description:
> > >> cid:image001.png@01CBE3DE.51A12030]****
> > >>
> > >> http://www.thingworx.com****
> > >>
> > >> Skype: bob.deremer.thingworx****
> > >>
> > >> O: 610.594.6200 x812****
> > >>
> > >> M: 717.881.3986****
> > >>
> > >> ** **
> > >>
> > >
> > >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message