[jboss-user] [JBoss Portal] - portlet upload

rob_gar_esp do-not-reply at jboss.com
Thu May 29 12:21:41 EDT 2008


Hi,

I'm implementing a very basic file uploader portlet such, actually I'm trying the portlet provided in the samples:


  | public class ResumeTask extends GenericPortlet {
  | 
  | 	  public void processAction(ActionRequest req, ActionResponse resp) throws PortletException, PortletSecurityException, IOException
  | 	   {
  | 
  | 	      //
  | 	      List fileNames = new ArrayList();
  | 	      List fileSizes = new ArrayList();
  | 	      List descriptions = new ArrayList();
  | 
  | 	      //
  | 	      try
  | 	      {
  | 	         DiskFileItemFactory factory = new DiskFileItemFactory();
  | 	         PortletFileUpload upload = new PortletFileUpload(factory);
  | 	         List fileItems = upload.parseRequest(req);
  | 	         for (Iterator iterator = fileItems.iterator(); iterator.hasNext();)
  | 	         {
  | 	            FileItem item = (FileItem)iterator.next();
  | 	            if (item.getFieldName().equals("File"))
  | 	            {
  | 	               fileNames.add("" + item.getName());
  | 	               fileSizes.add("" + item.getSize());
  | 	            }
  | 	            else if (item.getFieldName().equals("Description"))
  | 	            {
  | 	               descriptions.add("" + item.getString(req.getCharacterEncoding()));
  | 	            }
  | 	         }
  | 	      }
  | 	      catch (FileUploadException e)
  | 	      {
  | 	         throw new PortletException(e);
  | 	      }
  | 
  | 	      //
  | 	      resp.setRenderParameter("fileNames", (String[])fileNames.toArray(new String[fileNames.size()]));
  | 	      resp.setRenderParameter("fileSizes", (String[])fileSizes.toArray(new String[fileSizes.size()]));
  | 	      resp.setRenderParameter("contents", (String[])descriptions.toArray(new String[descriptions.size()]));
  | 	   }
  | 
  | 	   protected void doView(RenderRequest req, RenderResponse resp) throws PortletException, PortletSecurityException, IOException
  | 	   {
  | 	      //
  | 	      resp.setContentType("text/html");
  | 
  | 	      //
  | 	      PrintWriter writer = resp.getWriter();
  | 
  | 	      String[] fileNames = req.getParameterValues("fileNames");
  | 	      String[] fileSizes = req.getParameterValues("fileSizes");
  | 	      String[] descriptions = req.getParameterValues("contents");
  | 	      if (descriptions != null)
  | 	      {
  | 	         for (int i = 0; i < descriptions.length; i++)
  | 	         {
  | 	            writer.println("Received description " + descriptions + "<br/>");
  | 	         }
  | 	      }
  | 	      if (fileNames != null && fileSizes != null && fileNames.length == fileSizes.length)
  | 	      {
  | 	         for (int i = 0; i < fileNames.length; i++)
  | 	         {
  | 	            writer.println("Received file " + fileNames + " with size " + fileSizes + "<br/>");
  | 	         }
  | 	      }
  | 
  | 	      //
  | 	      writer.println("<form action=\"" + resp.createActionURL() + "\" method=\"post\" enctype=\"multipart/form-data\">");
  | 	      writer.println("<table>");
  | 	      writer.println("<tr><td>Description:</td>");
  | 	      writer.println("<td><input type=\"text\" name=\"Description\"></td></tr>");
  | 	      writer.println("<tr><td>File:</td>");
  | 	      writer.println("<td><input type=\"file\" name=\"File\"></td></tr>");
  | 	      writer.println("<tr><td><input type=\"submit\" name=\"Upload\"></td></tr>");
  | 	      writer.println("</table>");
  | 	      writer.println("</form>");
  | 	   }
  | }
  | 


But I'm getting a nasty exception:


anonymous wrote : 
  | 
  | 18:11:53,078 ERROR [DefaultPortalControlPolicy] Rendering portlet window  produced an error
  | org.jboss.portal.portlet.PortletInvokerException: javax.servlet.ServletException
  | 	at org.jboss.portal.portlet.container.PortletContainerInvoker.invoke(PortletContainerInvoker.java:212)
  | 	at org.jboss.portal.portlet.state.producer.ProducerPortletInvoker.invoke(ProducerPortletInvoker.java:233)
  | 	at org.jboss.portal.core.impl.portlet.state.ProducerPortletInvoker.org$jboss$portal$core$impl$portlet$state$ProducerPortletInvoker$invoke$aop(ProducerPortletInvoker.java:53)
  | 	at org.jboss.portal.core.impl.portlet.state.ProducerPortletInvoker$invoke_N8654503705355129869.invokeNext(ProducerPortletInvoker$invoke_N8654503705355129869.java)
  | 	at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:126)
  | 	at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:195)
  | 	at org.jboss.portal.core.impl.portlet.state.ProducerPortletInvoker$invoke_N8654503705355129869.invokeNext(ProducerPortletInvoker$invoke_N8654503705355129869.java)
  | 	at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:126)
  | 	at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:195)
  | 	at org.jboss.portal.core.impl.portlet.state.ProducerPortletInvoker$invoke_N8654503705355129869.invokeNext(ProducerPortletInvoker$invoke_N8654503705355129869.java)
  | 	at org.jboss.portal.core.impl.portlet.state.ProducerPortletInvoker.invoke(ProducerPortletInvoker.java)
  | 	at org.jboss.portal.portlet.federation.impl.FederatedPortletInvokerService.invoke(FederatedPortletInvokerService.java:147)
  | 	at org.jboss.portal.portlet.federation.impl.FederatingPortletInvokerService.invoke(FederatingPortletInvokerService.java:150)
  | 	at org.jboss.portal.core.impl.model.instance.InstanceContainerImpl$1.invoke(InstanceContainerImpl.java:99)
  | 	at org.jboss.portal.common.invocation.Invocation.invokeNext(Invocation.java:131)
  | 	at org.jboss.portal.portlet.management.PortletContainerManagementInterceptorImpl.invoke(PortletContainerManagementInterceptorImpl.java:58)
  | 	at org.jboss.portal.portlet.invocation.PortletInterceptor.invoke(PortletInterceptor.java:38)
  | 
  | 
  | 
  | 
  | 
  | Caused by: java.lang.LinkageError: loader constraints violated when linking org/apache/commons/fileupload/FileItemFactory class
  | 	at com.mnemo.siwo.portlet.ResumeTask.processAction(ResumeTask.java:62)
  | 	at org.jboss.portal.portlet.impl.jsr168.PortletContainerImpl.invokeAction(PortletContainerImpl.java:458)
  | 	at org.jboss.portal.portlet.impl.jsr168.PortletContainerImpl.dispatch(PortletContainerImpl.java:401)
  | 	at org.jboss.portal.portlet.container.PortletContainerInvoker$1.invoke(PortletContainerInvoker.java:86)
  | 	at org.jboss.portal.common.invocation.Invocation.invokeNext(Invocation.java:131)
  | 	at org.jboss.portal.core.aspects.portlet.TransactionInterceptor.org$jboss$portal$core$aspects$portlet$TransactionInterceptor$invokeNotSupported$aop(TransactionInterceptor.java:86)
  | 	at org.jboss.portal.core.aspects.portlet.TransactionInterceptor$invokeNotSupported_N4547270787964792031.invokeNext(TransactionInterceptor$invokeNotSupported_N4547270787964792031.java)
  | 	at org.jboss.aspects.tx.TxPolicy.invokeInNoTx(TxPolicy.java:66)
  | 	at org.jboss.aspects.tx.TxInterceptor$NotSupported.invoke(TxInterceptor.java:112)
  | 	at org.jboss.portal.core.aspects.portlet.TransactionInterceptor$invokeNotSupported_N4547270787964792031.invokeNext(TransactionInterceptor$invokeNotSupported_N4547270787964792031.java)
  | 	at org.jboss.aspects.tx.TxPolicy.invokeInNoTx(TxPolicy.java:66)
  | 	at org.jboss.aspects.tx.TxInterceptor$NotSupported.invoke(TxInterceptor.java:102)
  | 	at org.jboss.portal.core.aspects.portlet.TransactionInterceptor$invokeNotSupported_N4547270787964792031.invokeNext(TransactionInterceptor$invokeNotSupported_N4547270787964792031.java)
  | 	at org.jboss.portal.core.aspects.portlet.TransactionInterceptor.invokeNotSupported(TransactionInterceptor.java)
  | 	at org.jboss.portal.core.aspects.portlet.TransactionInterceptor.invoke(TransactionInterceptor.java:56)
  | 
  | 



The error occurs at line:

         PortletFileUpload upload = new PortletFileUpload(factory);


Please advise. Tx!

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4154379#4154379

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4154379



More information about the jboss-user mailing list