
TommyBoxは、ビルトインサーバーとブラウザー機能を提供することにより、デスクトップ上で静的および動的なWebアプリを起動することを可能にするスタンドアロン実行可能なコンテナです。
TommyBoxはElectronおよびNW.JSに似ています
アプリは、ディレクトリとして提供されるか、JSP、サーブレット、CSS、JavaScriptなどの静的なものを含むWAR(またはZIP)アーカイブとして梱包できます。
フードの下で、TommyboxはTommy WebサーバーとSWTブラウザーウィジェットの上に構築されています。アプリはWARまたはZIPアーカイブとして梱包でき、オプションでPWAマニフェスト、JSP、サーブレット、CSS、JavaScriptファイルなどのすべての静的なものを含めることができます。
Tommybox in Action:https://github.com/xnbox/tommybox_demoを参照してください
tb.jarの最新リリースをダウンロードします java -jar tb.jar [options] [custom arg]...
Options:
--help print help message
--app <file|dir|URL> run app from ZIP or WAR archive, directory or URL
--password <string> provide password for encrypted ZIP or WAR archive
zip(またはwar)ファイルを実行します:
java -jar tb.jar --app MyKillerApp.warカスタムコマンドラインargを使用してzip(またはwar)ファイルを実行します。
java -jar tb.jar --app MyKillerApp.war myparam1 myparam2 ...Webサーバーからzip(または戦争)を実行します。
java -jar tb.jar --app https://example.com/MyKillerApp.zipディレクトリから爆発したWebアプリを実行します。
java -jar tb.jar --app MyKillerAppDirパスワードで保護されたzip(または戦争)アーカイブを実行します:
java -jar tb.jar --app MyKillerApp.zip --password mysecrettb.jarの/appディレクトリにコピーします。app.warまたはapp.zip (アーカイブは暗号化できます)として梱包し、アーカイブをtb.jarのルートディレクトリにコピーします。 tb.jar MyKillerApp.jarに名前を変更して、アプリをブランド化します。
組み込みアプリを実行します:
java -jar MyKillerApp.jarカスタムコマンドラインargsを使用して組み込みアプリを実行します:
java -jar MyKillerApp.jar myparam1 myparam2 ...パスワードで保護された組み込みアプリを実行します:
java -jar MyKillerApp.jar --password mysecretカスタムコマンドラインargsを使用して、パスワードで保護された埋め込みアプリを実行します。
java -jar MyKillerApp.jar --password mysecret myparam1 myparam2 ...| 鍵 | タイプ | デフォルト値 | 説明 |
|---|---|---|---|
display | string | standalone | 標準のPWA displayモード。考えられる値: standaloneminimal_uibrowserfullscreenminimized_window (標準以外)maximized_window (標準以外)desktop_area (標準以外)headless (標準以外) |
enable_fullscreen | boolean | true | フルスクリーンモードを許可します |
tray_icon | boolean | true | トレイアイコン |
window_buttons | array | ["minimize", "maximize", "close"] | ウィンドウボタンリスト。 考えられる要素: minimizemaximizeclose |
window_menu | string | none | ウィンドウメニューモード。 考えられる値: customnativenone |
window_always_on_top | boolean | false | 常に上部の窓のプロパティ |
window_size | string | null | 文字列としてのウィンドウサイズEG。:640x480 |
window_x | number | null | ウィンドウの場所x座標(ピクセル単位) |
window_y | number | null | ウィンドウロケーションY座標(ピクセル単位) |
strings | array | [] | カスタム文字列用のI18N辞書 |
| プロトコル | 説明 | HTMLの例 |
|---|---|---|
home: | ホームアクション | <a href="home:">Home</a> |
back: | バックアクション | <a href="back:">Back</a> |
forward: | フォワードアクション | <a href="forward:>Forward</a> |
reload: | アクションをリロードします | <a href="reload:">Reload</a> |
quit: | OSに終了します | <a href="quit:">Exit</a> |
minimize: | ウィンドウを最小化します | <a href="minimize:">Minimize</a> |
fullscreen: | フルスクリーンに切り替えます | <a href="fullscreen:">Fullscreen</a> |
open: | OSで指定されたURLを開きます | <a href="open:file://home/john/my.pdf">Open PDF</a> |
open_in_new_window: | 新しいウィンドウで指定されたURLを開きます | <a href="open_in_new_window:http://example.com">Open in New Window</a> |
open_in_browser: | ブラウザで指定されたURLを開きます | <a href="open_in_browser:http://example.com">Open in Browser</a> |
java: | Javaコードを起動します | <a href="java:javax.swing.JOptionPane.showMessageDialog(null, "Hello, Java!")">Launch Java Code</a> |
js: | JavaScriptコードを起動します | <a href="js:javax.swing.JOptionPane.showMessageDialog(null, 'Hello, JavaScript!')">Launch JavaScript Code</a> |
// ...somewhere in your Servlet or JSP
InitialContext ctx = new InitialContext ();
/* get custom command-line args */
String [] args = ( String []) ctx . lookup ( "java:comp/env/tommy/args" );
/* get standard input (stdin) */
InputStream stdin = ( InputStream ) ctx . lookup ( "java:comp/env/tommy/stdin" );
/* get standard output (stdout) */
PrintStream stdout = ( PrintStream ) ctx . lookup ( "java:comp/env/tommy/stdout" );
/* get standard error (stderr) */
PrintStream stderr = ( PrintStream ) ctx . lookup ( "java:comp/env/tommy/stderr" );
/* get "--app" parameter value */
String app = ( String ) ctx . lookup ( "java:comp/env/tommy/app" );
// ...
Q.私のアプリはjava.lang.ClassNotFoundException: javax.servlet.*
A. V10から始まるJava EEからJakarta EEへの移動の結果、Apache TomcatはJakarta EE仕様のみをサポートしています。 javax.servlet.*はサポートされなくなりました。 javax.servlet.*コードにjakarta.servlet.*でインポートします。