2013-05-14 40 views
0

我製作了一個使用hibernate,spring和jsf的java web應用程序。它部署在tomcat 7上。我想將它分發給外部用戶,但是我擔心有人可以反編譯類並返回到java代碼。一個免費的解決方案,將java web應用程序與tomcat打包爲一個exe

Excelsior JET符合我的需求,因爲它將Tomcat和Web應用程序的war文件打包成可分發給第三方的exe文件。

但是 Excelsior對我來說是非常昂貴的,我正在尋找一個免費的解決方案,將所有員工打包到一個exe文件中。

編輯: 如果我使用混淆。它將修改方法和字段名稱。問題是我從我的xhtml文件中調用它們。他們將無法再訪問。

+0

因此,如果Excelsior太貴,您希望從您的應用程序中獲得低於3000美元的費用?這就是說,它的價值在於它比混淆的保護更弱,所以這不是我想要的。另外:您可以告訴ProGuard(以及其他任何混淆器)哪些類/方法名稱不要混淆。一般來說,你的HTML模板應該只需要和你的模型的getter和你的控制器層一起工作,這將使配置變得相當容易 – millimoose 2013-05-14 18:59:16

回答

1

您可以使用ProGuard免費模擬您的代碼。還有其他解決方案也會這樣做,但它們可能不是免費的。

+0

沒有辦法讓一個自包含的exe不包含代碼(以二進制形式,可執行程序)。因此,混淆是你所希望的。如果混淆不是解決方案,則不存在解決方案。 – tucuxi 2013-05-14 14:06:29

+0

這是真的,但是對於任何編譯的代碼它都是一樣的嗎?如果有人真的想要得到它,那麼即使它被包裝在一個強化的罐子裏,用128位加密加密,扔進一個鎖着的盒子,掉進海里,被鯨魚吞下。我的觀點是,如果需要更多時間來解密代碼,而不是從頭開始重寫相同的東西,那麼您希望有人重寫它。 – david99world 2013-05-14 14:09:47

+0

@ david99world完全同意;我的觀點是混淆可能不完美,但它是完美的。只有以始終在線的需求和(供應商控制的)服務器上運行的部分代碼爲代價才能購買更多的安全性。 – tucuxi 2013-05-14 14:30:02

1

正如david99所暗示的,你可以做的最多的是混淆代碼(想起ProGuardyGuard)。這避免了偶然的逆向工程 - 儘管沒有模糊是完美的。任何二進制文件都可以看作是「混淆代碼」 - 給定足夠的時間,所有(自包含的)程序都是可破解的; Java字節碼也不例外。

從混淆的.war中,您可以輕鬆生成一個自包含的.war,其中包含一個輕量級的servlet容器:請參閱executable-war

結果是,要麼由標準部署或

java -jar nameOfApp.war 

如果這仍然是對最終用戶過於複雜執行你的代碼的人,你可以用它設置爲.exelaunch4j。整個工具鏈和啤酒和語音一樣是收費的(yGuard的代碼雖然是專有的,但很容易配置),並且可以集成到maven/ant構建中。

否則,您可以構建一個安裝程序,該安裝程序將安裝一個預配置的tomcat及其中的應用程序。我親自使用izpack。但是,將其添加到maven化版本可能會更困難。

相關問題