2012-01-03 43 views
0

我已經創建了一個Java程序的可執行jar,我想通過我的Servlet在同一臺機器上訪問它,或者可以在另一臺機器上訪問它。我該怎麼做?如何從Servlet訪問/調用Java程序

我發現了許多使用網絡/ TCP調用Servlet的解決方案,但是我正在尋找Servlet來調用Java程序的功能。

回答

1

調用JavaProg的函數意味着產生另一個非常昂貴的JVM進程。 爲什麼不把這個jar文件(你寫的是你創建這個程序,所以你知道它的內置程序)放到你的web應用程序中,讓你的serlvet調用適當的類?

是一個可行的選擇嗎?

+0

Barmnik好吧,它就像你意味着將類導入到我的servlet並調用函數......它可以接受,但是真的會有創建它的jar嗎? PL解釋 – Sankalp 2012-01-03 06:25:16

+0

當然,它實際上是開發Web應用程序的一種常用方式,您甚至可以將您的類與servlet放在同一個模塊中。請記住,曾經調用的servlet是一個可以創建和調用其他java對象的常規java對象。 servlet通常只是應用程序在服務器端的入口點,通常它是一個「精簡」層,主要的處理(算法/數據庫)通常在可從servlet訪問的Java類中完成 – 2012-01-03 06:27:23

1

java程序和Java servlet沒有太大區別。所以你只需要導入java程序,它可以直接在你的java servlet中使用。

但是,有一點需要注意的是,您要導入的java程序,也就是您的jar文件必須放在WEB-INF/class /目錄中。

0

您可以簡單地將您的jar添加到您的servlet應用程序中。將該jar放入您的servlet並調用您想要在servlet中使用的適當類。

1

找到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; 
} 

然後用提供/配置參數調用方法啓動。