cancel
Showing results for 
Search instead for 
Did you mean: 

No encuentra la carpeta donde guardar el documento

gonial
Champ in-the-making
Champ in-the-making
Buenas chic@s.

He cambiado algo el código que tenia para trabajar con Alfresco, ya que tenía problemas cuando queria guardar un documento en una carpeta ya existente en el proyecto.

Con la modificación actual he dejado el código tal que así:


   public String uploadFile(String idfolder, byte[] bytes, String fileName,
         String contentType) {
      String idDoc = null;
      // properties
      Folder folder = (Folder) session.getObject(idfolder);
      Map<String, Object> newDocProps = new HashMap<String, Object>();
      newDocProps.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document");
      newDocProps.put(PropertyIds.NAME, fileName);
      ContentStream contentStream = new ContentStreamImpl(fileName,
            BigInteger.valueOf(bytes.length), contentType,
            new ByteArrayInputStream(bytes));
      try {
         // create the file
         Document doc = folder.createDocument(newDocProps, contentStream,
               VersioningState.NONE);
         idDoc = doc.getId();
      } catch (CmisConstraintException e) {
         System.out.println("No se pudo crear el archivo");
      }
      return idDoc;
   }


En la línea siguiente: Folder folder = (Folder) session.getObject(idfolder), idFolder contiene /carpetaDeseada/, que ya esta creada en alfresco, pero obtengo el siguiente error llegado a ese punto.

ADVERTENCIA: /subir.xhtml @98,49 fileUploadListener="#{documentoMBean.handleFileUpload}": org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException: Object not found:
javax.el.ELException: /subir.xhtml @98,49 fileUploadListener="#{documentoMBean.handleFileUpload}": org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException: Object not found:
   at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:111)
   at org.primefaces.component.fileupload.FileUpload.broadcast(FileUpload.java:310)
   at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:755)
   at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:931)
   at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
   at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
   at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
   at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at alfresco.HibernateSessionRequestFilter.doFilter(HibernateSessionRequestFilter.java:52)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
   at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
   at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
   at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
   at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
   at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
   at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
   at java.lang.Thread.run(Thread.java:662)
Caused by: org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException: Object not found:
   at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.convertStatusCode(AbstractAtomPubService.java:484)
   at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.read(AbstractAtomPubService.java:645)
   at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.getObjectInternal(AbstractAtomPubService.java:868)
   at org.apache.chemistry.opencmis.client.bindings.spi.atompub.ObjectServiceImpl.getObject(ObjectServiceImpl.java:626)
   at org.apache.chemistry.opencmis.client.runtime.SessionImpl.getObject(SessionImpl.java:519)
   at org.apache.chemistry.opencmis.client.runtime.SessionImpl.getObject(SessionImpl.java:497)
   at alfresco.DocumentoManagedBean.uploadFile(DocumentoManagedBean.java:357)
   at alfresco.DocumentoManagedBean.handleFileUpload(DocumentoManagedBean.java:493)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
   at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:273)
   at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
   … 27 more
16-jun-2015 13:41:43 com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError
GRAVE: org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException: Object not found:
   at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.convertStatusCode(AbstractAtomPubService.java:484)
   at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.read(AbstractAtomPubService.java:645)
   at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.getObjectInternal(AbstractAtomPubService.java:868)
   at org.apache.chemistry.opencmis.client.bindings.spi.atompub.ObjectServiceImpl.getObject(ObjectServiceImpl.java:626)
   at org.apache.chemistry.opencmis.client.runtime.SessionImpl.getObject(SessionImpl.java:519)
   at org.apache.chemistry.opencmis.client.runtime.SessionImpl.getObject(SessionImpl.java:497)
   at alfresco.DocumentoManagedBean.uploadFile(DocumentoManagedBean.java:357)
   at alfresco.DocumentoManagedBean.handleFileUpload(DocumentoManagedBean.java:493)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
   at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:273)
   at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
   at org.primefaces.component.fileupload.FileUpload.broadcast(FileUpload.java:310)
   at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:755)
   at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:931)
   at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
   at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
   at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
   at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at alfresco.HibernateSessionRequestFilter.doFilter(HibernateSessionRequestFilter.java:52)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
   at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
   at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
   at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
   at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
   at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
   at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
   at java.lang.Thread.run(Thread.java:662)

¿Algunda sugerencia? Yo solo quiero poder almacenar un documento en un fichero ya existente.

Un saludo!!
16 REPLIES 16

cristinamr
World-Class Innovator
World-Class Innovator
Te refieres a un documento cualquiera que tengas en alfresco? O a cómo hacerlo via cmis? No me queda claro si esto tiene que ver con lo anterior o no.
--
VenziaIT: helping companies since 2005! Our ECM products: AQuA & Seidoc

gonial
Champ in-the-making
Champ in-the-making
Perdona por no haberme explicado bien, a veces escribo como si fuera una nota para mi.

Pues gracias a la ayuda que me aportasteis tu y Angel, ya conseguí subir un fichero en Alfresco y almacenar las propiedades que me son necesarias en una base de datos externa (como por ejemplo "tipo","Id del documento en Alfresco(getId)","URL del documento en Alfresco(getContentUrl)", etc). 

Mi siguiente intención es que el usuario que vaya a usar mi aplicación web pueda descargar el documento alojado en alfresco sin necesidad de conocer los datos de acceso (Admin/User), y a día de hoy no he conseguido solventar ese problema en mi proyecto, porque si pongo la URL que rescato con "getContentUrl" en el navegador, me pide el usuario y el pass para poder descargar el documento.

Como para subir el documento lo hice vía Cmis, supongo que para descargarlo tendré que seguir usándolo.

Gracias por la respuesta Cristina.

cristinamr
World-Class Innovator
World-Class Innovator
No hay problema ^_^

Pues mira, a mi me ocurrio eso hace algún tiempo y lo solucioné añadiendo al final de la url

?guest=true

Para ello, en tu alfresco-global.properties debes añadir esta linea:

alfresco.authentication.allowGuestLogin=true

Prueba y nos comentas! Smiley Wink
--
VenziaIT: helping companies since 2005! Our ECM products: AQuA & Seidoc

gonial
Champ in-the-making
Champ in-the-making
Muchísimas gracias y feliz fin de semana.

Voy a buscar el alrchivo para añadir la linea.

Un saludo!!

[Así he dejado el fichero, incluyendo la linea en la ultima posición]



###############################
## Common Alfresco Properties #
###############################

dir.root=/Applications/alfresco-5.0.d/alf_data

alfresco.context=alfresco
alfresco.host=127.0.0.1
alfresco.port=8080
alfresco.protocol=http

share.context=share
share.host=127.0.0.1
share.port=8080
share.protocol=http

### database connection properties ###
db.driver=org.postgresql.Driver
db.username=alfresco
db.password=enter
db.name=alfresco
db.url=jdbc:postgresql://localhost:5432/${db.name}
# Note: your database must also be able to accept at least this many connections.  Please see your database documentation for instructions on how to configure this.
db.pool.max=275
db.pool.validate.query=SELECT 1

# The server mode. Set value here
# UNKNOWN | TEST | BACKUP | PRODUCTION
system.serverMode=UNKNOWN

### FTP Server Configuration ###
ftp.port=2121

### RMI registry port for JMX ###
alfresco.rmi.services.port=50500

### External executable locations ###
ooo.exe=/Applications/alfresco-5.0.d/libreoffice.app/Contents/MacOS/soffice
ooo.enabled=true
ooo.port=8100
img.root=/Applications/alfresco-5.0.d/common
img.dyn=${img.root}/lib
img.exe=${img.root}/bin/convert
swf.exe=/Applications/alfresco-5.0.d/common/bin/pdf2swf
swf.languagedir=/Applications/alfresco-5.0.d/common/japanese

jodconverter.enabled=false
jodconverter.officeHome=/Applications/alfresco-5.0.d/libreoffice.app/Contents
jodconverter.portNumbers=8100

### Initial admin password ###
alfresco_user_store.adminpassword=970eff8385ac9f24acc9213763319ba1

### E-mail site invitation setting ###
notification.email.siteinvite=false

### License location ###
dir.license.external=/Applications/alfresco-5.0.d

### Solr indexing ###
index.subsystem.name=solr4
dir.keystore=${dir.root}/keystore
solr.port.ssl=8443

### BPM Engine ###
system.workflow.engine.jbpm.enabled=false

### Allow extended ResultSet processing
security.anyDenyDenies=false
alfresco.authentication.allowGuestLogin=true

cristinamr
World-Class Innovator
World-Class Innovator
Vale, una vez hecho: Coge a mano una url, copiala y añadele al final lo que te dije y mira a ver si puedes verlo a través de firefox o tu navegador sin que te pida autenticación… Si esto funciona tu problema estaría resuelto  Smiley Wink
--
VenziaIT: helping companies since 2005! Our ECM products: AQuA & Seidoc

gonial
Champ in-the-making
Champ in-the-making
Buenos días Cristina.

Pues no sé si lo estoy haciendo mal ya que de un mismo fichero tengo dos URL distintas, la que consigo analizando la variable ( var.getContentUrl() ) dentro del IDE de desarrollo y la que puedo encontrar dentro de Alfresco, cuando tengo la vista previa del Documento (en mi caso una imagen). Te mando por privado las dos URL para que me digas si alguna de las dos son las mismas que tú utilizabas para poder descargar el documento añadiendo
?guest=true
ya que a mí siempre me pide User/Login para poder descargar el documento.

Voy a ver si encuentro mientras alguna otra solución.

Un saludo y gracias de nuevo!!

gonial
Champ in-the-making
Champ in-the-making
Todo solucionado con el uso de Tickets en la gestión de alfresco.

Gracias chicos!!