当前位置: 首页 > 软件库 > Web应用开发 > Web框架 >

JFinal Undertow

JFinal 开发、打包、部署一体化
授权协议 Apache
开发语言 Java
所属分类 Web应用开发、 Web框架
软件类型 开源软件
地区 国产
投 递 者 陶博耘
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

jfinal-undertow 用于开发、部署由 jfinal 开发的 web 项目。独创 HotSwapClassLoader + HotSwapWatcher 以 321 行代码极简实现热加载开发与部署,前无古人,后必有模仿者

一、 极速上手

1: 添加 maven 依赖

<dependency>
	<groupId>com.jfinal</groupId>
	<artifactId>jfinal-undertow</artifactId>
	<version>3.4</version>
</dependency>

注意:以前对 jetty-server 的 maven 依赖要删掉

2: 创建 main 方法在 eclipse 或 IDEA 中启动项目

UndertowServer.start(AppConfig.class);

其中 AppConfig 是继承自 JFinalConfig 的子类,以前的 JFinal.start(...) 用法不再需要

二、极速打包与部署

1: 修改 pom.xml 头部的打包类型由 war 改成 jar

<packaging>jar</packaging>

2: 在 pom.xml 中添加 maven-jar-plugin 插件

<!--
    jar 包中的配置文件优先级高于 config 目录下的 "同名文件"
    因此,打包时需要排除掉 jar 包中来自 src/main/resources 目录的
    配置文件,否则部署时 config 目录中的同名配置文件不会生效
-->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <excludes>
            <exclude>*.txt</exclude>
            <exclude>*.xml</exclude>
            <exclude>*.properties</exclude>
        </excludes>
    </configuration>
</plugin>

该插件仅为了避免将配置文件打入 jar 包,如果是打成 fatjar 包则不需要添加此插件

3: 在 pom.xml 中添加 maven-assembly-plugin 插件

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-assembly-plugin</artifactId>
	<version>3.1.0</version>
	<executions>
		<execution>
			<id>make-assembly</id>
			<phase>package</phase>
			<goals>
				<goal>single</goal>
			</goals>

			<configuration>
				<!-- 打包生成的文件名 -->
				<finalName>${project.artifactId}</finalName>
				<!-- jar 等压缩文件在被打包进入 zip、tar.gz 时是否压缩,设置为 false 可加快打包速度 -->
				<recompressZippedFiles>false</recompressZippedFiles>
				<!-- 打包生成的文件是否要追加 release.xml 中定义的 id 值 -->
				<appendAssemblyId>true</appendAssemblyId>
				<!-- 指向打包描述文件 package.xml -->
				<descriptors>
					<descriptor>package.xml</descriptor>
				</descriptors>
				<!-- 打包结果输出的基础目录 -->
				<outputDirectory>${project.build.directory}/</outputDirectory>
			</configuration>
		</execution>
	</executions>
</plugin>

4、在项目根目录下添加打包描述文件 package.xml,内容如下:

<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
	<!--
	assembly 打包配置更多配置可参考官司方文档:
	http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html
	-->

	<id>release</id>

	<!--
		设置打包格式,可同时设置多种格式,常用格式有:dir、zip、tar、tar.gz
		dir 格式便于在本地测试打包结果
		zip 格式便于 windows 系统下解压运行
		tar、tar.gz 格式便于 linux 系统下解压运行
	-->
	<formats>
		<format>dir</format>
		<format>zip</format>
		<!-- <format>tar.gz</format> -->
	</formats>

	<!-- 打 zip 设置为 true 会在包在存在总目录,打 dir 时设置为 false 少层目录 -->
	<includeBaseDirectory>true</includeBaseDirectory>

	<fileSets>
		<!-- src/main/resources 全部 copy 到 config 目录下 -->
		<fileSet>
			<directory>${basedir}/src/main/resources</directory>
			<outputDirectory>config</outputDirectory>
		</fileSet>

		<!-- src/main/webapp 全部 copy 到 webapp 目录下 -->
		<fileSet>
			<directory>${basedir}/src/main/webapp</directory>
			<outputDirectory>webapp</outputDirectory>
		</fileSet>

		<!-- 项目根下面的脚本文件 copy 到根目录下 -->
		<fileSet>
			<directory>${basedir}</directory>
			<outputDirectory></outputDirectory>
			<!-- 脚本文件在 linux 下的权限设为 755,无需 chmod 可直接运行 -->
			<fileMode>755</fileMode>
			<includes>
				<include>*.sh</include>
				<include>*.bat</include>
			</includes>
		</fileSet>
	</fileSets>

	<!-- 依赖的 jar 包 copy 到 lib 目录下 -->
	<dependencySets>
		<dependencySet>
			<outputDirectory>lib</outputDirectory>
		</dependencySet>
	</dependencySets>
</assembly>

5、部署在项目根目录下添加项目运行脚本文件

本项目中的根目录下面提供了 jfinal.sh、jfinal.bat 这两个脚本文件下载。其中第一个用于 linux、mac 系统,第二个用于 windows 系统,注意要修改一下这些脚本文件中的 MAIN_CLASS 变量指向你自己的项目入口,例如:

MAIN_CLASS=com.yourpackage.YourMainClass

当然这两个脚本文件不是必须的,大家完全可以根据个人习惯编写启动脚本

6、在命令行运行打包指令

mvn clean package

7、部署

进入项目的 target/your-project-release 目录,运行 ./jfinal.sh start 即可启动项目。target 目录下还会打包出一个 your-project-release.zip 该文件是上述第五步中生成的目录的一个 zip 压缩文件,上传该文件到服务器解压即部署,可以通过修改 package.xml 改变生成的文件名或者取消生成该文件

三、jfinal-undertow 优势:

1:极速启动,启动速度比 tomcat 快 5 到 8 倍。jfinal.com 官网启动时间在 1.5 秒内

2:极简精妙的热部署设计,实现极速轻量级热部署,响应极为迅速,让开发体验再次提升一个档次

3:性能比 tomcat、jetty 高出很多,可代替 tomcat、jetty 用于生产环境

4:undertow 为嵌入式而生,可直接用于生产环境部署,部署时无需下载服务,无需配置服务,极其适合微服务开发、部署

5:告别 web.xml、告别 tomcat、告别 jetty,节省大量打包与部署时间。令开发、打包、部署成为一件开心的事

6:功能丰富,支持 classHotSwap、WebSocket、gzip 压缩、servlet、filter、sessionHotSwap 等功能

7:支持 fatjar 与 非 fatjar 打包模式

8:开发、打包、部署一体化,整个过程无需对项目中的任何地方进行调整或修改,真正实现从极速开发到极速部署

9:以上仅为 jfinal-undertow 的部分功能,更多好用的功能如 fatjar 打包模式见 jfinal 官网文档

  • 目录 1. 默认配置文件 2. 生产版本配置文件 3. 配置项默认值 4. web 资源加载路径配置 1. 默认配置文件 首先要从 UndertowServer 说起,UndertowServer 有多个创建方法,不管使用哪个创建方法最终创建时创建时都需要先创建 UndertowConfig,并将这个作为参数用于创建 UndertowServer。源码摘取如下: /** * 创建 Underto

  • 步骤 mvn clean install -U打包 打包后到target目录下找到 项目名-release.zip 上传到服务器 我一般上传到 /usr/local/app/ 解压zip unzip 项目名-release.zip cd /项目名 如果是windows系统打包的需要把sh文件转换成unix格式 dos2unix *.sh sh start.sh 组合命令 以我的项目gpa为例 sh

  • 最近从tomcat切换到UnderTow,来优化下频繁YoungGC的问题。发现accesslog格式不太一样,并且官方文档上面的并不全面,所以就看看源码来总结下,这样以后就算有更新,也可以通过这些类来知道最新的格式。 核心配置在io.undertow.attribute这个包下面 例如时间配置,就是对应的DateTimeAttribute这个类: public class DateTimeAtt

  • mark public class HelloWorldServer { public static void main(final String[] args) { Undertow server = Undertow.builder() .addHttpListener(8080, "localhost") .setHandler(new HttpHandler() { @Override p

  • Jfinal 编译运行问题 1. undertow如何配置静态资源映射 Windows下的路径必须是/,不能是\. undertow.resourcePath=src/main/webapp,C:/Users/apple/image_resources,classpath:webapp` 2. 新建模块运行报错: 需要重载包含该模块的主pom.xml文件 Connected to the tar

  • 前言       本章讲解JFinal框架的ORM 方法 1.概念 我们知道,hibernate和mybatis等框架完美解决了后端的编码压力,那么作为急速开发框架的JFinal也不例外。他拥有全部的功能,当然包含ORM,这使得我们仅仅需要一个框架就能够开发项目。(以前都是三个框架整合的) 2.基础配置 在前面的例子中,或多或少的渗透了其连接数据库的配置: public void configPl

  • 在Java web开发中,通常会在web.xml中配置过滤器Filter,jFinal框架也是这样。 在web.xml中配置filter:     <filter>         <filter-name>jfinal</filter-name>         <filter-class>com.jfinal.core.JFinalFilter</filter-class>         <

 相关资料
  • 看完前面的文档,你会发现使用 Blade 开发Web应用是简单的、快速的,当然也功归于约定。 我们使用 Maven 构建项目,打包同时也可以用它,如果你对 Maven 插件熟悉的话可能也用过了, 当然没用过也没关系,你只需要按照下面的操作配置一下即可。 打包工程 添加插件 <build> <finalName>hello</finalName> <plugins>

  • 打包 直接使用下面命令,就可以把vue项目打包: $ npm run build 如下: siwei@siwei-linux:/workspace/test_vue_0613$ npm run build > test_vue_0613@1.0.0 build /workspace/test_vue_0613 > node build/build.js ⠦ building for prod

  • Spring和Spring Boot都支持maven和Gradle通用打包管理技术。 Spring Boot相对Spring的一些优点: 提供嵌入式容器支持; 使用命令java -jar独立运行jar; 部署时可以灵活指定配置文件; 最近项目是分布式的项目,都是通过分项目打包部署,然后部署在docker中运行。

  • 本文向大家介绍springboot 打包部署 共享依赖包(分布式开发集中式部署微服务),包括了springboot 打包部署 共享依赖包(分布式开发集中式部署微服务)的使用技巧和注意事项,需要的朋友参考一下 1、此文初衷 平常我们在进行微服务开发完毕后,单个微服务理应部署单个虚机上(docker也可),然后服务集中发布到服务注册中心上,但是有些小的项目,这样做未免太过繁杂增加了部署难度,这里主要讲

  • 1. 前言 项目开发完毕后,免不了将前后端应用打包,然后部署到生产服务器上运行。本篇就演示一个标准的打包、部署过程。 2. 操作流程 我们以上一篇开发的前后端分离项目 spring-boot-cors 为例进行打包、部署演示,步骤如下: 2.1 服务器运行环境安装 一般服务器采用 Linux 或者 Windows Server 系统,相对而言 Linux 系统更加稳定安全。实际上 Windows

  • Blade本身没有特殊的打包服务,但是因为项目是Maven结构所以结合maven中的打包插件就可以完成了。 怎么做呢? 加入打包插件 <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <appendAssemblyId>false</appendAssemblyId>

  • san serve是开发环境打包,下面详细说下用法。 使用命令 san serve [entry] entry:入口文件,用于编译单一文件,不传入,则从当前工作目录,读取 Config 文件的 pages 配置项 参数说明 --port,--p:指定 devServer 端口号,默认为 8899 --use-https: 请求头是否使用 https,默认为 false --host,--H:指定

  • 环境要求(单机环境) jdk zookeeper zkui(方便查看zookeeper集群信息) mysql node.js 环境配置过程: vmware安装centos(其他linux环境理论上一样,但未测试),选择NAT模式方便与宿主机联网; 安装jdk(我使用的jdk1.8) 安装zookeeper和zkui 安装node.js(porter-ui需要node环境) 准备mysql服务器,p