users@grizzly.java.net

Re: SEVERE error thrown with grizzly-http-webserver-1.7.2 - SOLVED BOTH THAT and HTTPS example question

From: Danijel <danijel.bjelajac_at_gmail.com>
Date: Thu, 13 Mar 2008 03:00:02 -0700 (PDT)

Hello Jeanfrancois,

I'm kind of out of time for bloging and tutorial writing right now,
but as soon as I can I'm opened to writing about my expiriences.

If I find time to do that, where do I submit my blog or tutorial,
can you give me some link.

Thanks.
--
Danijel
Jeanfrancois Arcand-2 wrote:
> 
> Hi Danijel,
> 
> really sorry I completely forgot to look at it :-( Thanks for updating 
> this list...next time ping us when you don't get a response :-)
> 
> Danijel wrote:
>> Hello All,
>> 
>> just to let you know that I've figured out this HTTPS support problem.
>> :clap:
>> I did not set up SSLImplementation and my algorithm was wrong one
>> 
>> Here is the code for working EmbeddedSSLServer in case somebody is
>> interested in it
> 
> Can you blog about it or write a simple tutorial :-) If not, for sure I 
> will refer to this email if the question come back!!!
> 
> Thanks!
> 
> -- Jeanfrancois
> 
> 
>> 
>> import java.net.HttpURLConnection;
>> import java.util.logging.Level;
>> import java.util.logging.Logger;
>> 
>> import com.sun.grizzly.SSLConfig;
>> import com.sun.grizzly.http.SelectorThread;
>> import com.sun.grizzly.ssl.SSLSelectorThread;
>> import com.sun.grizzly.tcp.Adapter;
>> import com.sun.grizzly.tcp.OutputBuffer;
>> import com.sun.grizzly.tcp.Request;
>> import com.sun.grizzly.tcp.Response;
>> import com.sun.grizzly.util.buf.ByteChunk;
>> import com.sun.grizzly.util.net.jsse.JSSEImplementation;
>> 
>> public class EmbeddedSSLServer implements Adapter {
>> 	private static Logger logger = Logger.getLogger( "grizzly.test" );
>> 	private SSLConfig sslConfig;
>> 
>> 	private void setUp() {
>> 		sslConfig = new SSLConfig();
>> 		// override system properties
>> 		sslConfig.setTrustStoreFile( "c:/temp/key/ssltest-cacerts.jks" );
>> 		logger.log( Level.INFO, "SSL certs path: " +
>> sslConfig.getTrustStoreFile()
>> );
>> 		sslConfig.setKeyStoreFile( "c:/temp/key/ssltest-keystore.jks" );
>> 		logger.log( Level.INFO, "SSL keystore path: " +
>> sslConfig.getKeyStoreFile() );
>> 		SSLConfig.DEFAULT_CONFIG = sslConfig;
>> 	}
>> 
>> 	private SelectorThread createSelectorThread( int port ) {
>> 		SSLSelectorThread selectorThread = new SSLSelectorThread();
>> 		SSLSelectorThread.setWebAppRootPath( "/dev/null" );
>> 		selectorThread.setPort( port );
>> 		selectorThread.setSSLConfig( sslConfig );
>> 		try {
>> 			selectorThread.setSSLImplementation( new JSSEImplementation() );
>> 		} catch ( ClassNotFoundException e ) {
>> 			// TODO Auto-generated catch block
>> 			e.printStackTrace();
>> 		}
>> 		// selectorThread.setSelectorReadThreadsCount(5);
>> 		return selectorThread;
>> 	}
>> 
>> 	public static void main( String[] args ) {
>> 		EmbeddedSSLServer server = new EmbeddedSSLServer();
>> 		server.setUp();
>> 		SelectorThread selectorThread = server.createSelectorThread( 8282 );
>> 		selectorThread.setAdapter( server );
>> 		selectorThread.setDisplayConfiguration( true );
>> 		try {
>> 			selectorThread.initEndpoint();
>> 			selectorThread.startEndpoint();
>> 		} catch ( Exception e ) {
>> 			System.out.println( "Exception in SelectorThread: " + e );
>> 		} finally {
>> 			if ( selectorThread.isRunning() ) {
>> 				selectorThread.stopEndpoint();
>> 			}
>> 		}
>> 	}
>> 
>> 	public void service( Request request, Response response ) throws
>> Exception
>> {
>> 		String requestURI = request.requestURI().toString();
>> 		System.out.println( "New incoming request with URI: " + requestURI );
>> 		response.setStatus( HttpURLConnection.HTTP_OK );
>> 		byte[] bytes = "Here is my response text".getBytes();
>> 		ByteChunk chunk = new ByteChunk();
>> 		response.setContentLength( bytes.length );
>> 		response.setContentType( "text/plain" );
>> 		chunk.append( bytes, 0, bytes.length );
>> 		OutputBuffer buffer = response.getOutputBuffer();
>> 		buffer.doWrite( chunk, response );
>> 		response.finish();
>> 	}
>> 
>> 	public void afterService( Request request, Response response ) throws
>> Exception {
>> 		request.recycle();
>> 		response.recycle();
>> 	}
>> 
>> 	public void fireAdapterEvent( String string, Object object ) {
>> 	}
>> }
>> 
>> 
>> Danijel wrote:
>>> Hello Jeanfrancois,
>>>
>>> Thanks for the help,
>>> doing SelectorThread.setWebAppRootPath("/dev/null");
>>> solves the SEVERE error problem.
>>> I've posted an issue as you asked and assigned it to you(hope that is
>>> ok).
>>> Can you or someone else help me with HTTPS support part?
>>> I can not find example with SSLSelectorThread used on the server side.
>>> I tried configuring it with SSLConfig and then do same thing as with
>>> EmbeddedServer.
>>>
>>> Here is my code for this, I get browser prompt about certificate but
>>> service metod is never called.
>>> Is it a problem with algorithm, or am I using this completly wrong.
>>> I'm trying to do same thing as with EmbeddedServer, just to call it and
>>> get response but over HTTPS,
>>> again not static content is served.
>>>
>>>
>>> import java.net.HttpURLConnection;
>>> import java.util.logging.Level;
>>> import java.util.logging.Logger;
>>>
>>> import com.sun.grizzly.SSLConfig;
>>> import com.sun.grizzly.http.SelectorThread;
>>> import com.sun.grizzly.ssl.SSLSelectorThread;
>>> import com.sun.grizzly.tcp.Adapter;
>>> import com.sun.grizzly.tcp.OutputBuffer;
>>> import com.sun.grizzly.tcp.Request;
>>> import com.sun.grizzly.tcp.Response;
>>> import com.sun.grizzly.util.buf.ByteChunk;
>>>
>>> public class EmbeddedSSLServer implements Adapter {
>>> 	private static Logger logger = Logger.getLogger( "grizzly.test" );
>>> 	private SSLConfig sslConfig;
>>>
>>> 	private void setUp() {
>>> 		sslConfig = new SSLConfig();
>>> 		// override system properties
>>> 		sslConfig.setTrustStoreFile( "c:/temp/key/ssltest-cacerts.jks" );
>>> 		logger.log( Level.INFO, "SSL certs path: " +
>>> sslConfig.getTrustStoreFile() );
>>> 		sslConfig.setKeyStoreFile( "c:/temp/key/ssltest-keystore.jks" );
>>> 		logger.log( Level.INFO, "SSL keystore path: " +
>>> sslConfig.getKeyStoreFile() );
>>> 		// SSLConfig.DEFAULT_CONFIG = sslConfig;
>>> 	}
>>>
>>> 	private SelectorThread createSelectorThread( int port ) {
>>> 		SSLSelectorThread selectorThread = new SSLSelectorThread();
>>> 		SSLSelectorThread.setWebAppRootPath( "/dev/null" );
>>> 		selectorThread.setPort( port );
>>> 		selectorThread.setSSLConfig( sslConfig );
>>> 		// selectorThread.setSelectorReadThreadsCount(5);
>>> 		selectorThread.setAlgorithmClassName(
>>> SSLEchoStreamAlgorithm.class.getName() );
>>> 		return selectorThread;
>>> 	}
>>>
>>> 	public static void main( String[] args ) {
>>> 		EmbeddedSSLServer server = new EmbeddedSSLServer();
>>> 		server.setUp();
>>> 		SelectorThread selectorThread = server.createSelectorThread( 8282 );
>>> 		selectorThread.setAdapter( server );
>>> 		selectorThread.setDisplayConfiguration( true );
>>> 		try {
>>> 			selectorThread.initEndpoint();
>>> 			selectorThread.startEndpoint();
>>> 		} catch ( Exception e ) {
>>> 			System.out.println( "Exception in SelectorThread: " + e );
>>> 		} finally {
>>> 			if ( selectorThread.isRunning() ) {
>>> 				selectorThread.stopEndpoint();
>>> 			}
>>> 		}
>>> 	}
>>>
>>> 	public void service( Request request, Response response ) throws
>>> Exception {
>>> 		String requestURI = request.requestURI().toString();
>>> 		System.out.println( "New incoming request with URI: " + requestURI );
>>> 		response.setStatus( HttpURLConnection.HTTP_OK );
>>> 		byte[] bytes = "Here is my response text".getBytes();
>>> 		ByteChunk chunk = new ByteChunk();
>>> 		response.setContentLength( bytes.length );
>>> 		response.setContentType( "text/plain" );
>>> 		chunk.append( bytes, 0, bytes.length );
>>> 		OutputBuffer buffer = response.getOutputBuffer();
>>> 		buffer.doWrite( chunk, response );
>>> 		response.finish();
>>> 	}
>>>
>>> 	public void afterService( Request request, Response response ) throws
>>> Exception {
>>> 		request.recycle();
>>> 		response.recycle();
>>> 	}
>>>
>>> 	public void fireAdapterEvent( String string, Object object ) {
>>> 	}
>>> }
>>>
>>>
>>>
>>> Jeanfrancois Arcand-2 wrote:
>>>> Hi Daniel,
>>>>
>>>> Danijel wrote:
>>>>> Hello all,
>>>>>
>>>>> I've been using grizzly for some time now, since version 1.5.X
>>>>> I was developing an app that was suppose to receive data over http and
>>>>> then
>>>>> using ARP return response later or after expiration of some time
>>>>> interval.
>>>>> My app did not need a full web app running, meaning I did not have a
>>>>> need
>>>>> for any web pages, servlets, filters, web.xml or anything like that.
>>>>> First I tried jetty continuations and that did not work for me.
>>>>> Then I found grizzly, embedded it with it and it worked great. I was
>>>>> able to
>>>>> receive data on port via http protocol and eventually I figured out
>>>>> your
>>>>> AsyncFilter stuff and completed the app.
>>>> Good@
>>>>
>>>>> First for my getting to know grizzly purpose I created this simple
>>>>> EmbeddedServer class just to figure out how to initialy receive data.
>>>> Might be good to blog about it (if you can :-))!
>>>>
>>>>
>>>>> With all the different jars before complete http bundle that was
>>>>> published
>>>>> and with 1.7.1 version of
>>>>> grizzly-http-webserver jar this simple class works fine.
>>>>> But when I wanted to update to 1.7.2 version this SEVERE error shows
>>>>> up,
>>>>> even though everything still works.
>>>> Oufff...At least I didn't break it to seriously :-)
>>>>
>>>>> Here is my EmbeddedServer server code and outputs running first 1.7.1
>>>>> jar
>>>>> and then output of 1.7.2 jar
>>>>> In both cases response get written to the web browser when I go to
>>>>> http://localhost:8282/test
>>>>>
>>>>> import java.net.HttpURLConnection;
>>>>> import com.sun.grizzly.http.SelectorThread;
>>>>> import com.sun.grizzly.tcp.Adapter;
>>>>> import com.sun.grizzly.tcp.OutputBuffer;
>>>>> import com.sun.grizzly.tcp.Request;
>>>>> import com.sun.grizzly.tcp.Response;
>>>>> import com.sun.grizzly.util.buf.ByteChunk;
>>>>>
>>>>> public class EmbeddedServer implements Adapter {
>>>>> 	public static void main( String[] args ) {
>>>>> 		SelectorThread selectorThread = new SelectorThread();
>>>>> 		selectorThread.setPort( 8282 );
>>>>> 		selectorThread.setAdapter( new EmbeddedServer() );
>>>>> 		selectorThread.setDisplayConfiguration( true );
>>>>> 		try {
>>>>> 			selectorThread.initEndpoint();
>>>>> 			selectorThread.startEndpoint();
>>>>> 		} catch ( Exception e ) {
>>>>> 			System.out.println( "Exception in SelectorThread: " + e );
>>>>> 		} finally {
>>>>> 			if ( selectorThread.isRunning() ) {
>>>>> 				selectorThread.stopEndpoint();
>>>>> 			}
>>>>> 		}
>>>>> 	}
>>>>>
>>>>> 	public void service( Request request, Response response ) throws
>>>>> Exception
>>>>> {
>>>>> 		String requestURI = request.requestURI().toString();
>>>>> 		System.out.println( "New incoming request with URI: " + requestURI
>>>>> );
>>>>> 		response.setStatus( HttpURLConnection.HTTP_OK );
>>>>> 		byte[] bytes = "Here is my response text".getBytes();
>>>>> 		ByteChunk chunk = new ByteChunk();
>>>>> 		response.setContentLength( bytes.length );
>>>>> 		response.setContentType( "text/plain" );
>>>>> 		chunk.append( bytes, 0, bytes.length );
>>>>> 		OutputBuffer buffer = response.getOutputBuffer();
>>>>> 		buffer.doWrite( chunk, response );
>>>>> 		response.finish();
>>>>> 		// }
>>>>> 	}
>>>>>
>>>>> 	public void afterService( Request request, Response response ) throws
>>>>> Exception {
>>>>> 		request.recycle();
>>>>> 		response.recycle();
>>>>> 	}
>>>>>
>>>>> 	@Override
>>>>> 	public void fireAdapterEvent( String arg0, Object arg1 ) {
>>>>> 		// TODO Auto-generated method stub
>>>>> 	}
>>>>> }
>>>>>
>>>>>
>>>>> Output using grizzly-http-webserver-1.7.1.jar :
>>>>>
>>>>> Mar 7, 2008 5:21:05 PM com.sun.grizzly.http.SelectorThread
>>>>> displayConfiguration
>>>>> INFO: 
>>>>>  Grizzly configuration for port 8282
>>>>> 	 maxThreads: 20
>>>>> 	 minThreads: 5
>>>>> 	 ByteBuffer size: 8192
>>>>> 	 useDirectByteBuffer: false
>>>>> 	 useByteBufferView: false
>>>>> 	 maxHttpHeaderSize: 8192
>>>>> 	 maxKeepAliveRequests: 256
>>>>> 	 keepAliveTimeoutInSeconds: 30
>>>>> 	 Static File Cache enabled: true
>>>>> 	 Stream Algorithm :
>>>>> com.sun.grizzly.http.algorithms.NoParsingAlgorithm
>>>>> 	 Pipeline : com.sun.grizzly.http.LinkedListPipeline
>>>>> 	 Round Robin Selector Algorithm enabled: false
>>>>> 	 Round Robin Selector pool size: 0
>>>>> 	 recycleTasks: true
>>>>> 	 Asynchronous Request Processing enabled: false
>>>>> New incoming request with URI: /test
>>>>>
>>>>>
>>>>> Output using grizzly-http-webserver-1.7.2.jar :
>>>>>
>>>>> Mar 7, 2008 5:24:53 PM com.sun.grizzly.http.SelectorThread
>>>>> initEndpoint
>>>>> SEVERE: File Cache is not enabled. Make sure the setWebAppRootPath()
>>>>> is
>>>>> invoked before starting this SelectorThread
>>>> Yes that's a mess I've to fix. See:
>>>>
>>>> http://www.nabble.com/-Q--StaticResourcesAdapter-no-longer-implemented-in748-td15181158.html
>>>>
>>>> Mainly, make sure you call 
>>>> SelectorThread.WebApplicationRootPath("static-folder-path"), or set it 
>>>> to /dev/null if you aren't servicing any static pages.
>>>>
>>>> The SEVERE will go away.
>>>>
>>>> Do you mind filling an issue? I need to re-work my last change :-)
>>>>
>>>> https://grizzly.dev.java.net/issues/
>>>>
>>>> Thanks
>>>>
>>>> -- Jeanfrancois
>>>>
>>>>> Mar 7, 2008 5:24:53 PM com.sun.grizzly.http.SelectorThread
>>>>> displayConfiguration
>>>>> INFO: 
>>>>>  Grizzly configuration for port 8282
>>>>> 	 maxThreads: 5
>>>>> 	 minThreads: 5
>>>>> 	 ByteBuffer size: 8192
>>>>> 	 useDirectByteBuffer: false
>>>>> 	 useByteBufferView: false
>>>>> 	 maxHttpHeaderSize: 8192
>>>>> 	 maxKeepAliveRequests: 256
>>>>> 	 keepAliveTimeoutInSeconds: 30
>>>>> 	 Static File Cache enabled: true
>>>>> 	 Stream Algorithm :
>>>>> com.sun.grizzly.http.algorithms.NoParsingAlgorithm
>>>>> 	 Pipeline : com.sun.grizzly.http.LinkedListPipeline
>>>>> 	 Round Robin Selector Algorithm enabled: false
>>>>> 	 Round Robin Selector pool size: 0
>>>>> 	 recycleTasks: true
>>>>> 	 Asynchronous Request Processing enabled: false
>>>>> New incoming request with URI: /test
>>>>>
>>>>> Notice second line in this last 1.7.2 output, what changed?
>>>>> Do I need to worry about it?
>>>>>
>>>>> Also now I need to extend my app to support https, I tried using
>>>>> SSLSelectorThread,
>>>>> I set SSLConfig to it, and pretty much first wanted to try same thing
>>>>> like
>>>>> with this EmbeddedServer
>>>>>
>>>>> But event though when I go to https://localhost:8282/test I get
>>>>> prompted
>>>>> about unsigned certificate, service method never gets called.
>>>>>
>>>>> Can someone help me with HTTPS support?
>>>>> I can not find some example of using Grizzly as HTTPS server, does
>>>>> anyone
>>>>> has one?
>>>>>
>>>>> Thanks and sorry for such a long post
>>>>>
>>>>> -----
>>>>> --
>>>>> Danijel
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
>>>> For additional commands, e-mail: users-help_at_grizzly.dev.java.net
>>>>
>>>>
>>>>
>>>
>> 
>> 
>> -----
>> --
>> Danijel
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
> For additional commands, e-mail: users-help_at_grizzly.dev.java.net
> 
> 
> 
-----
--
Danijel
-- 
View this message in context: http://www.nabble.com/SEVERE-error-thrown-with-grizzly-http-webserver-1.7.2-tp15900600p16024334.html
Sent from the Grizzly - Users mailing list archive at Nabble.com.