SEVERE error thrown with grizzly-http-webserver-1.7.2

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

SEVERE error thrown with grizzly-http-webserver-1.7.2

Danijel
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.

First for my getting to know grizzly purpose I created this simple EmbeddedServer class just to figure out how to initialy receive data.

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.

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
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
Reply | Threaded
Open this post in threaded view
|

Re: SEVERE error thrown with grizzly-http-webserver-1.7.2

Jeanfrancois Arcand-2
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: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: SEVERE error thrown with grizzly-http-webserver-1.7.2

Danijel
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@grizzly.dev.java.net
For additional commands, e-mail: users-help@grizzly.dev.java.net
Reply | Threaded
Open this post in threaded view
|

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

Danijel
Hello All,

just to let you know that I've figured out this HTTPS support problem.
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

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@grizzly.dev.java.net
For additional commands, e-mail: users-help@grizzly.dev.java.net
Reply | Threaded
Open this post in threaded view
|

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

Jeanfrancois Arcand-2
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: [hidden email]
>>> For additional commands, e-mail: [hidden email]
>>>
>>>
>>>
>>
>
>
> -----
> --
> Danijel

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

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

Danijel
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@grizzly.dev.java.net
>>> For additional commands, e-mail: users-help@grizzly.dev.java.net
>>>
>>>
>>>
>>
>
>
> -----
> --
> Danijel

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@grizzly.dev.java.net
For additional commands, e-mail: users-help@grizzly.dev.java.net