smart-servlet 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
smart-servlet 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
smart-servlet 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
smart-servlet 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
smart-servlet 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 Apache
开发语言 Java
操作系统 跨平台
软件类型 开源软件
所属分类 Web应用开发
开发厂商
地区 国产
提 交 者 三刀_sandao
适用人群 未知
收录时间 2020-11-16

软件简介

smart-servlet 是一款实现了 Servlet 3.1 规范,支持多应用隔离部署的的 Web 容器。

Part 1. 项目概述

smart-servlet 在 smart-http 的架构之上,通过继承 HttpHandle 实现了 Servlet 规范。这意味着任何 smart-http 服务都可以通过单独引入 smart-servlet 核心包的方式,将普通的 http 应用改造成 servlet 应用,而且这个成本是极低的。

为了更好融入现有的 Java 技术生态,尤其是 Spring 生态,我们在应用层面做了很多便利的设计:

  • binary distributions

    二进制软件包,可将 War 包部署到指定目录下以启动服务。类似:apache-tomcat-x.xx.xx.tar.gz

  • maven plugin

    通过maven插件的形式集成 smart-servlet,用于本地项目开发调试。类似于:tomcat7-maven-plugin。

  • springboot starter

    类似于: spring-boot-starter-tomcat、spring-boot-starter-undertow、spring-boot-starter-jetty。

版本说明

功能清单 社区版 企业版 说明
开源 ✅ 🚫 企业版是在社区版的基础上提供一些增强能力,可以理解为社区版是企业版的子集。具体差异以实际发布版本为准。
商用能力 ❌ ✅ 社区版相较企业版所缺少的授权项,在某些情况下可能无法满足企业商用标准
软件包 ✅ ✅ 开箱即用,解码后可部署 War 包运行,用于生产环境部署。
maven-plugin ✅ ✅ 集成pom.xml本地启动服务
springboot starter ✅ ✅ 继Tomcat、Undertow、Jetty之后的第四个spring-boot-starter-web包
多应用部署 ❌ ✅ 通过类加载器的隔离机制,实现单Web容器部署多应用
JSP页面支持 ❌ ✅ 暂未实现
Session规范 ✅ ✅ 暂未实现
Cookie规范 ✅ ✅ 暂未实现
服务配置维护 默认 自定义 社区版采用了默认的服务配置,仅适合本地项目的开发、调试。如需应用到生产环境,需要购买企业版以作服务配置调优。
价格 免费 订阅制 具体方案待定

如何选择适合自己的版本?

  • 社区版:

    提供了完整的Servle规范实现,可供技术人员学习交流。

    具备了基本的运行能力,可用于本地的开发调试。

    对于低流量的个人站点,亦可部署社区版(应对高并发的能力有限)。

  • 企业版:

    提供专业级的Web容器服务能力,支持参数调优以获得最佳的性能、稳定性表现。

    适合本地开发调试,以及生产环境应用。

    采用订阅制模式收取一定费用,为了更好的建设、发展该项目。

如何购买

  • 目前项目还处于研发期,仅开放社区版供大家免费下载体验。
  • 具体方案以项目实际发展状况再作设计,如果我们能找到良性的发展方向,不排除免费开放企业版的可能性。
  • 对本项目有卓越贡献的用户,将有机会免费获得企业版授权。贡献方式包括且不限于:贡献代码、功能测试、核对规范实现一致性、产出文档、推广本项目。
  • 本项目的捐赠者在项目正式发布前享有提前体验权利,有意向的朋友请前往【捐赠入口】,并在捐赠后及时与我取得联系。

开发团队

  • 三刀

Part 2. 操作手册

smart-servlet 还未正式发布,如需体验需要通过本地编译来使用,请按以下步骤操作:

  1. 拉取本仓库代码。

  2. 进入工程主目录执行 mvn install,当控制台出现以下信息时,说明编译成功。

    [INFO] ------------------------------------------------------------------------
    [INFO] Reactor Summary:
    [INFO] 
    [INFO] smart-servlet-parent ............................... SUCCESS [  1.168 s]
    [INFO] servlet-core ....................................... SUCCESS [ 10.142 s]
    [INFO] smart-servlet-spring-boot-starter .................. SUCCESS [  2.107 s]
    [INFO] smart-servlet-maven-plugin ......................... SUCCESS [  6.330 s]
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    
  3. 根据你自身的工程情况选择相应的集成方式。

    • maven plugin

      面向传统的 Servlet 或者 Spring MVC 工程,但必须是maven工程。需要在 web 模块所在的pom.xml中加入以下配置,若存在端口冲突自行调整。

     <!-- pom.xml -->
     <project>
      <build>
        <plugins>
          <plugin>
            <groupId>org.smartboot.servlet</groupId>
            <artifactId>smart-servlet-maven-plugin</artifactId>
            <version>1.0.0-SNAPSHOT</version>
            <configuration>
              <port>8080</port>
            </configuration>
          </plugin>
        </plugins>  
      </build>
     </project>
    • springboot starter

      对于Springboot提供的集成方式,替换原 spring-boot-starter-web 默认绑定的 Servlet 容器。

       <!-- pom.xml -->
       <project>
         <dependencies>
           <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
             <exclusions>
               <exclusion>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-starter-tomcat</artifactId>
               </exclusion>
             </exclusions>
           </dependency>
           <dependency>
             <groupId>org.smartboot.servlet</groupId>
             <artifactId>smart-servlet-spring-boot-starter</artifactId>
             <version>1.0.0-SNAPSHOT</version>
           </dependency>
         </dependencies>
       </project>
  4. 完成配置,下一步启动你的应用。

特别说明

本项目还处于研发阶段,还未完成所有 Servlet 标准的兑现。如若在使用过程中发现问题可提 Issues 反馈,我们会尽快安排处理,感谢您的理解和支持!

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (7)

加载中
厉害,不过我想请问一下:底层用的啥?
2020/11/16 18:51
回复
举报
三刀_sandao软件作者
java aio技术
2020/11/17 12:10
回复
举报
仔细阅读tomcat源码,这才是真正的架构技术!
2020/12/22 13:34
回复
举报
不认同,我阅读过部分jetty源码,基于jetty的web容器写了个应用执行容器,学而用之,而不是纸上谈兵,实践才是真理。架构技术从来不是一成不变的,都是逐步演进,tomcat并不是什么标准。
2020/12/22 13:38
回复
举报
maven , jenkins,nexus 很多,这些开源中间件都是顶尖的架构师设计的,源码都值得阅读。
2020/12/22 13:44
回复
举报
没有最好,只有适合,netty从mina、jboss到现在,架构上都是做了微调的,还是那句,架构不是从一开始就固定不变的,都在演进。
2020/12/22 13:48
回复
举报
刘辟
2020/11/16 17:55
回复
举报
更多评论
01/01 11:47

smart-servlet v0.1.2 发布,开源人假期不打烊

smart-servlet 是一款实现了Servlet 3.1规范,支持多应用隔离部署的的 Web 容器。除此之外,smart-servlet 还是一款插件化容器,基于内置的沙箱环境确保 smart-servlet 拥有最精简的运行能力,用户还可以通过自定义插件扩展容器的服务能力。 开发这个项目的过程中会听到一些疑惑的声音:为什么要去开发 servlet 容器?现...

2
5
2020/12/18 12:13

开源 Servlet 服务器 smart-servlet v0.1.1 发布

smart-servlet 是一款实现了 Servlet 3.1 规范,支持多应用隔离部署的的 Web 服务器。 smart-servlet 在 smart-http 的基础之上,通过继承 HttpHandle 实现了 Servlet 规范。这意味着任何 smart-http 服务都可以通过单独引入 smart-servlet 核心包的方式,将普通的 http 应用改造成 servlet 应用,而且这个成本是极低的。...

19
13
2020/12/12 14:27

smart-servlet v0.1.0 首发,筹备了 3 年的开源 Servlet 服务器

smart-servlet 是一款实现了 Servlet 3.1 规范,支持多应用隔离部署的的 Web 服务器。尽管开源时长仅 1 个月,还有着诸多不成熟,但希望未来能成为如同 Tomcat、Undertow 般优秀的项目。为了这个目标,smart-servlet 准备了三年: 3年前,开源 AIO 通信框架 smart-socket。为从事通信开发的朋友提供了除 netty、mina 之外...

10
9
2020/12/01 10:27

国产自研 servlet 容器,smart-servlet 体验版发布

smart-servlet 是一款实现了Servlet 3.1规范,支持多应用隔离部署的的 Web 容器。除此之外,smart-servlet 还是一款插件化容器,用户可以通过开发自定义插件扩展容器的服务能力。 考虑到本项目还处于研发阶段,很多功能、设计在过程中存在较大的不确定性,故不在此处披露太多信息,以免某些过时、无效信息干扰大家对这个...

9
4
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
2020/08/04 13:04

J2EE之Servlet

个人认为Servlet在Java开发中属于最基础也是很重要的一个知识点了,今天就来简单谈谈servlet。 1.如何开发一个servlet 步骤: 1)编写java类,继承HttpServlet类 2)重新doGet和doPost方法 3)Servlet程序交给tom...

0
2
发表了博客
2019/05/04 19:53

JAVAEE-EJB

1.what is EJB(三个规则) A.定义服务端组件的编写规则 B.定义组件之间的交互规则 C.定义服务器对组件的管理规则 2.核心思想: 将商业逻辑和底层系统逻辑分离,开发者只需要关心商业逻辑,而由EJB容器实现目录服...

0
1
发表了博客
2015/03/01 21:49

JSP与Servlet

两者之间的关联

1
1
发表了博客
2013/05/11 14:08

Servlet与JSP

使用Servlet产生动态网页,需要在代码中打印输出很多HTML的标签,此外,在Servlet中,我们不得不将静态显示的内容和动态产生内容的代码混合在一起,这样程序员和网页编辑人员将无法一起工作,因为网页编辑人员不了解java语言,无法修改Servlet的代码。为了解决这个问题,Sun公司后来又推出了JSP(JavServer Pages)技术。...

0
1
发表了博客
2014/07/31 13:36

j2EE JSP

JSP,JSP执行过程,JSP语法,jsp内置对象,jsp filter

0
0
发表了博客
2019/02/15 16:42

J2EE与EJB

问题及答案来源自《Java程序员面试笔试宝典》第五章 Java Web 5.2 J2EE与EJB 1、什么是J2EE? J2EE是Java平台企业版的简称,是用来开发和部署企业级应用的一个架构,提供了统一的、开放标准的多层平台 J2EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共同的标准及规格,让各种 依循J2EE架...

0
0
2019/10/14 22:46

BeginnersBook JSP、JSTL、Servlet 教程

来源:ApacheCN BeginnersBook 翻译项目 译者:飞龙 协议:CC BY-NC-SA 4.0 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 请您勇敢地去翻译和改进翻译。虽然我们追求卓越,但我们并不要求您做到十全十美...

0
3
发表了博客
2019/03/01 17:52

web.xml servlet、servlet-mapping配置

Servlet 常称为服务器端小程序,即运行在服务器端的程序,用于处理及响应客户的请求。 Servlet类 是个特殊的java类,继承于HttpServlet。 --------------------------------------------------------------- 方法 客户端通常只有GET和POST两种请求方式,Servlet为了响应则两种请求,必须重写doGet()和doPost()方法。大部...

0
1
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
7 评论
12 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部