2014-02-15 56 views
1

我有一個「概念驗證」作品,跨越到一些不熟悉的領域。我有一些關於J2EE技術​​的經驗。我負責將EFTPOS機器連接到Web應用程序。我打算使用小程序與dll交互。 DLL將在客戶端運行。從小應用程序訪問dll

我需要與Web應用程序中的一個DLL進行交互。請爲我提供任何指導,因爲我是新手。我嘗試從獨立的Java程序與dll交互,但無法從Web應用程序連接。任何示例代碼都會對我非常有幫助。

回答

0

是的,這是完全可能的一個小程序。我之前「連接」了一個電子簽名設備,並且工作得非常好。我們在這裏討論的是什麼樣的.dll,你需要做以下事情:

1.)爲你的dll創建一個java訪問層/接口,以便你能夠從java調用dll函數。取決於我們在談論什麼類型的dll有幾種可能性。基礎技術是JNI然而這是相當繁瑣的使用,但幸運的是有更多的convienient出路有:

  • 使用JNA(如果它是一個ç DLL)
  • 使用Jacob(如果是一個COM組件
  • 使用bridj(如果它是一個C++ DLL。您可以嘗試swig但尚未使用的,所以不能告訴)

2.)將你的dll放入一個jar文件中,並將其與你的applet一起分發。這是如何工作的在jacob項目中提供了一個很好的例子。您可以在jacob-1.17_src.zip\jacob-1.17\samples\com\jacob\samples\applet下的源碼包中找到它。該示例描述了訪問本機庫的JNLP方式,該方式將在java 1.6.0_10版本之上運行。如果由於某種原因必須使用較低的版本,這也是可能的,但稍微有些棘手......

3.)另一方面說明:由於最新的可用java版本(1.7.0_51或1.6.0_71 )由於安全性原因,Java applet的一些規則已被添加或收緊。現在您必須使用官方證書籤署您的小程序,並在清單jnlp文件中設置正確的屬性/屬性。但是這裏已經詳細討論過,所以只需要搜索它。我可能會使用一個稍舊版本的開發,如果這是工作,搞清楚如何讓它在最新的Java版本工作...

4)關於交互部分也有幾種可能性。你的Java Applet可以從它所運行的網站(或者其他方式)調用jscript方法,或者applet直接與你的服務器通信。你把所有的可能性在這一方面...

+0

非常感謝,這將有助於我很多東西需要學習和工作對我的項目。還有一點,如果我使用Javascript或Action類代替Applets,是否會有任何問題 – user3314271

+0

從jscript調用dll是不可能的。 「行動課」是什麼意思? 如果你很高興與你的答案,歡迎接受它 - 這可以幫助其他用戶。 (點擊帖子左邊的複選標記) – Lonzak

+0

我想從一個Servlet調用dll函數。該DLL是基於dotnet的。請提供任何示例代碼如何訪問dll到[email protected] – user3314271