Hello,

 

Using embedded Jetty. jetty-home-10.0.11.

 

I have a problem with stopping and destroying and restarting a HttpClient.
When stopping an internal component MessagingGatewayFacebook embedding an
HttpClient instance, it calls closeHttpClient(). When needing to start the
component from a jetty servlet, it calls createHttpClient().

 

private HttpClient httpClient;

 

private void createHttpClient() {

                try {

                               if (httpClient == null) {

                                               SslContextFactory.Client
sslContextFactory = new SslContextFactory.Client(true);

                                               ClientConnector
clientConnector = new ClientConnector();

 
clientConnector.setSslContextFactory(sslContextFactory);

                                               httpClient = new
HttpClient(new HttpClientTransportDynamic(clientConnector));

                                               httpClient.start();

                                               logger.debug("HttpClient " +
httpClient + " started");

                               }

                               httpClient.setConnectTimeout(.);

                               httpClient.setIdleTimeout(.);

                } catch (Exception ex) {

                               logger.error("HttpClient " + httpClient + "
cannot be started", ex);

                               httpClient = null;

                }

}

                

private void closeHttpClient() {

                if (httpClient != null) {

                               try {

                                               httpClient.stop();

                                               httpClient.destroy();

                                               logger.debug("HttpClient " +
httpClient + " stopped");

                               } catch (Exception ex) {

                                               logger.debug("HttpClient " +
httpClient + " cannot be stopped", ex);

                               }

                               httpClient = null;

                }

}

 

closeHttpClient() sets the httpClient to null after stop+destroy on the
client. 

createHttpClient() creates a new HttpClient.

 

Sometimes (it is not always the case), we get this exception on
httpClient.start() showing that the AbstractConnectorHttpClientTransport
cannot be started since it has been destroyed ! 

 

2022-07-28 16:19:36,530 [qtp1875108260-253] ERROR MessagingGatewayFacebook -
HttpClient HttpClient@5900f7df{FAILED} cannot be started [Destroyed
container cannot be restarted]

java.lang.IllegalStateException: Destroyed container cannot be restarted

                at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCyc
le.java:95)

                at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.j
ava:93)

                at
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle
.java:171)

                at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCyc
le.java:121)

                at
org.eclipse.jetty.client.AbstractConnectorHttpClientTransport.doStart(Abstra
ctConnectorHttpClientTransport.java:62)

                at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.j
ava:93)

                at
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle
.java:171)

                at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCyc
le.java:121)

                at
org.eclipse.jetty.client.HttpClient.doStart(HttpClient.java:225)

                at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.j
ava:93)

                at
com.unigone.telserver.gateway.MessagingGatewayFacebook.createHttpClient(Mess
agingGatewayFacebook.java:230)

                at
com.unigone.telserver.gateway.MessagingGatewayFacebook.start(MessagingGatewa
yFacebook.java:121)

                at
com.unigone.telserver.gateway.MessagingGateway.startGateway(MessagingGateway
.java:381)

                at
com.unigone.telserver.MainServer.startMessagingGateway(MainServer.java:1314)

                at
com.unigone.telserver.admin.AdminServer.startGateway(AdminServer.java:4761)

                at
com.unigone.telserver.admin.AdminServlet.handleRequest(AdminServlet.java:239
)

                at
com.unigone.telserver.admin.AdminServlet.doPost(AdminServlet.java:79)

                at
javax.servlet.http.HttpServlet.service(HttpServlet.java:523)

                at
javax.servlet.http.HttpServlet.service(HttpServlet.java:590)

                at
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:764)

                at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:529)

                at
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java
:221)

                at
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java
:1571)

                at
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java
:221)

                at
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java
:1378)

                at
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:
176)

                at
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484)

                at
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:
1544)

                at
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:
174)

                at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:
1300)

                at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129
)

                at
org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:51)

                at
org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:51)

                at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:1
22)

                at org.eclipse.jetty.server.Server.handle(Server.java:562)

                at
org.eclipse.jetty.server.HttpChannel.lambda$handle$0(HttpChannel.java:505)

                at
org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:762)

                at
org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:497)

                at
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:282)

                at
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConne
ction.java:319)

                at
org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)

                at
org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoi
nt.java:53)

                at
org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(Ada
ptiveExecutionStrategy.java:412)

                at
org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask
(AdaptiveExecutionStrategy.java:381)

                at
org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(
AdaptiveExecutionStrategy.java:268)

                at
org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.lambda$new$
0(AdaptiveExecutionStrategy.java:138)

                at
org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(Rese
rvedThreadExecutor.java:407)

                at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:
894)

                at
org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.j
ava:1038)

                at java.base/java.lang.Thread.run(Thread.java:834)

 

I may do something wrong but I don't see where.

Thank you to give a help.

 

Bruno

_______________________________________________
jetty-users mailing list
jetty-users@eclipse.org
To unsubscribe from this list, visit 
https://www.eclipse.org/mailman/listinfo/jetty-users

Reply via email to