https exception with java 1.6
Life was good when our clients and server were running java 1.5.X. Now after some of our clients have upgraded to 1.6.0_1, life isn't so good.
I am seeing seemingly random exceptions that appear to be generated down in the guts of the https api layer. I could use your help.
Please, I appreciate any advice.
Here is the setup:
1) Tomcat 5.5.15 with jdk 1.5.0_09
2) Tomcat setup for https and http but https forced. Not using APR...
3) Clients are running jre 1.6.0_01.
4) Clients login and run a fairly large applet.
5) At some random point during the communication (we are serializing plain old java objects) the following exception occurs and all communication with the server is foobar until the browser is restarted. (Refresh doesn't help).
6) the above problem happens quicker for some and not at all for others.
The problem:
The clients are randomly failing (at least it seems that way) with
javax.net.ssl.SSLException: java.lang.NullPointerException
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.handleException(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(Unknown Source)
at com.mycompany.hm.callq.client.common.HttpMessage.sendPostObject(HttpMessage.java:227)
at com.mycompany.hm.callq.client.common.CallQSerializeData.sendViaHttp(CallQSerializeData.java:132)
at com.mycompany.hm.callq.client.common.SessionMonitor.getSessionInterval(SessionMonitor.java:355)
at com.mycompany.hm.callq.client.common.SessionMonitor.startSessionMonitorTimers(SessionMonitor.java:78)
at com.mycompany.hm.callq.client.common.JDockingApplet.start(JDockingApplet.java:331)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at com.sun.deploy.security.X509ExtendedDeployTrustManager.isSupportedAlgorithm(Unknown Source)
at com.sun.deploy.security.X509ExtendedDeployTrustManager.checkServerTrusted(Unknown Source)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Unknown Source)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
... 13 more
Once this happens, the java cache (apparently) becomes corrupted and must be deleted before the applet can be used (until it randomly fails again). The java console shows unable to load a class that I know exists and is fine...
I'm really hoping someone has some ideas. I'm in the process of seeing if upgrading to 1.6.1 on the server fixes the problem but I've already found one condition that it fails (consistently).
I don't know where to go from here?
-Dennis
# 6
More information:
I now have line numbers, as I was able to dup this using the 1.6.0_02 early access snapshot.
javax.net.ssl.SSLException: java.lang.NullPointerException
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:190)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1591)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1554)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1537)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1130)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1107)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:405)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:170)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:836)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:230)
at com.mycompany.hm.callq.client.common.HttpMessage.sendPostObject(HttpMessage.java:227)
at com.mycompany.hm.callq.client.common.CallQSerializeData.sendViaHttp(CallQSerializeData.java:132)
at com.mycompany.hm.callq.client.diagnostics.CallQBaseUITableModel.getActiveCallDetail(CallQBaseUITableModel.java:375)
at com.mycompany.hm.callq.client.diagnostics.CallQActiveCalls.launch(CallQActiveCalls.java:669)
at com.mycompany.hm.callq.client.diagnostics.CallQActiveCalls$1.mouseClicked(CallQActiveCalls.java:214)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
at java.awt.Component.processMouseEvent(Component.java:6041)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3995)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Caused by: java.lang.NullPointerException
at com.sun.deploy.security.X509ExtendedDeployTrustManager.isSupportedAlgorithm(X509ExtendedDeployTrustManager.java:463)
at com.sun.deploy.security.X509ExtendedDeployTrustManager.checkServerTrusted(X509ExtendedDeployTrustManager.java:303)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:954)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:123)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:516)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:454)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:884)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1096)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1123)
... 30 more
Here is the hotspot log:
<?xml version='1.0' encoding='UTF-8'?>
<hotspot_log version='160 1' process='1512' time_ms='1178561067875'>
<vm_version>
<name>
Java HotSpot(TM) Client VM
</name>
<release>
1.6.0_02-ea-fastdebug-b02-debug
</release>
<info>
Java HotSpot(TM) Client VM (1.6.0_02-ea-fastdebug-b02) for windows-x86, built on Apr 12 2007 03:44:50 by "java_re" with unknown MS VC++:1310
</info>
</vm_version>
<vm_arguments>
<args>
-Xbootclasspath/a:C:\PROGRA~1\Java\JRE16~1.0_0\lib\deploy.jar;C:\PROGRA~1\Java\JRE16~1.0_0\lib\plugin.jar -Xmx96m -Djavaplugin.maxHeapSize=96m
-Xverify:remote -Djavaplugin.version=1.6.0_02 -Djavaplugin.nodotversion=160_02
-Dbrowser=sun.plugin -DtrustProxy=true
-Dapplication.home=C:\PROGRA~1\Java\JRE16~1.0_0 -Xdebug -Xnoagent
-Djava.compiler=NONE
-Xrunjdwp:transport=dt_socket,server=y,address=8888,suspend=n
-Djavaplugin.vm.options=-Djava.class.path=C:\PROGRA~1\Java\JRE16~1.0_0\classes
-Xbootclasspath/a:C:\PROGRA~1\Java\JRE16~1.0_0\lib\deploy.jar;C:\PROGRA~1\Java\JRE16~1.0_0\lib\plugin.jar
-Xmx96m -Djavaplugin.maxHeapSize=96m -Xverify:remote
-Djavaplugin.version=1.6.0_02 -Djavaplugin.nodotversion=160_02
-Dbrowser=sun.plugin -DtrustProxy=true
-Dapplication.home=C:\PROGRA~1\Java\JRE16~1.0_0 -Xdebug -Xnoagent
-Djava.compiler=NONE
-Xrunjdwp:transport=dt_socket,server=y,address=8888,suspend=n
</args>
<launcher>
generic
</launcher>
</vm_arguments>
<tty>
<writer thread='2456'/>
<dependency_failed type='unique_concrete_method' ctxk='java/util/Properties' x='java/util/Hashtable put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;' witness='java/security/Provider' stamp='5.306'/>
<writer thread='2480'/>
<dependency_failed type='unique_concrete_method' ctxk='javax/swing/text/TabExpander' x='javax/swing/text/PlainView nextTabStop (FI)F' witness='javax/swing/text/TabExpander' stamp='10.888'/>
<writer thread='2476'/>
<dependency_failed type='no_finalizable_subclasses' ctxk='java/io/FilterInputStream' witness='sun/net/www/MeteredStream' stamp='13.313'/>
<writer thread='2508'/>
<dependency_failed type='leaf_type' ctxk='java/applet/Applet' witness='javax/swing/JApplet' stamp='21.693'/>
<dependency_failed type='unique_concrete_method' x='java/awt/Component isVisible ()Z' witness='javax/swing/JPopupMenu' stamp='26.129'/>
<dependency_failed type='leaf_type' ctxk='java/util/ArrayList' witness='com/jidesoft/docking/m' stamp='26.523'/>
<dependency_failed type='leaf_type' ctxk='java/util/ArrayList' witness='com/jidesoft/docking/m' stamp='26.524'/>
<dependency_failed type='leaf_type' ctxk='java/util/ArrayList' witness='com/jidesoft/docking/m' stamp='26.524'/>
<dependency_failed type='leaf_type' ctxk='java/util/ArrayList' witness='com/jidesoft/docking/m' stamp='26.524'/>
<dependency_failed type='leaf_type' ctxk='java/util/ArrayList' witness='com/jidesoft/docking/m' stamp='26.524'/>
<dependency_failed type='leaf_type' ctxk='java/util/ArrayList' witness='com/jidesoft/docking/m' stamp='26.524'/>
<dependency_failed type='leaf_type' ctxk='java/util/ArrayList' witness='com/jidesoft/docking/m' stamp='26.524'/>
<writer thread='2488'/>
<dependency_failed type='unique_concrete_method' ctxk='java/awt/image/ImageConsumer' x='sun/awt/image/ImageRepresentation setPixels (IIIILjava/awt/image/ColorModel;[BII)V' witness='java/awt/image/ImageConsumer' stamp='44.948'/>
<dependency_failed type='unique_concrete_method' ctxk='java/awt/image/ImageConsumer' x='sun/awt/image/ImageRepresentation setDimensions (II)V' witness='java/awt/image/ImageConsumer' stamp='44.948'/>
<dependency_failed type='unique_concrete_method' ctxk='java/awt/image/ImageConsumer' x='sun/awt/image/ImageRepresentation setColorModel (Ljava/awt/image/ColorModel;)V' witness='java/awt/image/ImageConsumer' stamp='44.948'/>
<dependency_failed type='unique_concrete_method' ctxk='java/awt/image/ImageConsumer' x='sun/awt/image/ImageRepresentation setHints (I)V' witness='java/awt/image/ImageConsumer' stamp='44.948'/>
<dependency_failed type='unique_concrete_method' x='sun/util/calendar/CalendarDate getYear ()I' witness='sun/util/calendar/ImmutableGregorianDate' stamp='50.579'/>
<dependency_failed type='unique_concrete_method' ctxk='sun/util/calendar/BaseCalendar$Date' x='sun/util/calendar/CalendarDate setDate (III)Lsun/util/calendar/CalendarDate;' witness='sun/util/calendar/ImmutableGregorianDate' stamp='50.579'/>
<dependency_failed type='unique_concrete_method' ctxk='sun/util/calendar/BaseCalendar$Date' x='sun/util/calendar/CalendarDate setYear (I)Lsun/util/calendar/CalendarDate;' witness='sun/util/calendar/ImmutableGregorianDate' stamp='50.579'/>
<dependency_failed type='unique_concrete_method' ctxk='sun/util/calendar/BaseCalendar$Date' x='sun/util/calendar/CalendarDate setMonth (I)Lsun/util/calendar/CalendarDate;' witness='sun/util/calendar/ImmutableGregorianDate' stamp='50.579'/>
<dependency_failed type='unique_concrete_method' ctxk='sun/util/calendar/BaseCalendar$Date' x='sun/util/calendar/CalendarDate setDayOfMonth (I)Lsun/util/calendar/CalendarDate;' witness='sun/util/calendar/ImmutableGregorianDate' stamp='50.580'/>
<dependency_failed type='unique_concrete_method' ctxk='sun/util/calendar/BaseCalendar$Date' x='sun/util/calendar/CalendarDate setTimeOfDay (IIII)Lsun/util/calendar/CalendarDate;' witness='sun/util/calendar/ImmutableGregorianDate' stamp='50.580'/>
<dependency_failed type='unique_concrete_method' ctxk='sun/util/calendar/BaseCalendar$Date' x='sun/util/calendar/CalendarDate setHours (I)Lsun/util/calendar/CalendarDate;' witness='sun/util/calendar/ImmutableGregorianDate' stamp='50.580'/>
<dependency_failed type='unique_concrete_method' ctxk='sun/util/calendar/BaseCalendar$Date' x='sun/util/calendar/CalendarDate setMinutes (I)Lsun/util/calendar/CalendarDate;' witness='sun/util/calendar/ImmutableGregorianDate' stamp='50.580'/>
<dependency_failed type='unique_concrete_method' ctxk='sun/util/calendar/BaseCalendar$Date' x='sun/util/calendar/CalendarDate setSeconds (I)Lsun/util/calendar/CalendarDate;' witness='sun/util/calendar/ImmutableGregorianDate' stamp='50.580'/>
<dependency_failed type='unique_concrete_method' ctxk='sun/util/calendar/BaseCalendar$Date' x='sun/util/calendar/CalendarDate setMillis (I)Lsun/util/calendar/CalendarDate;' witness='sun/util/calendar/ImmutableGregorianDate' stamp='50.580'/>
<writer thread='2292'/>
<missed_by_CHA method='java/lang/Object equals (Ljava/lang/Object;)Z' bytes='11' count='40' iicount='0' klass='java/awt/GraphicsConfiguration'/>
<missed_by_CHA method='java/awt/Rectangle getX ()D' bytes='6' count='894' iicount='0' klass='java/awt/Rectangle'/>
<missed_by_CHA method='java/awt/Rectangle getY ()D' bytes='6' count='894' iicount='0' klass='java/awt/Rectangle'/>
<missed_by_CHA method='java/awt/Rectangle getWidth ()D' bytes='6' count='894' iicount='0' klass='java/awt/Rectangle'/>
<missed_by_CHA method='java/awt/Rectangle getHeight ()D' bytes='6' count='894' iicount='0' klass='java/awt/Rectangle'/>
<missed_by_CHA method='java/awt/Rectangle setRect (DDDD)V' bytes='135' count='878' iicount='0' klass='java/awt/Rectangle'/>
<missed_by_CHA method='javax/swing/JComponent repaint (JIIII)V' bytes='16' count='23' iicount='0' klass='javax/swing/table/JTableHeader'/>
<missed_by_CHA method='javax/swing/JComponent repaint (JIIII)V' bytes='16' count='23' iicount='0' klass='javax/swing/text/JTextComponent'/>
<missed_by_CHA method='javax/swing/JComponent repaint (JIIII)V' bytes='16' count='23' iicount='0' klass='javax/swing/text/JTextComponent'/>
<missed_by_CHA method='javax/swing/JComponent repaint (JIIII)V' bytes='16' count='23' iicount='0' klass='javax/swing/text/JTextComponent'/>
<missed_by_CHA method='javax/swing/JComponent repaint (JIIII)V' bytes='16' count='23' iicount='0' klass='javax/swing/text/JTextComponent'/>
<missed_by_CHA method='javax/swing/JComponent repaint (JIIII)V' bytes='16' count='23' iicount='0' klass='javax/swing/text/JTextComponent'/>
<missed_by_CHA method='javax/swing/JComponent repaint (JIIII)V' bytes='16' count='23' iicount='0' klass='javax/swing/text/JTextComponent'/>
<missed_by_CHA method='javax/swing/JComponent repaint (JIIII)V' bytes='16' count='23' iicount='0' klass='javax/swing/text/JTextComponent'/>
<missed_by_CHA method='javax/swing/JComponent repain
'>