<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7653.27">
<TITLE>Applet upload bug on WebSphere 6.0</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P><FONT SIZE=2 FACE="Arial">Hi list.</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">I finally managed to install, run, and debug OpenCms 7.0.4 on WebSphere 6.0.</FONT>

<BR><FONT SIZE=2 FACE="Arial">It seems the "applet upload bug" is not related to Oracle but to WebSphere. I reproduced the bug locally, connected to mysql.</FONT></P>

<P><FONT SIZE=2 FACE="Arial">Here's the technical part:</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">It seems to be linked with JSESSION ID, as the exception is thrown when calling getSessionInfo(). The value throws an exception when trying to get Sessino information. The value used in OpenCms code (constructor of class CmsUUID, parameter uuid) was : lpILkdTn8JRnlRPijS-7-Sk. That value threw a NumberFormatException (it is not, indeed, a 36-char value)</FONT></P>

<P><FONT SIZE=2 FACE="Arial">Here's a screenshot of my firefox cookie:</FONT>
</P>

<P><FONT FACE="Arial" SIZE=2 COLOR="#000000">
<IMG SRC="No%20AttachName" alt="Picture (Device Independent Bitmap)"></FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">The exception was thrown the first time I a CmsUUID was built, after I clicked on "choose" (in the applet). The whole debug track is:</FONT></P>

<P><FONT SIZE=2 FACE="Arial">CmsUUID.<init>(String) line: 130        </FONT>

<BR><FONT SIZE=2 FACE="Arial">CmsSessionManager.getSessionUUID(String) line: 467      </FONT>

<BR><FONT SIZE=2 FACE="Arial">CmsSessionManager.getSessionInfo(String) line: 226      </FONT>

<BR><FONT SIZE=2 FACE="Arial">CmsSessionManager.getSessionInfo(HttpServletRequest) line: 191  </FONT>

<BR><FONT SIZE=2 FACE="Arial">OpenCmsCore.initCmsObjectFromSession(HttpServletRequest) line: 869      </FONT>

<BR><FONT SIZE=2 FACE="Arial">OpenCmsCore.initCmsObject(HttpServletRequest, HttpServletResponse) line: 2066   </FONT>

<BR><FONT SIZE=2 FACE="Arial">OpenCmsCore.showResource(HttpServletRequest, HttpServletResponse) line: 1489    </FONT>

<BR><FONT SIZE=2 FACE="Arial">OpenCmsServlet.doGet(HttpServletRequest, HttpServletResponse) line: 152 </FONT>

<BR><FONT SIZE=2 FACE="Arial">OpenCmsServlet.doPost(HttpServletRequest, HttpServletResponse) line: 164        </FONT>

<BR><FONT SIZE=2 FACE="Arial">OpenCmsServlet(HttpServlet).service(HttpServletRequest, HttpServletResponse) line: 763  </FONT>

<BR><FONT SIZE=2 FACE="Arial">OpenCmsServlet(HttpServlet).service(ServletRequest, ServletResponse) line: 856  </FONT>

<BR><FONT SIZE=2 FACE="Arial">ServletWrapper.service(ServletRequest, ServletResponse, WebAppServletInvocationEvent) line: 1694        </FONT>

<BR><FONT SIZE=2 FACE="Arial">ServletWrapper.handleRequest(ServletRequest, ServletResponse) line: 823 </FONT>

<BR><FONT SIZE=2 FACE="Arial">CacheServletWrapper.handleRequest(ServletRequest, ServletResponse) line: 90     </FONT>

<BR><FONT SIZE=2 FACE="Arial">WebContainer.handleRequest(IRequest, IResponse) line: 1936      </FONT>

<BR><FONT SIZE=2 FACE="Arial">WCChannelLink.ready(VirtualConnection) line: 116        </FONT>

<BR><FONT SIZE=2 FACE="Arial">HttpInboundLink.handleDiscrimination() line: 434        </FONT>

<BR><FONT SIZE=2 FACE="Arial">HttpInboundLink.handleNewInformation() line: 373        </FONT>

<BR><FONT SIZE=2 FACE="Arial">HttpInboundLink.ready(VirtualConnection) line: 253      </FONT>

<BR><FONT SIZE=2 FACE="Arial">NewConnectionInitialReadCallback.sendToDiscriminaters(VirtualConnection, TCPReadRequestContext, boolean) line: 207      </FONT></P>

<P><FONT SIZE=2 FACE="Arial">NewConnectionInitialReadCallback.complete(VirtualConnection, TCPReadRequestContext) line: 109   </FONT>

<BR><FONT SIZE=2 FACE="Arial">WorkQueueManager.requestComplete(TCPBaseRequestContext, IOException) line: 566  </FONT>

<BR><FONT SIZE=2 FACE="Arial">WorkQueueManager.attemptIO(TCPBaseRequestContext, boolean) line: 619    </FONT>

<BR><FONT SIZE=2 FACE="Arial">WorkQueueManager.workerRun(TCPBaseRequestContext, IOException) line: 952        </FONT>

<BR><FONT SIZE=2 FACE="Arial">WorkQueueManager$Worker.run() line: 1039        </FONT>

<BR><FONT SIZE=2 FACE="Arial">ThreadPool$Worker.run() line: 1475      </FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">The method where the exception is catched is:</FONT>
</P>
<BR>

<P><B><FONT COLOR="#7F0055" SIZE=2 FACE="Courier New">protected</FONT></B><FONT COLOR="#000000" SIZE=2 FACE="Courier New"></FONT><B> <FONT COLOR="#7F0055" SIZE=2 FACE="Courier New">void</FONT></B><FONT COLOR="#000000" SIZE=2 FACE="Courier New"> showResource(HttpServletRequest req, HttpServletResponse res) {</FONT>
</P>

<P><FONT COLOR="#000000" SIZE=2 FACE="Courier New">        CmsObject cms =</FONT><B> <FONT COLOR="#7F0055" SIZE=2 FACE="Courier New">null</FONT></B><FONT COLOR="#000000" SIZE=2 FACE="Courier New">;</FONT>

<BR><FONT COLOR="#000000" SIZE=2 FACE="Courier New">       </FONT><B> <FONT COLOR="#7F0055" SIZE=2 FACE="Courier New">try</FONT></B><FONT COLOR="#000000" SIZE=2 FACE="Courier New"> {</FONT>

<BR><FONT COLOR="#000000" SIZE=2 FACE="Courier New">            cms = initCmsObject(req, res);</FONT>

<BR><FONT COLOR="#000000" SIZE=2 FACE="Courier New">           </FONT> <FONT COLOR="#3F7F5F" SIZE=2 FACE="Courier New">// user is initialized, now deliver the requested resource</FONT>

<BR><FONT COLOR="#000000" SIZE=2 FACE="Courier New">            CmsResource resource = initResource(cms, cms.getRequestContext().getUri(), req, res);</FONT>

<BR><FONT COLOR="#000000" SIZE=2 FACE="Courier New">           </FONT><B> <FONT COLOR="#7F0055" SIZE=2 FACE="Courier New">if</FONT></B><FONT COLOR="#000000" SIZE=2 FACE="Courier New"> (resource !=</FONT><B> <FONT COLOR="#7F0055" SIZE=2 FACE="Courier New">null</FONT></B><FONT COLOR="#000000" SIZE=2 FACE="Courier New">) {</FONT>

<BR><FONT COLOR="#000000" SIZE=2 FACE="Courier New">               </FONT> <FONT COLOR="#3F7F5F" SIZE=2 FACE="Courier New">// a file was read, go on process it</FONT>

<BR><FONT COLOR="#000000" SIZE=2 FACE="Courier New">               </FONT> <FONT COLOR="#0000C0" SIZE=2 FACE="Courier New">m_resourceManager</FONT><FONT COLOR="#000000" SIZE=2 FACE="Courier New">.loadResource(cms, resource, req, res);</FONT>

<BR><FONT COLOR="#000000" SIZE=2 FACE="Courier New">               </FONT> <FONT COLOR="#0000C0" SIZE=2 FACE="Courier New">m_sessionManager</FONT><FONT COLOR="#000000" SIZE=2 FACE="Courier New">.updateSessionInfo(cms, req);</FONT>

<BR><FONT COLOR="#000000" SIZE=2 FACE="Courier New">            }</FONT>
</P>

<P><FONT COLOR="#000000" SIZE=2 FACE="Courier New">        }</FONT><B> <FONT COLOR="#7F0055" SIZE=2 FACE="Courier New">catch</FONT></B><FONT COLOR="#000000" SIZE=2 FACE="Courier New"> (Throwable t) {</FONT>

<BR><FONT COLOR="#000000" SIZE=2 FACE="Courier New">            errorHandling(cms, req, res, t);</FONT>

<BR><FONT COLOR="#000000" SIZE=2 FACE="Courier New">        }</FONT>

<BR><FONT COLOR="#000000" SIZE=2 FACE="Courier New">    }</FONT>
</P>

<P><FONT COLOR="#000000" SIZE=2 FACE="Courier New">The exception and backtrace are:</FONT>
</P>

<P><FONT SIZE=2 FACE="Courier New">java.lang.NumberFormatException: UUID has to be represented by the standard 36-char representation</FONT>
</P>

<P><FONT SIZE=2 FACE="Courier New">class org.safehaus.uuid.UUID</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class org.opencms.util.CmsUUID</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class org.opencms.main.CmsSessionManager</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class org.opencms.main.CmsSessionManager</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class org.opencms.main.CmsSessionManager</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class org.opencms.main.OpenCmsCore</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class org.opencms.main.OpenCmsCore</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class org.opencms.main.OpenCmsCore</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class org.opencms.main.OpenCmsServlet</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class org.opencms.main.OpenCmsServlet</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class javax.servlet.http.HttpServlet</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class javax.servlet.http.HttpServlet</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class com.ibm.ws.webcontainer.servlet.ServletWrapper</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class com.ibm.ws.webcontainer.servlet.ServletWrapper</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class com.ibm.ws.webcontainer.servlet.CacheServletWrapper</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class com.ibm.ws.webcontainer.WebContainer</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class com.ibm.ws.webcontainer.channel.WCChannelLink</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class com.ibm.ws.http.channel.inbound.impl.HttpInboundLink</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class com.ibm.ws.http.channel.inbound.impl.HttpInboundLink</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class com.ibm.ws.http.channel.inbound.impl.HttpInboundLink</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class com.ibm.ws.tcp.channel.impl.WorkQueueManager</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class com.ibm.ws.tcp.channel.impl.WorkQueueManager</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class com.ibm.ws.tcp.channel.impl.WorkQueueManager</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker</FONT>

<BR><FONT SIZE=2 FACE="Courier New">class com.ibm.ws.util.ThreadPool$Worker</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">I don't know why this happens here and not elsewhere. Other values for uuid I saw where URLs, and other strange values like c7a2e451-11b7-11db-91cd-fdbae480bac9 or c7a79f4c-11b7-11db-91cd-fdbae480bac9 or even 00000000-0000-0000-0000-000000000000: they passed without error (but all had the same pattern). Only that specific JSESSIONID value made it crash.</FONT></P>

<P><FONT SIZE=2 FACE="Arial">So… will that help someone fix it?</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">I'm available for some more tests: everything is now setup on my PC.</FONT>
<BR>

<BR><FONT SIZE=2 FACE="Arial">Thanks</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">Olivier</FONT>
</P>

<P><B><FONT COLOR="#400040" SIZE=1 FACE="Verdana">Olivier CHIROUZE<BR>
</FONT></B><I><FONT COLOR="#000000" SIZE=1 FACE="Verdana">I&0 Infrastructure<BR>
</FONT></I><FONT COLOR="#000000" SIZE=1 FACE="Verdana"> <BR>
</FONT><U></U><U><B><FONT COLOR="#0000A0" SIZE=1 FACE="Verdana">Volvo Information Technology                                                                                            </FONT></B></U><B></B><FONT COLOR="#000000" FACE="Times New Roman"></FONT> </P>

<P><FONT COLOR="#000080" SIZE=1 FACE="Arial">402 avenue Charles de Gaulle   </FONT><SPAN LANG="sv"> <FONT COLOR="#000000" SIZE=1 FACE="Wingdings">(<FONT FACE="Courier New"></FONT></FONT></SPAN><SPAN LANG="fr"> <FONT COLOR="#000080" SIZE=1 FACE="Arial">phone: +33 (0)4.72.96.89.39      <BR>
API: VNX 0A0 0 02                      </FONT></SPAN><SPAN LANG="sv"> <FONT COLOR="#000000" SIZE=1 FACE="Wingdings 2">6<FONT FACE="Courier New"></FONT></FONT></SPAN><SPAN LANG="fr"> <FONT COLOR="#000080" SIZE=1 FACE="Arial">telecopy: +33(0)4.72.96.76.80<BR>
69635 Vénissieux Cedex - France</FONT></SPAN><SPAN LANG="sv"> <FONT COLOR="#000000" SIZE=1 FACE="Wingdings">*</FONT><FONT COLOR="#000000" SIZE=1 FACE="Wingdings 2"><FONT FACE="Courier New"></FONT></FONT></SPAN><SPAN LANG="fr"> </SPAN><A HREF="mailto:olivier.chirouze@external.renault-trucks.com"><SPAN LANG="fr"></SPAN><SPAN LANG="fr"></SPAN><SPAN LANG="fr"><U><FONT COLOR="#0000FF" SIZE=1 FACE="Arial">olivier.chirouze@volvo.com</FONT></U></SPAN><SPAN LANG="fr"></SPAN></A><SPAN LANG="fr"></SPAN><SPAN LANG="sv"></SPAN><SPAN LANG="fr"></SPAN>
</P>
<BR>

</BODY>
</HTML>