
Tommybox 는 내장 서버 및 브라우저 기능을 제공하여 데스크탑에서 정적 및 동적 웹 앱을 시작할 수있는 독립형 실행 컨테이너입니다.
Tommybox는 Electron 및 Nw.js와 유사합니다.
앱은 디렉토리로 제공되거나 JSP, 서블릿 및 CSS, JavaScript 등과 같은 정적 물건을 포함 할 수있는 전쟁 (또는 ZIP) 아카이브로 포장 할 수 있습니다.
후드 아래에서 Tommybox는 Tommy Web Server와 SWT 브라우저 위젯 위에 구축되었습니다. 앱은 전쟁 또는 지퍼 아카이브로 포장 할 수 있으며 선택적으로 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 (또는 전쟁) 파일 실행 :
java -jar tb.jar --app MyKillerApp.war사용자 정의 명령 줄 Arrs와 함께 Zip (또는 War) 파일을 실행하십시오.
java -jar tb.jar --app MyKillerApp.war myparam1 myparam2 ...웹 서버에서 Zip (또는 War) 실행 :
java -jar tb.jar --app https://example.com/MyKillerApp.zip디렉토리에서 폭발 된 웹 앱 실행 :
java -jar tb.jar --app MyKillerAppDir비밀번호로 보호 된 지퍼 (또는 전쟁) 아카이브 실행 :
java -jar tb.jar --app MyKillerApp.zip --password mysecrettb.jar 의 /app 디렉토리에 복사하십시오.app.war 또는 app.zip (아카이브를 암호화 할 수 있음)으로 앱을 포장하고 아카이브를 tb.jar 의 루트 디렉토리에 복사하십시오. tb.jar 를 MyKillerApp.jar 로 바꾸어 앱을 브랜드화하십시오.
임베디드 앱 실행 :
java -jar MyKillerApp.jarCustom Command-Line Args와 함께 임베디드 앱을 실행하십시오.
java -jar MyKillerApp.jar myparam1 myparam2 ...비밀번호로 보호 된 임베디드 앱 실행 :
java -jar MyKillerApp.jar --password mysecret사용자 정의 명령 줄 아르로 암호로 보호 된 임베디드 앱을 실행하십시오.
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 | 문자열과 같은 창 크기 : 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.* .