Jetty介绍

1. 使用

  • 参考上面文档,但是有些更新:
echo $JETTY_HOME
/Users/aliyun/Downloads/softwoare/jetty-distribution-9.4.7.v20170914
ali-2cf0ee28bc54:jetty aliyun$ java -jar $JETTY_HOME/start.jar
ERROR : Nothing to start, exiting ... Usage: java -jar $JETTY_HOME/start.jar [options] [properties] [configs]
java -jar $JETTY_HOME/start.jar --help # for more information
ali-2cf0ee28bc54:jetty aliyun$ pwd
/Users/aliyun/code/web/jetty
ali-2cf0ee28bc54:jetty aliyun$ JETTY_BASE=/Users/aliyun/code/web/jetty/
ali-2cf0ee28bc54:jetty aliyun$ java -jar $JETTY_HOME/start.jar
ERROR : Nothing to start, exiting ... Usage: java -jar $JETTY_HOME/start.jar [options] [properties] [configs]
java -jar $JETTY_HOME/start.jar --help # for more information
ali-2cf0ee28bc54:jetty aliyun$ java -jar $JETTY_HOME/start.jar --add-to-startd=http,deploy
WARN : --add-to-startd is deprecated! Instead use: --create-startd --add-to-start=http,deploy
MKDIR : ${jetty.base}/start.d
INFO : webapp transitively enabled, ini template available with --add-to-start=webapp
INFO : server transitively enabled, ini template available with --add-to-start=server
INFO : security transitively enabled
INFO : servlet transitively enabled
INFO : http initialized in ${jetty.base}/start.d/http.ini
INFO : deploy initialized in ${jetty.base}/start.d/deploy.ini
MKDIR : ${jetty.base}/webapps
INFO : Base directory was modified
ali-2cf0ee28bc54:jetty aliyun$
建议使用:
Instead use: --create-startd --add-to-start=http,deploy

2. Jfinal使用问题

  • 接触Jfinal框架的时候发现它依赖的都是比较旧的类库,因为我本机上大部分mvn类库都有,不想占用电脑空间不想加载多种版本的类库了,所以更新了一下maven依赖。不明白为什么Jfinal没有更新一些类库,需要的同学可以参考以下问题来自己修改Jfinal的依赖和代码。
  • 使用发现的异常:
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jetty/server/nio/SelectChannelConnector
  • 原因时Jfinal依赖的jetty版本是8.1.8,我本机已经有的依赖是9.2.7.v20150116版本,故重新fork了jfinal的源代码,pull了新分支发现在类com.jfinal.server.JettyServer中使用了9.2.7版本中没有的类org.eclipse.jetty.server.nio.SelectChannelConnector,参考别的jetty使用代码,修改server启动时配置端口的地方即可,去掉已经没有的依赖。还发现jfinal主线是java1.6的版本,,有一些地方提示代码有错,如没有加@Override,异常处理等。于是修改了一些IDE报错,重新编译发布了jfinal的包,才好用。
java.lang.NoSuchMethodError: javax.servlet.http.HttpServletResponse.getStatus()I
  • javax-servlet-api-3.1.0版本的类库里确实没有该方法,使用mvn dependency:tree来查看当前依赖,发现是jfinal中velocity-tools依赖了servlet2.3版本,如下:而我本机又没有新的依赖,所以在maven中去掉该版本依赖:
 +- org.apache.velocity:velocity-tools:jar:2.0:provided
[INFO] | +- commons-beanutils:commons-beanutils:jar:1.7.0:provided
[INFO] | +- commons-digester:commons-digester:jar:1.8:provided
[INFO] | +- commons-chain:commons-chain:jar:1.1:provided
[INFO] | +- commons-logging:commons-logging:jar:1.1:provided
[INFO] | | \- javax.servlet:servlet-api:jar:2.3:provided
[INFO] | +- commons-validator:commons-validator:jar:1.3.1:provided <dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-tools</artifactId>
<version>2.0</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
  • 参考基础教程Jfinal教程手册,使用Jfinal来写一个简单的web应用。与使用django的体验类似,没有spring繁杂的配置,几行代码就可以。现在spring-boot等也在向一个main函数启动应用的简化方向演化。
  • 使用maven package来打包应用。在输出的target目录下运行main方法,即可实现。
  • 运行成功结果:
ali-2cf0ee28bc54:jfinal-web-1.0.0-RELEASE aliyun$ java -cp WEB-INF/lib/*:WEB-INF/classes/ top.hunaner.JfinalApplication
Starting JFinal 3.3
2017-12-20 17:02:16.036:INFO::main: Logging initialized @293ms
Starting scanner at interval of 5 seconds.
Starting web server on port: 8006
2017-12-20 17:02:16.197:INFO:oejs.Server:main: jetty-9.2.7.v20150116
2017-12-20 17:02:16.462:INFO:oejw.StandardDescriptorProcessor:main: NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet
2017-12-20 17:02:16.607:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@59494225{/,file:/Users/aliyun/Documents/GitHub/hello-world/code/jfinal/project/jfinalTest/target/jfinal-web-1.0.0-RELEASE/,AVAILABLE}
//注意这里说明了jfinal项目的地址,与单独使用jetty一致。
2017-12-20 17:02:16.641:INFO:oejs.ServerConnector:main: Started ServerConnector@55b9ae50{HTTP/1.1}{0.0.0.0:8006}
2017-12-20 17:02:16.642:INFO:oejs.Server:main: Started @901ms
Starting Complete. Welcome To The JFinal World :)
Before method invoking
After method invoking JFinal action report -------- 2017-12-20 17:02:28 ------------------------------
Url : GET /hello
Controller : top.hunaner.controller.HelloController.(HelloController.java:1)
Method : index
Interceptor : top.hunaner.interceptor.LogInterceptor.(LogInterceptor.java:1)
--------------------------------------------------------------------------------

Jfinal初次尝试及Jetty使用相关问题的更多相关文章

  1. 孤荷凌寒自学python第五十二天初次尝试使用python读取Firebase数据库中记录

    孤荷凌寒自学python第五十二天初次尝试使用python读取Firebase数据库中记录 (完整学习过程屏幕记录视频地址在文末) 今天继续研究Firebase数据库,利用google免费提供的这个数 ...

  2. 孤荷凌寒自学python第五十一天初次尝试使用python连接Firebase数据库

    孤荷凌寒自学python第五十一天初次尝试使用python连接Firebase数据库 (完整学习过程屏幕记录视频地址在文末) 今天继续研究Firebase数据库,利用google免费提供的这个数据库服 ...

  3. 微信小程序开发初次尝试-----实验应用制作(一)

    初次尝试微信小程序开发,在此写下步骤以做记录和分享. 1.在网上找了很多资料,发现这位知乎大神提供的资料非常全面. 链接 https://www.zhihu.com/question/50907897 ...

  4. 20145330《Java学习笔记》第一章课后练习8知识总结以及IDEA初次尝试

    20145330<Java学习笔记>第一章课后练习8知识总结以及IDEA初次尝试 题目: 如果C:\workspace\Hello\src中有Main.java如下: package cc ...

  5. 初次尝试使用jenkins+python+appium构建自动化测试

    初次尝试使用jenkins+python+appium构建自动化测试 因为刚刚尝试使用jenkins+python+appium尝试,只是一个Demo需要很多完善,先记录一下今天的成果,再接再厉 第一 ...

  6. 孤荷凌寒自学python第五十七天初次尝试使用python来连接远端MongoDb数据库

    孤荷凌寒自学python第五十七天初次尝试使用python来连接远端MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第三天.感觉这个东西学习起来还是那么困 ...

  7. 初次尝试python爬虫,爬取小说网站的小说。

    本次是小阿鹏,第一次通过python爬虫去爬一个小说网站的小说. 下面直接上菜. 1.首先我需要导入相应的包,这里我采用了第三方模块的架包,requests.requests是python实现的简单易 ...

  8. Docker Compose + Traefik v2 快速安装, 自动申请SSL证书 http转https 初次尝试

    前言 昨晚闲得无聊睡不着觉,拿起服务器尝试部署了一下Docker + Traefik v2.1.6 ,以下是一些配置的总结,初次接触,大佬勿喷. 我的系统环境是 Ubuntu 18.04.3 LTS ...

  9. Windows下CRF++进行中文人名识别的初次尝试

    语料来自1998年1月份人民日报语料 1 语料处理 1.1 原始语料数据格式 语料中,句子已经被分词好,并且在人名后以“/”标注了“nr”表示是人名,其他非人名的分词没有进行标注 1.2 CRF++要 ...

随机推荐

  1. GO 类型断言

    在Go语言中,我们可以使用type switch语句查询接口变量的真实数据类型,语法如下: switch x.(type) { // cases } x必须是接口类型. 来看一个详细的示例: type ...

  2. mybatis设置Map空值返回

    mybatis时,设置Map返回,当值为空时属性也会没有 在application.properties中加入下面配置,将会解决这个问题. #当查询数据为空时字段返回为null,不加这个查询数据为空时 ...

  3. elasticsearch工作笔记002---Centos7.3安装最新版elasticsearch-7.0.0-beta1-x86_64.rpm单机版安装

    新版本es安装问题: https://blog.csdn.net/lidew521/article/details/88091539

  4. 3dmax联机分布式渲染方法技巧详解

      3dmax联机分布式渲染方法技巧详解 \测试环境:win7系统 3DMAX2009 Vray2.0 .首先要保证你的两台电脑能在局域网里互相访问如图: 其他电脑上也一样都能打开对方的电脑! 步! ...

  5. struct ifreq 获取IP 和mac和修改mac

    2012-09-11 14:26 struct ifreq 获取IP 和mac和修改mac 配置ip地址和mask地址: ifconfig eth0 192.168.50.22  netmask 25 ...

  6. 001-http-总览、文件配置、常用http client、http连接池

    一.概述 http请求项目搭建:地址:https://github.com/bjlhx15/common-study.git 中的common-http 主要针对post请求中的,form表单[app ...

  7. osg 场景漫游

    #ifdef _WIN32 #include <Windows.h> #endif // _WIN32 #include <osg/Group> #include <os ...

  8. Q_PROPERTY

    1.在自定义控件中看到这个用法 2.Q_PROPERTY(double Min READ getMin WRITE setMin) 代表当前类有一个double属性叫Min,有一个读函数getMin, ...

  9. Kafka Connect Architecture

    Kafka Connect's goal of copying data between systems has been tackled by a variety of frameworks, ma ...

  10. Tips for Conda

    管理环境 创建环境 基于 python3.6 创建一个名为test_py3的环境 conda create -n test_py3 python=3.6 基于 python2.7 创建一个名为test ...