簡體   English   中英

從Java Servlet調用獨立的Java應用程序

[英]calling stand alone java application from a java servlet

我是Java新手。 我一直在嘗試做一些Java應用程序開發。

  1. 我創建了一個獨立的Java應用程序。 它是一個基本的計算器應用程序,它執行基本操作,如加,減,乘和除。 它是使用Java swing和AWT開發的。

  2. 我有一個Java Servlet應用程序,該應用程序從用戶那里獲取兩個輸入(數字)並返回結果。 基本上,不管基本計算器做什么,Servlet都可以對數字進行此類操作,然后將結果返回給Web瀏覽器的客戶端。 (客戶端只是一個HTML文件)

我不想由servlet進行操作,而是想從servlet中調用獨立的應用程序來進行操作,然后將結果返回給servlet。 然后,servlet將結果返回給客戶端。 是否可以從Servlet調用獨立的Java應用程序。 如果是這樣,有什么不同的方式?

要調用您的應用程序,您必須根據操作系統編寫bat或sh文件。 -使用processbuilder調用命令-示例代碼符合您的要求

if (osname.indexOf("nux") >= 0 || osname.indexOf("nix") >= 0) 
                {
                    //for sending  request to sh file
                    filePath = request.getSession().getServletContext().getRealPath("")+"/WEB-INF/classes/";
                    cmdList.add("sh");
                    cmdList.add("callDesktopApp.sh");
                    cmdList.add(path);
                    }
                else
                {
                    // for windows
                    String jrePath="";
                    String f="C:/Windows/SysWOW64";
                    if(new File(f).exists())
                    {
                        jrePath="C:\\Program Files (x86)\\Java\\jre6\\bin\\java";
                        jrePath="\""+jrePath+"\"";
                    }
                    else 
                    {
                        jrePath="C:\\Program Files\\Java\\jre6\\bin\\java";
                        jrePath="\""+jrePath+"\"";
                    }
                    filePath = request.getSession().getServletContext().getRealPath("")+"\\WEB-INF\\classes\\";
                cmdList.add("cmd");
                    cmdList.add("/c");
                    cmdList.add("callDesktopApp.bat");
                    cmdList.add(path);
                    cmdList.add(jrePath);
                }   

                pb=new ProcessBuilder(cmdList);

                pb.directory(new File(filePath));
                process = pb.start();

                //Read out dir output
                InputStream is = process.getInputStream();
                InputStreamReader isr = new InputStreamReader(is);
                BufferedReader br = new BufferedReader(isr);
                String line;
                while ((line = br.readLine()) != null) {
                    System.out.println(line);
                }
                br.close();
                is.close();
                isr.close();

            }

希望對您有所幫助。

暫無
暫無

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

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