Re: Setting Nio connector in embedded tomcat7
Hi, Not sure if anyone has used NIO connector in embedded tomcat 7 but I am out of luck so far. It seems so simple but I could not get it work. I am wondering if this is a bug in embedded version of tomcat because it works fine on standalone version. If this turns out to be a bug in tomcat 7 embedded, then I may have to think about moving to Jetty but it would be ideal if I can figure this out with tomcat 7 itself. I am pasting the complete method that create Tomcat instance with NIO connector and starts it. If I don't have NIO connector all rest requests works perfectly. But with this NIO connector I can't connect to server. I looked at the tomcat unit tests and they don't seem to be doing anything special for NIO connector. Any help would be appreciated. public void init() throws LifecycleException, IOException { log.debug(Initializing Tomcat); final File base = createBaseDirectory(); log.info(Using base folder: + base.getAbsolutePath()); final Tomcat tomcat = new Tomcat(); tomcat.setPort(TOMCAT_PORT); tomcat.setBaseDir(base.getAbsolutePath()); Context context = tomcat.addContext(/perfmon, base.getAbsolutePath()); //handle rest requests Wrapper cxfServlet = Tomcat.addServlet(context, CXFServlet, new CXFServlet()); cxfServlet.addInitParameter(config-location, classpath:perfmon-rest-server.xml); cxfServlet.setLoadOnStartup(1); context.addServletMapping(/rest/*, CXFServlet); context.addApplicationListener(ContextLoaderListener.class.getName()); context.setLoader(new WebappLoader(Thread.currentThread().getContextClassLoader())); //atmosphere websocket support Wrapper atmosphereServlet = Tomcat.addServlet(context, AtmosphereServlet, new TomcatAtmosphereServlet()); atmosphereServlet .addInitParameter(org.atmosphere.cpr.packages, com.kiva.perfmon.prototype.pubsub.websocket); atmosphereServlet.setLoadOnStartup(0); context.addServletMapping(/pubsub/*, AtmosphereServlet); context.addParameter(contextConfigLocation, classpath:perfmon-context.xml); // add nio connector for websocket support Connector nioConnector = new Connector(Http11NioProtocol.class.getName()); nioConnector.setPort(TOMCAT_PORT); nioConnector.setProperty(address, InetAddress.getByName(localhost).getHostAddress()); tomcat.setConnector(nioConnector); tomcat.start(); tomcat.getServer().await(); } Thanks in advance. Praveen On 4/23/13 Apr 23, 12:21 PM, Praveen Peddi ppe...@kivasystems.com wrote: Sorry I meant nio connector not bio connector. Outlook auto-correct is not smart enough :) On 4/23/13 Apr 23, 12:08 PM, Praveen Peddi ppe...@kivasystems.com wrote: I am not sure if this is the same issue I am having but apparently I am also using atmosphere for web sockets and make it work in embedded tomcat. I looked at the tomcat unit tests for bio connector and the tests are not doing anything special. They set the address to localhost. I tried the below code similar to the unit tests but I still can't connect to tomcat when I use this connector. Connector nioConnector = new Connector(Http11NioProtocol.class.getName()); nioConnector.setPort(TOMCAT_PORT); nioConnector.setProperty(address, InetAddress.getByName(localhost).getHostAddress()); tomcat.setConnector(nioConnector); Unit test I saw is here: http://svn.apache.org/repos/asf/tomcat/trunk/test/org/apache/catalina/non b l ocking/TestNonBlockingAPI.java And http://svn.apache.org/repos/asf/tomcat/trunk/test/org/apache/catalina/sta r t up/TomcatBaseTest.java Thanks Praveen On 4/23/13 Apr 23, 10:40 AM, Tribon Cheng tribon1...@gmail.com wrote: Just like this issue: http://atmosphere-framework.2306103.n4.nabble.com/WebSocket-not-working- o n -Tomcat-7-With-NIO-connector-was-WebSocket-not-working-on-Tomcat-7-td465 2 3 51.html On Tue, Apr 23, 2013 at 10:16 PM, Mark Thomas ma...@apache.org wrote: On 23/04/2013 15:11, Praveen Peddi wrote: Hi all, I am trying to set Nio connector in tomcat7 so I can use WebSocket support. I did the following (as simple as it can get) but it doesn't seem to work. When I do this I can't connect to the server. For example I have a GET REST request that should work but I get connection refused. Same with WebSocket request. Connector nioConnector = new Connector(); nioConnector.setPort(TOMCAT_PORT); nioConnector.setProtocol(Http11NioProtocol.class.getName()); tomcat.setConnector(nioConnector); If I comment out above lines and use default Http connector, REST requests work fine but WebSockets are not supported with default
Setting Nio connector in embedded tomcat7
Hi all, I am trying to set Nio connector in tomcat7 so I can use WebSocket support. I did the following (as simple as it can get) but it doesn't seem to work. When I do this I can't connect to the server. For example I have a GET REST request that should work but I get connection refused. Same with WebSocket request. Connector nioConnector = new Connector(); nioConnector.setPort(TOMCAT_PORT); nioConnector.setProtocol(Http11NioProtocol.class.getName()); tomcat.setConnector(nioConnector); If I comment out above lines and use default Http connector, REST requests work fine but WebSockets are not supported with default http connector. So I am wondering if anyone has enabled bio connector in embedded tomcat before. I am using embedded tomcat 7.0.34. Thanks in advance. Praveen
Re: Setting Nio connector in embedded tomcat7
I am not sure if this is the same issue I am having but apparently I am also using atmosphere for web sockets and make it work in embedded tomcat. I looked at the tomcat unit tests for bio connector and the tests are not doing anything special. They set the address to localhost. I tried the below code similar to the unit tests but I still can't connect to tomcat when I use this connector. Connector nioConnector = new Connector(Http11NioProtocol.class.getName()); nioConnector.setPort(TOMCAT_PORT); nioConnector.setProperty(address, InetAddress.getByName(localhost).getHostAddress()); tomcat.setConnector(nioConnector); Unit test I saw is here: http://svn.apache.org/repos/asf/tomcat/trunk/test/org/apache/catalina/nonbl ocking/TestNonBlockingAPI.java And http://svn.apache.org/repos/asf/tomcat/trunk/test/org/apache/catalina/start up/TomcatBaseTest.java Thanks Praveen On 4/23/13 Apr 23, 10:40 AM, Tribon Cheng tribon1...@gmail.com wrote: Just like this issue: http://atmosphere-framework.2306103.n4.nabble.com/WebSocket-not-working-on -Tomcat-7-With-NIO-connector-was-WebSocket-not-working-on-Tomcat-7-td46523 51.html On Tue, Apr 23, 2013 at 10:16 PM, Mark Thomas ma...@apache.org wrote: On 23/04/2013 15:11, Praveen Peddi wrote: Hi all, I am trying to set Nio connector in tomcat7 so I can use WebSocket support. I did the following (as simple as it can get) but it doesn't seem to work. When I do this I can't connect to the server. For example I have a GET REST request that should work but I get connection refused. Same with WebSocket request. Connector nioConnector = new Connector(); nioConnector.setPort(TOMCAT_PORT); nioConnector.setProtocol(Http11NioProtocol.class.getName()); tomcat.setConnector(nioConnector); If I comment out above lines and use default Http connector, REST requests work fine but WebSockets are not supported with default http connector. Yes they are. So I am wondering if anyone has enabled bio connector in embedded tomcat before. I am using embedded tomcat 7.0.34. You mean NIO right? Look at the source code for the unit tests and/or the source code for Connector. You aren't changing what you think you are changing. (Too many attributes call Protocol or something similar). Mark - To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org -- Contribute to Enterprise Integration - To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org
Re: Setting Nio connector in embedded tomcat7
Sorry I meant nio connector not bio connector. Outlook auto-correct is not smart enough :) On 4/23/13 Apr 23, 12:08 PM, Praveen Peddi ppe...@kivasystems.com wrote: I am not sure if this is the same issue I am having but apparently I am also using atmosphere for web sockets and make it work in embedded tomcat. I looked at the tomcat unit tests for bio connector and the tests are not doing anything special. They set the address to localhost. I tried the below code similar to the unit tests but I still can't connect to tomcat when I use this connector. Connector nioConnector = new Connector(Http11NioProtocol.class.getName()); nioConnector.setPort(TOMCAT_PORT); nioConnector.setProperty(address, InetAddress.getByName(localhost).getHostAddress()); tomcat.setConnector(nioConnector); Unit test I saw is here: http://svn.apache.org/repos/asf/tomcat/trunk/test/org/apache/catalina/nonb l ocking/TestNonBlockingAPI.java And http://svn.apache.org/repos/asf/tomcat/trunk/test/org/apache/catalina/star t up/TomcatBaseTest.java Thanks Praveen On 4/23/13 Apr 23, 10:40 AM, Tribon Cheng tribon1...@gmail.com wrote: Just like this issue: http://atmosphere-framework.2306103.n4.nabble.com/WebSocket-not-working-o n -Tomcat-7-With-NIO-connector-was-WebSocket-not-working-on-Tomcat-7-td4652 3 51.html On Tue, Apr 23, 2013 at 10:16 PM, Mark Thomas ma...@apache.org wrote: On 23/04/2013 15:11, Praveen Peddi wrote: Hi all, I am trying to set Nio connector in tomcat7 so I can use WebSocket support. I did the following (as simple as it can get) but it doesn't seem to work. When I do this I can't connect to the server. For example I have a GET REST request that should work but I get connection refused. Same with WebSocket request. Connector nioConnector = new Connector(); nioConnector.setPort(TOMCAT_PORT); nioConnector.setProtocol(Http11NioProtocol.class.getName()); tomcat.setConnector(nioConnector); If I comment out above lines and use default Http connector, REST requests work fine but WebSockets are not supported with default http connector. Yes they are. So I am wondering if anyone has enabled bio connector in embedded tomcat before. I am using embedded tomcat 7.0.34. You mean NIO right? Look at the source code for the unit tests and/or the source code for Connector. You aren't changing what you think you are changing. (Too many attributes call Protocol or something similar). Mark - To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org -- Contribute to Enterprise Integration - To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org - To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org