users@glassfish.java.net

Re: ServerSocket NullPointerException....

From: <Jan.Luehe_at_Sun.COM>
Date: Wed, 30 Jul 2008 16:03:32 -0700

Rajeev,

Rajeev Angal wrote:

> The following code results in Null pointer exception on Glassfish V2
> UR1 (please see stack trace at the end of this email):
>
> test.jsp
> <%
> try {
> java.net.ServerSocket listenSocket = new java.net.ServerSocket();
> listenSocket.setReceiveBufferSize(1000000);
> } catch (Exception ex) {
> out.print("Exception : "+ex);
> ex.printStackTrace(new java.io. PrintWriter(out));
> }
> %>
>
> http://java.sun.com/j2se/1.5.0/docs/api/java/net/ServerSocket.html#setReceiveBufferSize(int)
> <http://java.sun.com/j2se/1.5.0/docs/api/java/net/ServerSocket.html#setReceiveBufferSize%28int%29>
> seems to indicate its perfectly legal to do this :
> "However, if the application wishes to allow a receive window larger
> than 64K bytes, as defined by RFC1323 then the proposed value must be
> set in the ServerSocket before it is bound to a local address. This
> implies, that the ServerSocket must be created with the no-argument
> constructor, then setReceiveBufferSize() must be called and lastly the
> ServerSocket is bound to an address by calling bind()."
>
>
>
> Stack trace:
>
>
> Exception :
> java.lang.NullPointerExceptionjava.lang.NullPointerException at
> com.sun.enterprise.server.ss.provider.ASServerSocketImpl.setOption(ASServerSocketImpl.java:207)
> at java.net.ServerSocket.setReceiveBufferSize(ServerSocket.java:741)
> at org.apache.jsp.stest_jsp._jspService(stest_jsp.java:49) at
> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:93) at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:831) at
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
> at
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:470)
> at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:364)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:831) at
> org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:317)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
> at
> com.sun.identity.setup.AMSetupFilter.doFilter(AMSetupFilter.java:91)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:288)
> at
> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202)
> at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
> at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
> at com.sun.enterprise.web.WebPipeline.invoke
> <http://web.WebPipeline.invoke>(WebPipeline.java:94) at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)
> at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
> at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
> at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)
> at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
> at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
> at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
> at
> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:272)
> at
> com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter
> <http://web.connector.grizzly.DefaultProcessorTask.invokeAdapter>(DefaultProcessorTask.java:637)
> at
> com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess
> <http://web.connector.grizzly.DefaultProcessorTask.doProcess>(DefaultProcessorTask.java:568)
> at
> com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process
> <http://web.connector.grizzly.DefaultProcessorTask.process>(DefaultProcessorTask.java:813)
> at
> com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask
> <http://web.connector.grizzly.DefaultReadTask.executeProcessorTask>(DefaultReadTask.java:341)
> at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask
> <http://web.connector.grizzly.DefaultReadTask.doTask>(DefaultReadTask.java:263)
> at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask
> <http://web.connector.grizzly.DefaultReadTask.doTask>(DefaultReadTask.java:214)
> at com.sun.enterprise.web.portunif.PortUnificationPipeline
> <http://web.portunif.PortUnificationPipeline>$PUTask.doTask(PortUnificationPipeline.java:380)
> at com.sun.enterprise.web.connector.grizzly.TaskBase.run
> <http://web.connector.grizzly.TaskBase.run>(TaskBase.java:265) at
> com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run
> <http://web.connector.grizzly.ssl.SSLWorkerThread.run>(SSLWorkerThread.java:106)
>
> Known bug?
> -rajeev


Yes.

Looks like you've already submitted:

  https://glassfish.dev.java.net/issues/show_bug.cgi?id=5402

and confirmed that the workaround of setting

  
<jvm-options>-Dcom.sun.enterprise.server.ss.ASQuickStartup=false</jvm-options>

fixes the issue.


See

  https://glassfish.dev.java.net/issues/show_bug.cgi?id=5321

for umbrella issue regarding the need to disable ASQuickStartup in
many scenarios.



Jan