Merge pull request #6107 from eclipse/jetty-10.0.x-JavaxWebSocketContainerProvider
Make the JavaxWebSocketClientContainer.getContainer(HttpClient) method static.
This commit is contained in:
commit
b68a5fec2f
|
@ -152,6 +152,46 @@ public interface Container
|
||||||
return Collections.unmodifiableList(new ArrayList<>(getBeans(EventListener.class)));
|
return Collections.unmodifiableList(new ArrayList<>(getBeans(EventListener.class)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A utility method to add a bean to a container.
|
||||||
|
* @param parent the parent container.
|
||||||
|
* @param child the child bean.
|
||||||
|
* @return true if the child was added as a bean, false if parent was not instance of {@link Container} or bean was already present.
|
||||||
|
*/
|
||||||
|
static boolean addBean(Object parent, Object child)
|
||||||
|
{
|
||||||
|
if (parent instanceof Container)
|
||||||
|
return ((Container)parent).addBean(child);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A utility method to add a bean to a container.
|
||||||
|
* @param parent the parent container.
|
||||||
|
* @param child the child bean.
|
||||||
|
* @param managed whether to managed the lifecycle of the bean.
|
||||||
|
* @return true if the child was added as a bean, false if parent was not instance of {@link Container} or bean was already present.
|
||||||
|
*/
|
||||||
|
static boolean addBean(Object parent, Object child, boolean managed)
|
||||||
|
{
|
||||||
|
if (parent instanceof Container)
|
||||||
|
return ((Container)parent).addBean(child, managed);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A utility method to remove a bean from a container.
|
||||||
|
* @param parent the parent container.
|
||||||
|
* @param child the child bean.
|
||||||
|
* @return true if parent was an instance of {@link Container} and the bean was removed.
|
||||||
|
*/
|
||||||
|
static boolean removeBean(Object parent, Object child)
|
||||||
|
{
|
||||||
|
if (parent instanceof Container)
|
||||||
|
return ((Container)parent).removeBean(child);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A listener for Container events.
|
* A listener for Container events.
|
||||||
* If an added bean implements this interface it will receive the events
|
* If an added bean implements this interface it will receive the events
|
||||||
|
|
|
@ -474,9 +474,9 @@ public class ContainerLifeCycle extends AbstractLifeCycle implements Container,
|
||||||
if (listener instanceof InheritedListener && b.isManaged() && b._bean instanceof Container)
|
if (listener instanceof InheritedListener && b.isManaged() && b._bean instanceof Container)
|
||||||
{
|
{
|
||||||
if (b._bean instanceof ContainerLifeCycle)
|
if (b._bean instanceof ContainerLifeCycle)
|
||||||
((ContainerLifeCycle)b._bean).addBean(listener, false);
|
Container.addBean(b._bean, listener, false);
|
||||||
else
|
else
|
||||||
((Container)b._bean).addBean(listener);
|
Container.addBean(b._bean, listener);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -499,8 +499,8 @@ public class ContainerLifeCycle extends AbstractLifeCycle implements Container,
|
||||||
{
|
{
|
||||||
cl.beanRemoved(this, b._bean);
|
cl.beanRemoved(this, b._bean);
|
||||||
|
|
||||||
if (listener instanceof InheritedListener && b.isManaged() && b._bean instanceof Container)
|
if (listener instanceof InheritedListener && b.isManaged())
|
||||||
((Container)b._bean).removeBean(listener);
|
Container.removeBean(b._bean, listener);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -541,9 +541,9 @@ public class ContainerLifeCycle extends AbstractLifeCycle implements Container,
|
||||||
if (l instanceof InheritedListener)
|
if (l instanceof InheritedListener)
|
||||||
{
|
{
|
||||||
if (bean._bean instanceof ContainerLifeCycle)
|
if (bean._bean instanceof ContainerLifeCycle)
|
||||||
((ContainerLifeCycle)bean._bean).addBean(l, false);
|
Container.addBean(bean._bean, l, false);
|
||||||
else
|
else
|
||||||
((Container)bean._bean).addBean(l);
|
Container.addBean(bean._bean, l);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -579,7 +579,7 @@ public class ContainerLifeCycle extends AbstractLifeCycle implements Container,
|
||||||
for (Container.Listener l : _listeners)
|
for (Container.Listener l : _listeners)
|
||||||
{
|
{
|
||||||
if (l instanceof InheritedListener)
|
if (l instanceof InheritedListener)
|
||||||
((Container)bean._bean).removeBean(l);
|
Container.removeBean(bean._bean, l);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bean._managed = Managed.UNMANAGED;
|
bean._managed = Managed.UNMANAGED;
|
||||||
|
|
|
@ -45,6 +45,17 @@
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.eclipse.jetty</groupId>
|
||||||
|
<artifactId>jetty-jmx</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.eclipse.jetty</groupId>
|
||||||
|
<artifactId>jetty-slf4j-impl</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|
|
@ -60,7 +60,7 @@ public class JavaxWebSocketClientContainerProvider extends ContainerProvider
|
||||||
* @param httpClient a pre-configured {@link HttpClient} to be used by the implementation.
|
* @param httpClient a pre-configured {@link HttpClient} to be used by the implementation.
|
||||||
* @see #getContainer()
|
* @see #getContainer()
|
||||||
*/
|
*/
|
||||||
public WebSocketContainer getContainer(HttpClient httpClient)
|
public static WebSocketContainer getContainer(HttpClient httpClient)
|
||||||
{
|
{
|
||||||
JavaxWebSocketClientContainer clientContainer = new JavaxWebSocketClientContainer(httpClient);
|
JavaxWebSocketClientContainer clientContainer = new JavaxWebSocketClientContainer(httpClient);
|
||||||
// See: https://github.com/eclipse-ee4j/websocket-api/issues/212
|
// See: https://github.com/eclipse-ee4j/websocket-api/issues/212
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
|
|
||||||
package examples;
|
package examples;
|
||||||
|
|
||||||
|
import java.lang.management.ManagementFactory;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import javax.websocket.ClientEndpointConfig;
|
import javax.websocket.ClientEndpointConfig;
|
||||||
|
@ -21,9 +22,11 @@ import javax.websocket.WebSocketContainer;
|
||||||
import org.eclipse.jetty.client.HttpClient;
|
import org.eclipse.jetty.client.HttpClient;
|
||||||
import org.eclipse.jetty.client.http.HttpClientTransportOverHTTP;
|
import org.eclipse.jetty.client.http.HttpClientTransportOverHTTP;
|
||||||
import org.eclipse.jetty.io.ClientConnector;
|
import org.eclipse.jetty.io.ClientConnector;
|
||||||
|
import org.eclipse.jetty.jmx.MBeanContainer;
|
||||||
|
import org.eclipse.jetty.util.component.Container;
|
||||||
import org.eclipse.jetty.util.component.LifeCycle;
|
import org.eclipse.jetty.util.component.LifeCycle;
|
||||||
import org.eclipse.jetty.util.ssl.SslContextFactory;
|
import org.eclipse.jetty.util.ssl.SslContextFactory;
|
||||||
import org.eclipse.jetty.websocket.javax.client.internal.JavaxWebSocketClientContainer;
|
import org.eclipse.jetty.websocket.javax.client.JavaxWebSocketClientContainerProvider;
|
||||||
|
|
||||||
public class SecureClientContainerExample
|
public class SecureClientContainerExample
|
||||||
{
|
{
|
||||||
|
@ -76,9 +79,12 @@ public class SecureClientContainerExample
|
||||||
clientConnector.setSslContextFactory(ssl);
|
clientConnector.setSslContextFactory(ssl);
|
||||||
|
|
||||||
HttpClient httpClient = new HttpClient(new HttpClientTransportOverHTTP(clientConnector));
|
HttpClient httpClient = new HttpClient(new HttpClientTransportOverHTTP(clientConnector));
|
||||||
JavaxWebSocketClientContainer clientContainer = new JavaxWebSocketClientContainer(httpClient);
|
WebSocketContainer clientContainer = JavaxWebSocketClientContainerProvider.getContainer(httpClient);
|
||||||
clientContainer.addManaged(httpClient); // allow clientContainer to own httpClient (for start/stop lifecycle)
|
|
||||||
clientContainer.start();
|
// Components can be added as a bean to the WebSocketContainer with the Container static method.
|
||||||
|
MBeanContainer mbeanContainer = new MBeanContainer(ManagementFactory.getPlatformMBeanServer());
|
||||||
|
Container.addBean(clientContainer, mbeanContainer);
|
||||||
|
|
||||||
return clientContainer;
|
return clientContainer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue