Hi Filip.

you see at my situation the key can be null:

30.10.2006 16:03:20 org.apache.tomcat.util.net.NioEndpoint$Worker run
INFO: [EMAIL PROTECTED]:java.nio.channels.So cketChannel[connected local=/127.0.0.1:8080 remote=/127.0.0.1:50517] [EMAIL PROTECTED]
30.10.2006 16:03:40 org.apache.tomcat.util.net.NioEndpoint$Worker run
INFO: [EMAIL PROTECTED]:java.nio.channels.So cketChannel[closed] key=null #################

Exception in thread "http-8080-2" java.lang.NullPointerException
at org.apache.tomcat.util.net.NioEndpoint$Worker.run (NioEndpoint.java:1442)
        at java.lang.Thread.run(Thread.java:613)


Here my patch:

=== L 1436 f

                        NioChannel socket = (NioChannel)channel;

SelectionKey key = socket.getIOChannel ().keyFor(socket.getPoller().getSelector());
                        int handshake = -1;
                        log.info("socket=" + socket + " key=" + key );
                        if(key != null) {
                            try {
handshake = socket.handshake (key.isReadable(), key.isWritable());
                            }catch ( IOException x ) {
                                handshake = -1;
if ( log.isDebugEnabled() ) log.debug ("Error during SSL handshake",x);
                            }catch ( CancelledKeyException ckx ) {
                                handshake = -1;
                            }
                        } else {
                               handshake = -1;
                        }

                        if ( handshake == 0 ) {
                            // Process the request from this socket
if ((status != null) && (handler.event (socket, status) == Handler.SocketState.CLOSED)) {
                                // Close socket and pool
                                try {
KeyAttachment att = (KeyAttachment)socket.getAttachment(true); try {socket.close();}catch (Exception ignore){} if ( socket.isOpen() ) socket.close(true);
                                    nioChannels.offer(socket);
if ( att!=null ) keyCache.offer (att);
                                }catch ( Exception x ) {
                                    log.error("",x);
                                }
} else if ((status == null) && (handler.process(socket) == Handler.SocketState.CLOSED)) {
                                // Close socket and pool
                                try {
KeyAttachment att = (KeyAttachment)socket.getAttachment(true); try {socket.close();}catch (Exception ignore){} if ( socket.isOpen() ) socket.close(true);
                                    nioChannels.offer(socket);
if ( att!=null ) keyCache.offer (att);
                                }catch ( Exception x ) {
                                    log.error("",x);
                                }
                            }
                        } else if (handshake == -1 ) {
if ( key != null && key.isValid() ) key.cancel(); try {socket.close(true);}catch (IOException ignore){}
                            nioChannels.offer(socket);
                        } else {
                            final SelectionKey fk = key;
                            final int intops = handshake;
final KeyAttachment ka = (KeyAttachment) fk.attachment();
                            ka.getPoller().add(socket,intops);
                        }
                    }
                } finally {
                    //dereference socket to let GC do its job
                    socket = null;
                    // Finish up this request
                    recycleWorkerThread(this);
                }
            }
        }

====

But why the chat messages don't responce only as socket close?

    <Connector port="8080"
               maxThreads="150" connectionTimeout="20000"
               redirectPort="8443"
               protocol="org.apache.coyote.http11.Http11NioProtocol"
               />

I only see comet begin event?
==
30.10.2006 16:19:28 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: attributeAdded ('org.apache.jasper.runtime.JspApplicationC ontextImpl', '[EMAIL PROTECTED]')
30.10.2006 16:19:32 org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: attributeReplaced ('C3E6394AC176D22B752C75D55343AA02', 'ni
ckname', 'pero')
30.10.2006 16:19:35 org.apache.catalina.core.ApplicationContext log
INFO: ChatServlet: Begin for session: C3E6394AC176D22B752C75D55343AA02
30.10.2006 16:25:17 org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextDestroyed()
30.10.2006 16:25:17 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextDestroyed()
30.10.2006 16:25:22 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
30.10.2006 16:25:22 org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
30.10.2006 16:25:33 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: attributeAdded ('org.apache.jasper.runtime.JspApplicationC ontextImpl', '[EMAIL PROTECTED]')
30.10.2006 16:25:36 org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: attributeReplaced ('C3E6394AC176D22B752C75D55343AA02', 'ni
ckname', 'pero')
30.10.2006 16:25:40 org.apache.catalina.core.ApplicationContext log
INFO: ChatServlet: Begin for session: C3E6394AC176D22B752C75D55343AA02

===

Regards
Peter



Am 30.10.2006 um 15:53 schrieb Peter Rossbach:

Hi Filip,

I found that MAC OS X only support setTrafficClass with following JDK option

-Djava.net.preferIPv4Stack=true

http://lists.apple.com/archives/java-dev/2006/Jun/msg00414.html

It seems a older IPV6 bug. At which place we can document those things? -> F&Q


The chat example flush the messages only I got NPE:

INFO: Server startup in 2642 ms
Exception in thread "http-8080-1" java.lang.NullPointerException
at org.apache.tomcat.util.net.NioEndpoint$Worker.run (NioEndpoint.java:1441)
        at java.lang.Thread.run(Thread.java:613)

After this NPE the messages flush to the browser an connection are closed.

Regards
Peter


Am 30.10.2006 um 15:04 schrieb Filip Hanik - Dev Lists:

try to set the property socket.soTrafficClass to some other value,
if it's not working, what JDK are you running, here is the flag described by SUN

http://java.sun.com/j2se/1.5.0/docs/api/java/net/ Socket.html#setTrafficClass(int)



Peter Rossbach wrote:
Hi Filip,

I am starting testing your new NioProtocol handler, but I got following exception:

30.10.2006 13:37:24 org.apache.tomcat.util.net.NioEndpoint setSocketOptions
SCHWERWIEGEND:
java.net.SocketException: Invalid argument
        at sun.nio.ch.Net.setIntOption0(Native Method)
        at sun.nio.ch.Net.setIntOption(Net.java:152)
at sun.nio.ch.SocketChannelImpl$1.setInt (SocketChannelImpl.java:372)
        at sun.nio.ch.SocketOptsImpl.setInt(SocketOptsImpl.java:46)
at sun.nio.ch.SocketOptsImpl$IP.typeOfService (SocketOptsImpl.java:249) at sun.nio.ch.OptionAdaptor.setTrafficClass (OptionAdaptor.java:158) at sun.nio.ch.SocketAdaptor.setTrafficClass (SocketAdaptor.java:320) at org.apache.tomcat.util.net.SocketProperties.setProperties (SocketProperties.java:107) at org.apache.tomcat.util.net.NioEndpoint.setSocketOptions (NioEndpoint.java:742) at org.apache.tomcat.util.net.NioEndpoint$Worker.run (NioEndpoint.java:1423)
        at java.lang.Thread.run(Thread.java:613)


==

My connector config is:

    <Connector port="8080"
               maxThreads="150" connectionTimeout="20000"
               redirectPort="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol" />

After some google search I found that soTrafficClass are not supported at mac os x :-(
s. http://jira.safehaus.org/browse/PENROSE-71

I comment out  L 106 at class o.a.t.util.net.SocketProperties.

//        socket.setTrafficClass(soTrafficClass);

Before I did this: I check starting connector with some different values without success

ex.
    <Connector port="8080"
               maxThreads="150" connectionTimeout="20000"
               redirectPort="8443"
               protocol="org.apache.coyote.http11.Http11NioProtocol"
        socket.soTrafficClass="2" />

After that patch the Connector work, but with the comet style chat example I have more trouble:

INFO: Server startup in 3025 ms
Exception in thread "http-8080-1" java.lang.NullPointerException
at org.apache.tomcat.util.net.NioEndpoint$Worker.run (NioEndpoint.java:1441)
        at java.lang.Thread.run(Thread.java:613)
Exception in thread "http-8080-2" java.lang.NullPointerException
at org.apache.tomcat.util.net.NioEndpoint$Worker.run (NioEndpoint.java:1441)
        at java.lang.Thread.run(Thread.java:613)

--
Chat example really working? I see the posted messages only after socket is closed (with Firefox 1.5)...

Next I test the chat example with APR handler, again.

Regards
Peter Roßbach
[EMAIL PROTECTED]




-------------------------------------------------------------------- ----

No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.408 / Virus Database: 268.13.17/505 - Release Date: 10/27/2006




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




Reply via email to