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));

Reply via email to