2012-05-04 13 views
1

Java EE Webアプリケーション全体を含むインストーラを作成する方法はありますか?最終的なユーザーは、実稼働環境全体をインストールすることなく単一のインストーラを実行するだけですか?1人のインストーラでJava EE Webアプリケーションのインストーラを作成するにはどうすればよいですか?

私がしようとしているのは、JDK + Tomcatのインストールを保存することです。より良い解決策があれば、それを提供してください。

+0

Tomcatを埋め込んでいますか? –

+0

@PaulVargas Tomcat、または任意のサーブレットコンテナ。 – MauroPorrasP

答えて

1

より簡単な方法は、必要なすべてのファイル(TomcatとJDK)で圧縮ファイルを作成することです。ファイルを解凍すると、Tomcatを起動するコマンドや必要なものが実行されます。 TomcatとJDKに対するのパスと同じであることが必要です。元の環境と同じです。

Winrarは実行可能ファイルを生成し、抽出の最後にコマンドを実行できることがわかりました。 (新しいプログラムをインストールするときにこれを見たことがありますか?最初に解凍してからインストールしてください)これは少なくともWindowsではです。他のライブラリやプログラムは、Winrarのようなものを生成するかもしれません。

+0

誰かがhttps://gist.github.com/2599881を必要とする可能性がある場合に私が使用した.batはここにあります – MauroPorrasP

0

Webアプリケーションは1つだけWARファイルであり、あなたがウィンストン・コンテナが埋め込まれ、それを使用することを検討した後、任意のサーブレット2.4コンテナを使用することができた場合:あなたは今まであなたの問題を軽減している

http://winstone.sourceforge.net/#embedding

多数のインストーラが存在する単一の実行可能なJARどちらを選択するかは、実際の状況によって異なります。

+0

しかし、彼らはまだJRE/JDKをインストールする必要がありますか? – MauroPorrasP

+0

これを処理できるインストーラを使用してください。 –

+0

http://www.advancedinstaller.com/のみが見つかりましたが、無料ではありません。オープンソースの提案ですか? – MauroPorrasP

1

単一のインストーラは、利便性の外観を与えるかもしれないが、それはユースケースの数に問題があると起動することができます。

  • のTomcat、JDKまたは他のいくつかのコンポーネントは、セキュリティを解決するためにアップグレードする必要があります問題。エンドユーザーが別々のインストーラでこれを行う方が簡単で、更新されたビットで新しいインストーラを作成する必要はありません
  • バンドルしたアプリケーションサーバーと異なるアプリケーションサーバーでアプリケーションを実行するユーザーがいます。
  • すべてのアプリはこれをしなかった場合
  • 、ユーザーが一つの容器は、すべてのアプリケーションJVMの両方をインストールし、Tomcatが些細あるインストールので、私はいくつかの素晴らしいとあなたのアプリを出荷をお勧めしたい

のためにインストール+インストール1つのJDKで終わるだろう、単一のパッケージではなく、インストール手順を明確にしてください。 YMMV。

3

Windows環境では、linux環境用のシェルスクリプトを作成するのと同じように、次のようにインストーラを作成することができます。

1、パッケージS/W(例えばPostgreSQLの、桟橋、JREなど)

2のバイナリディストリビューション、桟橋のwebapps

3であなたのwarファイルを入れ、内部のデータのフォルダを作成しますpostgres

4、さまざまな環境変数を設定し、バッチファイルを使用して初期化します。私の場合、「install.bat」ファイルを作成しました。

REM set jdk environment 
PATH=%~dp0Java\jre6\bin;%~dp0Java\jre6\lib;%~dp0pgsql\bin;%PATH% 
setx PATH "%PATH%" 

REM set postgres environment 
SETX PGDATA "%~dp0pgsql\data" 
SETX PGDATABASE postgres 
SETX PGUSER postgres 
SETX PGPORT 5432 
SETX PGLOCALEDIR "%~dp0pgsql\share\locale" 

REM initdb initialize the postgresql initialization properties 
"%~dp0pgsql\bin\initdb" -D "%~dp0pgsql\data" -U postgres -A trust 

REM put the temp.vbs script into startup 
cscript //NoLogo //B "%~dp0start_startup_shortcut.vbs" 
cscript //NoLogo //B "%~dp0start_desktop_shortcut.vbs" 
cscript //NoLogo //B "%~dp0app_shortcut.vbs" 
REM start the database service 
"%~dp0pgsql\bin\pg_ctl" -D "%~dp0pgsql\data" start 

timeout /T 10 

"%~dp0pgsql\bin\createdb.exe" -U postgres dbName 
"%~dp0pgsql\bin\psql.exe" -U postgres -d dbName -f "%~dp0backup.sql" 

REM java -DSTART="%~dp0jetty8\start.ini" -jar "%~dp0jetty8\start.jar" 

REM start the jetty server 
java -Djetty.home="%~dp0jetty8" -jar "%~dp0jetty8\start.jar" > pb_log.txt 


pause 

5、サービスを開始するためのバッチファイルを作成します。たとえば、「start」と入力します。バット」。次のように

REM start the database service 

"%~dp0pgsql\bin\pg_ctl" -D "%~dp0pgsql\data" start 

java -Djetty.home="%~dp0jetty8" -jar "%~dp0jetty8\start.jar" 

6は、あなたがアプリケーションのショートカットを作成することができますたとえば "

Dim FileName 
FileName = "projectName" 

Set wsShell= CreateObject("WScript.Shell") 

Set wshSysEnv = wsShell.Environment("PROCESS") 

sMyHomePath = wshSysEnv("HOMEPATH") 

Set shortcut = 
wsShell.CreateShortcut(CreateObject("WScript.Shell").SpecialFolders("Desktop")& + "\" + 
FileName + ".lnk") 

shortcut.Description = "Start projectName" 

currentDirectory = left(WScript.ScriptFullName, 
(Len(WScript.ScriptFullName))-(len(WScript.ScriptName))) 

shortcut.TargetPath = currentDirectory + "projectName.bat" 

shortcut.Arguments = "/Arguments:Shortcut" 

shortcut.Save 

7" app_shortcut.vbs、次のようにサービスのデスクトップショートカットを起動します。

Dim FileName 
FileName = "Start projectName Server" 

Set wsShell= CreateObject("WScript.Shell") 

Set wshSysEnv = wsShell.Environment("PROCESS") 

sMyHomePath = wshSysEnv("HOMEPATH") 

Set shortcut = 
wsShell.CreateShortcut(CreateObject("WScript.Shell").SpecialFolders("Desktop")& + "\" + 
FileName + ".lnk") 

shortcut.Description = "Start projectName" 

currentDirectory = left(WScript.ScriptFullName, 
(Len(WScript.ScriptFullName))-(len(WScript.ScriptName))) 

shortcut.TargetPath = currentDirectory + "start.bat" 

shortcut.Arguments = "/Arguments:Shortcut" 

shortcut.Save 

8 、アプリケーションバッチファイルを実行する

@echo off 
netstat -o -n -a | findstr 0.0:9095 
if %ERRORLEVEL% equ 0 (start http://localhost:9095) ELSE (echo "Please Start the Server" 
pause) 
関連する問題