diff --git a/.gitignore b/.gitignore index 889a9a6..29bc8ac 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,5 @@ *.iml .idea/ /.idea/ -/out/ \ No newline at end of file +/out/ +config.properties \ No newline at end of file diff --git a/jfinal.bat b/jfinal.bat new file mode 100644 index 0000000..a0d2db7 --- /dev/null +++ b/jfinal.bat @@ -0,0 +1,69 @@ +@echo off + +rem ------------------------------------------------------------------------- +rem +rem 使用说明: +rem +rem 1: 该脚本用于别的项目时只需要修改 MAIN_CLASS 即可运行 +rem +rem 2: JAVA_OPTS 可通过 -D 传入 undertow.port 与 undertow.host 这类参数覆盖 +rem 配置文件中的相同值此外还有 undertow.resourcePath, undertow.ioThreads +rem undertow.workerThreads 共五个参数可通过 -D 进行传入 +rem +rem 3: JAVA_OPTS 可传入标准的 java 命令行参数,例如 -Xms256m -Xmx1024m 这类常用参数 +rem +rem +rem ------------------------------------------------------------------------- + +setlocal & pushd + + +rem 启动入口类,该脚本文件用于别的项目时要改这里 +set MAIN_CLASS=com.lxyer.config.FlyConfig + +rem Java 命令行参数,根据需要开启下面的配置,改成自己需要的,注意等号前后不能有空格 +rem set "JAVA_OPTS=-Xms256m -Xmx1024m -Dundertow.port=80 -Dundertow.host=0.0.0.0" +rem set "JAVA_OPTS=-Dundertow.port=80 -Dundertow.host=0.0.0.0" + + +if "%1"=="start" goto normal +if "%1"=="stop" goto normal +if "%1"=="restart" goto normal + +goto error + + +:error +echo Usage: jfinal.bat start | stop | restart +goto :eof + + +:normal +if "%1"=="start" goto start +if "%1"=="stop" goto stop +if "%1"=="restart" goto restart +goto :eof + + +:start +set APP_BASE_PATH=%~dp0 +set CP=%APP_BASE_PATH%config;%APP_BASE_PATH%lib\* +echo starting jfinal undertow +java -Xverify:none %JAVA_OPTS% -cp %CP% %MAIN_CLASS% +goto :eof + + +:stop +set "PATH=%JAVA_HOME%\bin;%PATH%" +echo stopping jfinal undertow +for /f "tokens=1" %%i in ('jps -l ^| find "%MAIN_CLASS%"') do ( taskkill /F /PID %%i ) +goto :eof + + +:restart +call :stop +call :start +goto :eof + +endlocal & popd +pause \ No newline at end of file diff --git a/jfinal.sh b/jfinal.sh new file mode 100644 index 0000000..017bc89 --- /dev/null +++ b/jfinal.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +# 启动入口类,该脚本文件用于别的项目时要改这里 +MAIN_CLASS=com.lxyer.config.FlyConfig + +COMMAND="$1" + +if [[ "$COMMAND" != "start" ]] && [[ "$COMMAND" != "stop" ]] && [[ "$COMMAND" != "restart" ]]; then + echo "Usage: $0 start | stop | restart" + exit 0 +fi + + +# Java 命令行参数,根据需要开启下面的配置,改成自己需要的,注意等号前后不能有空格 +# JAVA_OPTS="-Xms256m -Xmx1024m -Dundertow.port=80 -Dundertow.host=0.0.0.0" +# JAVA_OPTS="-Dundertow.port=80 -Dundertow.host=0.0.0.0" + +# 生成 class path 值 +APP_BASE_PATH=$(cd `dirname $0`; pwd) +CP=${APP_BASE_PATH}/config:${APP_BASE_PATH}/lib/* + +function start() +{ + # 运行为后台进程,并在控制台输出信息 + java -Xverify:none ${JAVA_OPTS} -cp ${CP} ${MAIN_CLASS} & + + # 运行为后台进程,并且不在控制台输出信息 + # nohup java -Xverify:none ${JAVA_OPTS} -cp ${CP} ${MAIN_CLASS} >/dev/null 2>&1 & + + # 运行为后台进程,并且将信息输出到 output.log 文件 + # nohup java -Xverify:none ${JAVA_OPTS} -cp ${CP} ${MAIN_CLASS} > output.log & + + # 运行为非后台进程,多用于开发阶段,快捷键 ctrl + c 可停止服务 + # java -Xverify:none ${JAVA_OPTS} -cp ${CP} ${MAIN_CLASS} +} + +function stop() +{ + # 支持集群部署 + kill `pgrep -f ${APP_BASE_PATH}` 2>/dev/null + + # kill 命令不使用 -9 参数时,会回调 onStop() 方法,确定不需要此回调建议使用 -9 参数 + # kill `pgrep -f ${MAIN_CLASS}` 2>/dev/null + + # 以下代码与上述代码等价 + # kill $(pgrep -f ${MAIN_CLASS}) 2>/dev/null +} + +if [[ "$COMMAND" == "start" ]]; then + start +elif [[ "$COMMAND" == "stop" ]]; then + stop +else + stop + start +fi \ No newline at end of file diff --git a/package.xml b/package.xml new file mode 100644 index 0000000..4b3788d --- /dev/null +++ b/package.xml @@ -0,0 +1,58 @@ + + + + release + + + + dir + zip + + + + + true + + + + + ${basedir}/src/main/resources + config + + + + + ${basedir}/src/main/webapp + webapp + + + + + ${basedir} + + + 755 + + *.sh + *.bat + + + + + + + + lib + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 19944d8..76989cb 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - war + jar jfly com.lxyer @@ -16,6 +16,12 @@ 4.2 + + com.jfinal + jfinal-undertow + 1.6 + + mysql mysql-connector-java @@ -77,6 +83,55 @@ 1.8 + + + + org.apache.maven.plugins + maven-jar-plugin + 2.6 + + + *.txt + *.xml + *.properties + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 3.1.0 + + + make-assembly + package + + single + + + + + ${project.artifactId} + + false + + true + + + package.xml + + + ${project.build.directory}/ + + + + + diff --git a/src/main/java/com/lxyer/config/DbMap.java b/src/main/java/com/lxyer/config/DbMap.java index d457cfa..ecdb9a7 100644 --- a/src/main/java/com/lxyer/config/DbMap.java +++ b/src/main/java/com/lxyer/config/DbMap.java @@ -31,7 +31,7 @@ public class DbMap { } public static void addSqlTemplate(ActiveRecordPlugin arp) { - String baseSqlTemplatePath = PathKit.getWebRootPath() + "/WEB-INF/classes/sql/"; + String baseSqlTemplatePath = PathKit.getRootClassPath() + "/sql/"; arp.setBaseSqlTemplatePath("sql"); File sqlFiles = new File(baseSqlTemplatePath); diff --git a/src/main/java/com/lxyer/config/FlyConfig.java b/src/main/java/com/lxyer/config/FlyConfig.java index f33e25c..e725563 100644 --- a/src/main/java/com/lxyer/config/FlyConfig.java +++ b/src/main/java/com/lxyer/config/FlyConfig.java @@ -10,9 +10,9 @@ import com.jfinal.plugin.activerecord.ActiveRecordPlugin; import com.jfinal.plugin.ehcache.EhCachePlugin; import com.jfinal.plugin.hikaricp.HikariCpPlugin; import com.jfinal.plugin.redis.RedisPlugin; +import com.jfinal.server.undertow.UndertowServer; import com.jfinal.template.Engine; import com.lxyer.config.handler.UrlHandler; -import com.lxyer.config.interceptor.LoginInterceptor; import com.lxyer.config.route.AdminRoute; import com.lxyer.config.route.SiteRoute; @@ -74,4 +74,9 @@ public class FlyConfig extends JFinalConfig { public void configHandler(Handlers me) { me.add(new UrlHandler()); } + + // 启动入口 + public static void main(String[] args) { + UndertowServer.start(FlyConfig.class); + } } diff --git a/src/main/resources/undertow.txt b/src/main/resources/undertow.txt new file mode 100644 index 0000000..b4de7f4 --- /dev/null +++ b/src/main/resources/undertow.txt @@ -0,0 +1 @@ +MAIN_CLASS=com.lxyer.config.FlyConfig \ No newline at end of file