JSR-356 - Changing to ServerContainer access.
+ Using technique as outlined in JSR-356 spec, Section 6.4
This commit is contained in:
parent
89be2de57f
commit
ca23911075
|
@ -112,6 +112,8 @@ public class JsrAnnotatedEventDriver extends AbstractJsrEventDriver implements E
|
|||
LOG.debug("Binary Message InputStream");
|
||||
final MessageInputStream stream = new MessageInputStream(session.getConnection());
|
||||
activeMessage = stream;
|
||||
|
||||
// Always dispatch streaming read to another thread.
|
||||
dispatch(new Runnable()
|
||||
{
|
||||
@Override
|
||||
|
@ -279,6 +281,7 @@ public class JsrAnnotatedEventDriver extends AbstractJsrEventDriver implements E
|
|||
final MessageReader stream = new MessageReader(new MessageInputStream(session.getConnection()));
|
||||
activeMessage = stream;
|
||||
|
||||
// Always dispatch streaming read to another thread.
|
||||
dispatch(new Runnable()
|
||||
{
|
||||
@Override
|
||||
|
|
|
@ -59,7 +59,7 @@ import org.junit.runners.Parameterized;
|
|||
import org.junit.runners.Parameterized.Parameters;
|
||||
|
||||
@RunWith(Parameterized.class)
|
||||
public class PrimitiveEchoTest
|
||||
public class EchoTest
|
||||
{
|
||||
private static final List<EchoCase[]> TESTCASES = new ArrayList<>();
|
||||
|
||||
|
@ -172,12 +172,21 @@ public class PrimitiveEchoTest
|
|||
// PathParam based
|
||||
EchoCase.add(TESTCASES,IntParamTextSocket.class).requestPath("/echo/primitives/integer/params/5678")
|
||||
.addMessage(1234).expect("1234|5678");
|
||||
|
||||
// Reader based
|
||||
/* NOT WORKING YET
|
||||
EchoCase.add(TESTCASES,ReaderSocket.class).addMessage("Hello World").expect("Hello World");
|
||||
EchoCase.add(TESTCASES,ReaderParamSocket.class).requestPath("/echo/streaming/readerparam/OhNo")
|
||||
.addMessage("Hello World").expect("Hello World|OnNo");
|
||||
EchoCase.add(TESTCASES,StringReturnReaderParamSocket.class).requestPath("/echo/streaming/readerparam2/OhMy")
|
||||
.addMessage("Hello World").expect("Hello World|OhMy");
|
||||
*/
|
||||
}
|
||||
|
||||
@BeforeClass
|
||||
public static void startServer() throws Exception
|
||||
{
|
||||
File testdir = MavenTestingUtils.getTargetTestingDir(PrimitiveEchoTest.class.getName());
|
||||
File testdir = MavenTestingUtils.getTargetTestingDir(EchoTest.class.getName());
|
||||
server = new WSServer(testdir,"app");
|
||||
server.copyWebInf("empty-web.xml");
|
||||
|
||||
|
@ -217,7 +226,7 @@ public class PrimitiveEchoTest
|
|||
|
||||
private EchoCase testcase;
|
||||
|
||||
public PrimitiveEchoTest(EchoCase testcase)
|
||||
public EchoTest(EchoCase testcase)
|
||||
{
|
||||
this.testcase = testcase;
|
||||
System.err.println(testcase);
|
|
@ -25,8 +25,6 @@ import javax.websocket.Endpoint;
|
|||
import javax.websocket.server.ServerContainer;
|
||||
import javax.websocket.server.ServerEndpointConfig;
|
||||
|
||||
import org.eclipse.jetty.websocket.jsr356.server.WebSocketConfiguration;
|
||||
|
||||
/**
|
||||
* Example of adding a server WebSocket (extending {@link Endpoint}) programmatically via config
|
||||
*/
|
||||
|
@ -41,7 +39,7 @@ public class BasicEchoEndpointConfigContextListener implements ServletContextLis
|
|||
@Override
|
||||
public void contextInitialized(ServletContextEvent sce)
|
||||
{
|
||||
ServerContainer container = (ServerContainer)sce.getServletContext().getAttribute(WebSocketConfiguration.JAVAX_WEBSOCKET_SERVER_CONTAINER);
|
||||
ServerContainer container = (ServerContainer)sce.getServletContext().getAttribute(ServerContainer.class.getName());
|
||||
// Build up a configuration with a specific path
|
||||
String path = "/echo";
|
||||
ServerEndpointConfig.Builder builder = ServerEndpointConfig.Builder.create(BasicEchoEndpoint.class,path);
|
||||
|
|
|
@ -20,7 +20,6 @@ package org.eclipse.jetty.websocket.jsr356.server.samples.echo;
|
|||
|
||||
import javax.servlet.ServletContextEvent;
|
||||
import javax.servlet.ServletContextListener;
|
||||
import javax.websocket.ContainerProvider;
|
||||
import javax.websocket.DeploymentException;
|
||||
import javax.websocket.Endpoint;
|
||||
import javax.websocket.server.ServerContainer;
|
||||
|
@ -41,7 +40,7 @@ public class BasicEchoEndpointContextListener implements ServletContextListener
|
|||
@Override
|
||||
public void contextInitialized(ServletContextEvent sce)
|
||||
{
|
||||
ServerContainer container = (ServerContainer)ContainerProvider.getWebSocketContainer();
|
||||
ServerContainer container = (ServerContainer)sce.getServletContext().getAttribute(ServerContainer.class.getName());
|
||||
try
|
||||
{
|
||||
// Should fail as there is no path associated with this endpoint
|
||||
|
|
|
@ -20,7 +20,6 @@ package org.eclipse.jetty.websocket.jsr356.server.samples.echo;
|
|||
|
||||
import javax.servlet.ServletContextEvent;
|
||||
import javax.servlet.ServletContextListener;
|
||||
import javax.websocket.ContainerProvider;
|
||||
import javax.websocket.DeploymentException;
|
||||
import javax.websocket.Endpoint;
|
||||
import javax.websocket.server.ServerContainer;
|
||||
|
@ -40,7 +39,7 @@ public class BasicEchoSocketConfigContextListener implements ServletContextListe
|
|||
@Override
|
||||
public void contextInitialized(ServletContextEvent sce)
|
||||
{
|
||||
ServerContainer container = (ServerContainer)ContainerProvider.getWebSocketContainer();
|
||||
ServerContainer container = (ServerContainer)sce.getServletContext().getAttribute(ServerContainer.class.getName());
|
||||
// Build up a configuration with a specific path
|
||||
// Intentionally using alternate path in config (which differs from @ServerEndpoint declaration)
|
||||
String path = "/echo-alt";
|
||||
|
|
|
@ -20,7 +20,6 @@ package org.eclipse.jetty.websocket.jsr356.server.samples.echo;
|
|||
|
||||
import javax.servlet.ServletContextEvent;
|
||||
import javax.servlet.ServletContextListener;
|
||||
import javax.websocket.ContainerProvider;
|
||||
import javax.websocket.DeploymentException;
|
||||
import javax.websocket.server.ServerContainer;
|
||||
|
||||
|
@ -38,7 +37,7 @@ public class BasicEchoSocketContextListener implements ServletContextListener
|
|||
@Override
|
||||
public void contextInitialized(ServletContextEvent sce)
|
||||
{
|
||||
ServerContainer container = (ServerContainer)ContainerProvider.getWebSocketContainer();
|
||||
ServerContainer container = (ServerContainer)sce.getServletContext().getAttribute(ServerContainer.class.getName());
|
||||
try
|
||||
{
|
||||
container.addEndpoint(BasicEchoSocket.class);
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
//
|
||||
// ========================================================================
|
||||
// Copyright (c) 1995-2013 Mort Bay Consulting Pty. Ltd.
|
||||
// ------------------------------------------------------------------------
|
||||
// All rights reserved. This program and the accompanying materials
|
||||
// are made available under the terms of the Eclipse Public License v1.0
|
||||
// and Apache License v2.0 which accompanies this distribution.
|
||||
//
|
||||
// The Eclipse Public License is available at
|
||||
// http://www.eclipse.org/legal/epl-v10.html
|
||||
//
|
||||
// The Apache License v2.0 is available at
|
||||
// http://www.opensource.org/licenses/apache2.0.php
|
||||
//
|
||||
// You may elect to redistribute this code under either of these licenses.
|
||||
// ========================================================================
|
||||
//
|
||||
|
||||
package org.eclipse.jetty.websocket.jsr356.server.samples.streaming;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Reader;
|
||||
|
||||
import javax.websocket.OnError;
|
||||
import javax.websocket.OnMessage;
|
||||
import javax.websocket.Session;
|
||||
import javax.websocket.server.ServerEndpoint;
|
||||
|
||||
import org.eclipse.jetty.util.IO;
|
||||
import org.eclipse.jetty.util.log.Log;
|
||||
import org.eclipse.jetty.util.log.Logger;
|
||||
import org.eclipse.jetty.websocket.jsr356.server.StackUtil;
|
||||
|
||||
@ServerEndpoint("/echo/streaming/reader")
|
||||
public class ReaderSocket
|
||||
{
|
||||
private static final Logger LOG = Log.getLogger(ReaderSocket.class);
|
||||
|
||||
@OnMessage
|
||||
public String onReader(Reader reader) throws IOException
|
||||
{
|
||||
return IO.toString(reader);
|
||||
}
|
||||
|
||||
@OnError
|
||||
public void onError(Session session, Throwable cause) throws IOException
|
||||
{
|
||||
LOG.warn("Error",cause);
|
||||
session.getBasicRemote().sendText("Exception: " + StackUtil.toString(cause));
|
||||
}
|
||||
}
|
|
@ -32,7 +32,7 @@ import org.eclipse.jetty.util.log.Log;
|
|||
import org.eclipse.jetty.util.log.Logger;
|
||||
import org.eclipse.jetty.websocket.jsr356.server.StackUtil;
|
||||
|
||||
@ServerEndpoint("/stringreaderparam/{param}")
|
||||
@ServerEndpoint("/echo/streaming/readerparam2/{param}")
|
||||
public class StringReturnReaderParamSocket
|
||||
{
|
||||
private static final Logger LOG = Log.getLogger(StringReturnReaderParamSocket.class);
|
||||
|
|
|
@ -2,6 +2,7 @@ org.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.StdErrLog
|
|||
org.eclipse.jetty.LEVEL=WARN
|
||||
|
||||
# org.eclipse.jetty.websocket.LEVEL=DEBUG
|
||||
org.eclipse.jetty.websocket.LEVEL=INFO
|
||||
# org.eclipse.jetty.websocket.LEVEL=WARN
|
||||
# org.eclipse.jetty.websocket.common.io.LEVEL=DEBUG
|
||||
|
||||
|
|
Loading…
Reference in New Issue