Hi all, I'm using a Resource Link with a WebResource to show a PDF Document in the browser. This works fine for Websphere 6.1.0.2 on Windows 2003 Server but fails on WebSphere 6.1.0.2 on Solaris:
[03.12.10 08:59:32:930 CET] 00000024 SystemOut O 2010-12-03 08:59:32,929 returning fileResource ... at com.csc.pts.mmg.web.panels.mandate.MandateLinksPanel$1.getResourceStream(MandateLinksPanel.java:95) [03.12.10 08:59:32:935 CET] 00000024 SystemOut O 2010-12-03 08:59:32,931 String index out of range: -1 at org.apache.wicket.RequestCycle.logRuntimeException(RequestCycle.java:1529) java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at java.lang.String.substring(String.java:1768) at java.lang.String.substring(String.java:1735) at com.ibm.ws.webcontainer.webapp.WebApp.getMimeType(WebApp.java:2109) at com.ibm.ws.webcontainer.facade.ServletContextFacade.getMimeType(ServletContextFacade.java:84) at org.apache.wicket.Response.detectContentType(Response.java:358) at org.apache.wicket.request.target.resource.ResourceStreamRequestTarget.configure(ResourceStreamRequestTarget.java:236) at org.apache.wicket.request.target.resource.ResourceStreamRequestTarget.respond(ResourceStreamRequestTarget.java:150) at org.apache.wicket.request.AbstractRequestCycleProcessor.respond(AbstractRequestCycleProcessor.java:105) at org.apache.wicket.RequestCycle.respond(RequestCycle.java:1267) at org.apache.wicket.RequestCycle.step(RequestCycle.java:1334) at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1436) at org.apache.wicket.RequestCycle.request(RequestCycle.java:545) at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:484) at org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:138) at javax.servlet.http.HttpServlet.service(HttpServlet.java:743) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:966) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478) at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:463) at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:92) at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:744) at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1433) at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:93) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:465) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:394) at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102) at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:152) at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:213) at com.ibm.io.async.AbstractAsyncFuture.fireCompletionActions(AbstractAsyncFuture.java:195) at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136) at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:194) at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:741) at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:863) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1510) The code in Wicket: WebResource pdfSignatureDocument = new WebResource() { private static final long serialVersionUID = 1L; @Override protected void setHeaders(WebResponse response) { super.setHeaders(response); response.setAttachmentHeader( "signature.pdf"); } @Override public IResourceStream getResourceStream() { log.debug("Printing mandate PDF for mandate" + selectedMandate .getReference()); ArrayList<Serializable> list = new ArrayList<Serializable>(); list.add(selectedMandate); MmgReportManager rm = new MmgReportManager(); File pdfMandate = null; try { pdfMandate = rm.exportReportAsFile(ReportTypes.SELECTED_MANDATE, list, SupportedFileTypes.PDF); } catch (PtsException e) { log.error(e); error(e); } log.debug("returning fileResource ..."); return new FileResourceStream(pdfMandate); } }; pdfSignatureDocument.setCacheable(false); add(createPDFSignatureDocumentLink = new ResourceLink<WebResource>("createPDFSignatureDocument", pdfSignatureDocument));