我已經創建了一個Java程序的可執行jar,我想通過我的Servlet在同一臺機器上訪問它,或者可以在另一臺機器上訪問它。我該怎麼做?如何從Servlet訪問/調用Java程序
我發現了許多使用網絡/ TCP調用Servlet的解決方案,但是我正在尋找Servlet來調用Java程序的功能。
我已經創建了一個Java程序的可執行jar,我想通過我的Servlet在同一臺機器上訪問它,或者可以在另一臺機器上訪問它。我該怎麼做?如何從Servlet訪問/調用Java程序
我發現了許多使用網絡/ TCP調用Servlet的解決方案,但是我正在尋找Servlet來調用Java程序的功能。
調用JavaProg的函數意味着產生另一個非常昂貴的JVM進程。 爲什麼不把這個jar文件(你寫的是你創建這個程序,所以你知道它的內置程序)放到你的web應用程序中,讓你的serlvet調用適當的類?
是一個可行的選擇嗎?
java程序和Java servlet沒有太大區別。所以你只需要導入java程序,它可以直接在你的java servlet中使用。
但是,有一點需要注意的是,您要導入的java程序,也就是您的jar文件必須放在WEB-INF/class /目錄中。
您可以簡單地將您的jar添加到您的servlet應用程序中。將該jar放入您的servlet並調用您想要在servlet中使用的適當類。
找到another solution這是更具體的
如果你可以運行在同一個JVM的一切,你可以做這樣的事情:
公共類啓動{ ... 公共靜態無效的主要(String [] args)引發異常{Class.forName(args [0]),programArgs(args,1)); }
protected static void launch(Class program, String[] args) throws Exception {
Method main = program.getMethod("main", new Class[]{String[].class});
main.invoke(null, new Object[]{args});
}
protected static String[] programArgs(String[] sourceArgs, int n) {
String[] destArgs = new String[sourceArgs.length - n];
System.arraycopy(sourceArgs, n, destArgs, 0, destArgs.length);
return destArgs;
}
然後用提供/配置參數調用方法啓動。
Barmnik好吧,它就像你意味着將類導入到我的servlet並調用函數......它可以接受,但是真的會有創建它的jar嗎? PL解釋 – Sankalp 2012-01-03 06:25:16
當然,它實際上是開發Web應用程序的一種常用方式,您甚至可以將您的類與servlet放在同一個模塊中。請記住,曾經調用的servlet是一個可以創建和調用其他java對象的常規java對象。 servlet通常只是應用程序在服務器端的入口點,通常它是一個「精簡」層,主要的處理(算法/數據庫)通常在可從servlet訪問的Java類中完成 – 2012-01-03 06:27:23