users@glassfish.java.net

Re: CometContext.notify(..) causes NullPointerException

From: Oleksiy Stashok <Oleksiy.Stashok_at_Sun.COM>
Date: Tue, 03 Aug 2010 14:10:13 +0200

What Glassfish version are you using?
Can you provide a simple testcase (webapp) to reproduce the issue?

Thanks.

On Aug 3, 2010, at 12:38 , glassfish_at_javadesktop.org wrote:

> I got this Exception:
>
> java.lang.NullPointerException
> at com.sun.enterprise.web.connector.grizzly.LinkedListPipeline.addTask
> (LinkedListPipeline.java:263)
> at
> com
> .sun
> .enterprise
> .web
> .portunif
> .PortUnificationPipeline.addTask(PortUnificationPipeline.java:181)
> at com.sun.enterprise.web.connector.grizzly.comet.DefaultNotificationHandler.notify
> (DefaultNotificationHandler.java:110)
> at com.sun.enterprise.web.connector.grizzly.comet.CometContext.notify
> (CometContext.java:610)
> at com.sun.enterprise.web.connector.grizzly.comet.CometContext.notify
> (CometContext.java:521)
> at mypackage.MyClass.notifyComet(MyClass.java:33)
> at mypackage.MyClass.onMessage(MyClass.java:44)
> at sun.reflect.GeneratedMethodAccessor2330.invoke(Unknown Source)
> at
> sun
> .reflect
> .DelegatingMethodAccessorImpl
> .invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at com.sun.enterprise.security.SecurityUtil
> $2.run(SecurityUtil.java:181)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> com
> .sun
> .enterprise
> .security
> .application
> .EJBSecurityManager.doAsPrivileged(EJBSecurityManager.java:985)
> at
> com.sun.enterprise.security.SecurityUtil.invoke(SecurityUtil.java:186)
> at
> com
> .sun
> .ejb
> .containers.BaseContainer.invokeTargetBeanMethod(BaseContainer.java:
> 2929)
> at
> com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:
> 4020)
> at
> com
> .sun
> .ejb
> .containers
> .MessageBeanContainer.deliverMessage(MessageBeanContainer.java:1111)
> at
> com
> .sun
> .ejb
> .containers
> .MessageBeanListenerImpl.deliverMessage(MessageBeanListenerImpl.java:
> 74)
> at
> com
> .sun
> .enterprise
> .connectors
> .inflow
> .MessageEndpointInvocationHandler
> .invoke(MessageEndpointInvocationHandler.java:179)
> at $Proxy227.onMessage(Unknown Source)
> at
> com.sun.messaging.jms.ra.OnMessageRunner.run(OnMessageRunner.java:258)
> at com.sun.enterprise.connectors.work.OneWork.doWork(OneWork.java:
> 77)
> at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl
> $WorkerThread.run(ThreadPoolImpl.java:555)
>
> If I downloaded the correct grizzly sources
>
> <groupId>com.sun.grizzly</groupId>
> <artifactId>grizzly-framework-http</artifactId>
> <packaging>jar</packaging>
> <version>1.0.30</version>
>
> this is the code, that fails:
>
> public synchronized void addTask(Task task) {
> int queueSize = size();
> if ( maxQueueSizeInBytes != -1 && maxQueueSizeInBytes <=
> queueSize){
> SelectorThread st = task.getSelectorThread();
> st.cancelKey(task.getSelectionKey()); // <--- st IS NULL, BUT
> WHY?
> SelectorThread.logger().log(Level.WARNING,"Maximum
> connections queued reached " +
>
> "(max-pending-count) "
> + maxQueueSizeInBytes +
> ". Dropping requests until queued connections have
> been freed up.");
> st.returnTask(task);
> return;
> }
>
> addLast(task);
> notify();
>
> // Create worker threads if we know we will run out of them
> if (threadCount < maxThreads && waitingThreads < (queueSize + 1)){
> int left = maxThreads - threadCount;
> if (threadsIncrement > left){
> threadsIncrement = left;
> }
> increaseWorkerThread(threadsIncrement,true);
> }
> }
>
> I wonder, why is the selector thread null and how I can prevent this?
> [Message sent by forum member 'hegalor']
>
> http://forums.java.net/jive/thread.jspa?messageID=479200
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_glassfish.dev.java.net
> For additional commands, e-mail: users-help_at_glassfish.dev.java.net
>