簡體   English   中英

Openshift-java.net.BindException:權限被拒絕

[英]Openshift - java.net.BindException: Permission denied

我試圖創建一個簡單的Java應用程序,該應用程序從URL下載文件,存儲文件,然后將文件上傳到FTP進行存儲。

我有一個(本地)工作代碼,可以將文件下載到C:\\上的本地計算機上,並使用本地文件上傳到FTP。

我想將此應用程序移至OpenShift並從中在Tomcat6中運行。 這意味着我必須將C:\\驅動器引用更改為OpenShift中的目錄。 我引用了“ tmp”目錄。

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.net.URL;
    import java.text.SimpleDateFormat;
    import java.util.Date;

    import org.apache.commons.net.ftp.FTPClient;
    import org.apache.log4j.Logger;


    public class AppRun {


        public static void main(String[] args) {

            Logger log = Logger.getLogger(AppRun.class);

            Date date = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

            String formattedDate = sdf.format(date);

            downloadFile(formattedDate);
            uploadFile(formattedDate);
        }

        // FILE DOWNLOAD
        public static void downloadFile(String formattedDate){

            Logger log = Logger.getLogger(AppRun.class);

            String sourceURL = "http://websiteURL/pdf/"+formattedDate+".pdf";
            String destinationLocation = "/tmp/"+formattedDate+".pdf";
            try {
                org.apache.commons.io.FileUtils.copyURLToFile(
                                new URL(sourceURL), 
                                new File(destinationLocation)
                                );
                log.warn("/tmp/"+formattedDate+".pdf downloaded successfully!" );
            } 
            catch (Exception e) { 
                log.error(e);
                log.error("Source URL : " + "http://websiteURL/pdf/"+formattedDate+".pdf" + " Destination URL : " + "/tmp/"+formattedDate+".pdf");
                System.out.println("No file found!");
            }

        }

        // FILE UPLOAD
        public static void uploadFile(String formattedDate){

            Logger log = Logger.getLogger(AppRun.class);

            FTPClient client = new FTPClient();
            FileInputStream fis = null;

            try {

                client.connect("ftp.domain.com");
                client.login("user", "pass");

                // Create an InputStream of the file to be uploaded         
                String originalFile = "/tmp/"+formattedDate+".pdf";
                fis = new FileInputStream(originalFile);

                //
                // Store file to server
                //
                String destinationFileName = formattedDate +".pdf";
                client.storeFile(destinationFileName, fis);
                log.warn("File " + formattedDate +".pdf uploaded successfully!");
                client.logout();

            } catch (IOException e) {
                log.error(e);
                e.printStackTrace();
            } finally {
                try {
                    if (fis != null) {
                        fis.close();
                    }
                    client.disconnect();
                } catch (IOException e) {
                    log.error(e);
                    e.printStackTrace();
                }
            }

        }
    }

運行代碼時,我可以下載文件,但上傳部分失敗:

/var/lib/openshift/XXXXXXXXXXXXXXXXXXXX/app-root/runtime/repo//.openshift/cron/minutely/java:2015-09-15 22:27:08 WARN AppRun:41-/tmp/20150915.pdf成功下載! 2015-09-15 22:27:09錯誤AppRun:77-java.net.BindException:權限被拒絕java.net.BindException:java.net.AbstractPlainSocketImpl的java.net.PlainSocketImpl.socketBind(本機方法)的權限被拒絕。 java.net.ServerSocket上的bind(AbstractPlainSocketImpl.java:376)java.net.ServerSocket上的bind(ServerSocket.java:376).javax.net.DefaultServerSocketFactory.createServerSocket(ServerSocketFactory.java: 231),網址為org.apache.commons.net.ftp.FTPClient。 openDataConnection(FTPClient.java:797)在org.apache.commons.net.ftp.FTPClient._storeFile(FTPClient.java:633)在org.apache.commons.net.ftp.FTPClient .__ storeFile(FTPClient.java:624)在org.apache.commons.net.ftp.FTPClient.storeFile(FTPClient.java:1976)在AppRun.uploadFile(AppRun.java:72)在AppRun.main(AppRun.java:25)

任何建議如何解決此問題將不勝感激! 謝謝。

配置客戶端為FTP PASSIVE模式。

登錄后嘗試添加ftp.enterLocalPassiveMode()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM