cancel
Showing results for 
Search instead for 
Did you mean: 

Error when downloading a file from Nuxeo.

boonhero_
Champ in-the-making
Champ in-the-making

Good Day!

Kindly help me with my problem, I am using Nuxeo 5.9.1 platform, and Linux precise1-Ubuntux86_64 server on a vmware. , i use nuxeo automation client to download nuxeo files. It works fine when I use mvn tomcat:run on my local, but it does not work when I will mvn clean install, and use the jar file it creates.

Here is the log from tomcat.

java.lang.RuntimeException: Cannot execute {Authorization=Basic QWRtaW5pc3RyYXRvcjpBZG1pbmlzdHJhdG9y} at org.nuxeo.ecm.automation.client.jaxrs.impl.HttpConnector.execute(HttpConnector.java:122) at org.nuxeo.ecm.automation.client.jaxrs.spi.ConnectorHandler.execute(ConnectorHandler.java:30) at org.nuxeo.ecm.automation.client.jaxrs.spi.DefaultSession.getFile(DefaultSession.java:127) at tv.migo.cms.domain.service.NuxeoAutomationClientService.getFile(NuxeoAutomationClientService.java:163) at tv.migo.cms.domain.service.NuxeoAutomationClientService.recursiveAssetFileCreation(NuxeoAutomationClientService.java:138) at tv.migo.cms.domain.service.NuxeoAutomationClientService.recursiveAssetFileCreation(NuxeoAutomationClientService.java:135) at tv.migo.cms.domain.service.publish.contentlibrary.TitleCbPublisher.publish(TitleCbPublisher.java:73) at tv.migo.cms.domain.service.publish.PublishContentLibraryService.publish(PublishContentLibraryService.java:26) at tv.migo.cms.domain.service.publish.PublishService.publish(PublishService.java:33) at tv.migo.cms.domain.resource.PublishResource.publish(PublishResource.java:46) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:214) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:748) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:931) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:822) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:807) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) Caused by: java.io.IOException: No such file or directory at java.io.UnixFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(File.java:1006) at java.io.File.createTempFile(File.java:1989) at java.io.File.createTempFile(File.java:2040) at org.nuxeo.ecm.automation.client.jaxrs.util.IOUtils.copyToTempFile(IOUtils.java:58) at org.nuxeo.ecm.automation.client.jaxrs.spi.Request.readBlob(Request.java:158) at org.nuxeo.ecm.automation.client.jaxrs.spi.Request.handleResult(Request.java:126)

My code.

final FileBlob fileBlob = this.getFile(document);
            final File file = fileBlob.getFile();
            logger.info(objectMapper.writeValueAsString(document));
            final File targetFile = new File(parent, fileBlob.getFileName());
            logger.info("file copied to : {}", targetFile.getAbsolutePath());
            FileUtils.copyFile(file, targetFile);

            file.delete();


public FileBlob getFile(Document doc) throws Exception {
    Document fileDocument = (Document) session.newRequest(
            "Document.Fetch").setHeader(
            Constants.HEADER_NX_SCHEMAS, "*").set("value", doc.getPath()).execute();
    // get the file content property
    PropertyMap map = fileDocument.getProperties().getMap("file:content");
    // get the data URL
    String path = map.getString("data");
    return (FileBlob) session.getFile(path);
}

Some dependencies I use for nuxeo automation client.

 <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.3.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore</artifactId>
        <version>4.3.2</version>
    </dependency>
    <dependency>
        <groupId>net.sf.ezmorph</groupId>
        <artifactId>ezmorph</artifactId>
        <version>1.0.6</version>
    </dependency>
    <dependency>
        <groupId>net.sf.json-lib</groupId>
        <artifactId>json-lib</artifactId>
        <version>2.4</version>
    </dependency>
    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4.7</version>
    </dependency>



    <dependency>
        <groupId>commons-httpclient</groupId>
        <artifactId>commons-httpclient</artifactId>
        <version>3.1</version>
    </dependency>

    <dependency>
        <groupId>org.nuxeo.ecm.automation</groupId>
        <artifactId>nuxeo-automation-client</artifactId>
        <version>5.9.1</version>
    </dependency>

i even used this:

    <dependency>
        <groupId>org.nuxeo.ecm.automation</groupId>
        <artifactId>nuxeo-automation-client</artifactId>
        <version>5.9.1</version>
        <classifier>jar-with-dependencies</classifier>
    </dependency>

Java version tried, 1.6 and 1.7

    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>${java-version}</source>
                <target>${java-version}</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.1.1</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
    </plugins>
</build>
1 ACCEPTED ANSWER

Thierry_Delprat
Confirmed Champ
Confirmed Champ

Hi,

Based on your log Caused by: java.io.IOException: No such file or directory at java.io.UnixFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(File.java:1006) at java.io.File.createTempFile(File.java:1989) at java.io.File.createTempFile(File.java:2040) at

So this looks like the java.io.File.createTempFile does not work on your platform.

Looks like you may have a Java temp directory pointing to a non existent directory.

Check that you have not defined a Java Env variable java.io.tmpdir pointing to a non existing directory. Otherwise, if you are ruuning linux : check that the default tmp dir (/tmp) does exists.

Tiry

View answer in original post

3 REPLIES 3

Thierry_Delprat
Confirmed Champ
Confirmed Champ

Hi,

Based on your log Caused by: java.io.IOException: No such file or directory at java.io.UnixFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(File.java:1006) at java.io.File.createTempFile(File.java:1989) at java.io.File.createTempFile(File.java:2040) at

So this looks like the java.io.File.createTempFile does not work on your platform.

Looks like you may have a Java temp directory pointing to a non existent directory.

Check that you have not defined a Java Env variable java.io.tmpdir pointing to a non existing directory. Otherwise, if you are ruuning linux : check that the default tmp dir (/tmp) does exists.

Tiry

Yes, you are most probably right! Thanks!

It worked thanks.