tulip notes
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Star-Lord

希望一天成为大师的学徒
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Java基础与面向对象

  • 高级进阶

  • 并发合集

  • JVM合集

  • 实战细节与其他

    • 快捷输入相关
    • 聊聊Java全栈服务器跟tomcat服务器
      • 服务器
        • 常见的服务器类型
      • Java全栈服务器
        • Tomcat 是什么服务器?
        • 核心功能
        • Tomcat 的目录结构
        • Tomcat 的局限性
        • Tomcat 的常见部署方式
        • Java EE服务器
        • EJB
        • 作用
        • 生效前提
      • 一些问题
        • JBoss CVE-2015-7501
        • 核心风险
        • 立即行动步骤
  • 代码之丑与提升

  • 《Java》学习笔记
  • 实战细节与其他
EffectTang
2025-06-22
目录

聊聊Java全栈服务器跟tomcat服务器

# 聊聊Java全栈服务器跟tomcat服务器

# 服务器

简单的说,“服务器”就是一个专门提供服务的计算机。

就像一家餐厅里的服务员,负责给顾客端菜、倒水一样,服务器就是一台电脑,它的工作是为其他设备(比如你的手机、笔记本电脑)提供数据、文件、网页、视频等服务。

那这个服务是什么呢?就是一段应用程序,在你你发送一个请求+一些数据(当然也可以不携带)后,它会返回一些新的数据给你。

从专业角度上来说,它指一种运行特定软件的计算机或虚拟机,用于接收来自客户端(Client)的请求,并返回响应或服务。

  • 它可以是一台物理机器(如数据中心里的主机),也可以是一个虚拟机(云服务器)。
  • 它通常配置更高(CPU、内存、硬盘、网络)以支持多用户同时访问。

# 常见的服务器类型

类型 功能说明
Web 服务器 提供网页内容(HTML、图片、视频等),如 Nginx、Apache
数据库服务器 存储和管理结构化数据,如 MySQL、MongoDB
应用服务器 运行应用程序逻辑,如 Java 的 Tomcat、Node.js 服务
文件服务器 存储和共享文件,如 FTP、Samba
邮件服务器 发送和接收电子邮件,如 Postfix、Exchange
游戏服务器 托管多人在线游戏的逻辑和状态
DNS 服务器 域名解析服务,将域名翻译成 IP 地址
云服务器 在互联网上的虚拟服务器(如阿里云、AWS 提供)

# Java全栈服务器

"Java 全栈服务器" 并不是一个严格的技术定义,而是指 使用 Java 技术栈搭建的全栈开发环境或服务器架构。这里的“全栈”指的是从前端到后端、数据库、部署等所有技术环节都由 Java 或相关技术实现。

# Tomcat 是什么服务器?

Tomcat 是 Apache 软件基金会开发的开源 Java Web 服务器,本质上是一个 Servlet 容器 和 JSP 容器。它实现了 Java Servlet 和 JSP 规范,用于部署和运行 Java Web 应用程序。

# 核心功能

  • Servlet/JSP 支持: 解析和执行 Java Servlet 和 JSP(Java Server Pages)代码。
  • HTTP 服务器: 提供 HTTP 协议支持,处理客户端请求并返回动态生成的网页内容。
  • 轻量级部署: 相比 JBoss、WebLogic 等重量级 Java EE 服务器,Tomcat 更轻量,适合中小型项目。

# Tomcat 的目录结构

  • bin/:启动脚本(如 startup.bat、catalina.sh)。
  • conf/:配置文件(如 server.xml 配置端口和虚拟主机)。
  • webapps/:部署 Web 应用的目录(如将 .war 包放于此自动生成应用)。
  • logs/:日志文件(如 catalina.out 记录启动日志)。
  • lib/:Tomcat 运行所需的 JAR 包。

# Tomcat 的局限性

  • 不支持完整的 Java EE 规范: Tomcat 只实现了 Servlet/JSP 规范,缺少 EJB、JMS 等高级功能(需使用 JBoss、WebLogic 等 Java EE 服务器)。
  • 性能瓶颈: 高并发场景下,Tomcat 的性能可能不如 Nginx + 反向代理的组合。

# Tomcat 的常见部署方式

  • 独立运行: 直接启动 Tomcat,部署 .war 包。
  • 与 Nginx 结合: Nginx 处理静态资源,Tomcat 处理动态请求(如 /api/*)。
  • Docker 容器化: 使用 Docker 镜像部署 Tomcat,便于快速扩展和迁移。

# Java EE服务器

其实tomcat就是一个典型的Java EE服务器,但它与Java全栈服务器有所区别(以下是它们的主要区别):

维度 Java EE 服务器 Java 全栈服务器
定位 专精后端企业级应用 整合前后端及数据库的完整技术栈
功能范围 仅后端(Servlet/JSP/EJB/JPA 等) 前端 + 后端 + 数据库 + 其他服务
技术栈 Java EE 规范(Servlet、JPA、JMS 等) Java + 前端技术(HTML/CSS/JS)+ 数据库
典型组件 WebLogic、WebSphere、Tomcat(部分实现) Nginx(前端)、Tomcat(后端)、MySQL(数据库)
适用场景 企业级分布式系统、金融/电信后台 创业项目、单体应用、快速原型开发
开发者角色 企业后端开发工程师 全栈工程师(前后端均需掌握)

Java EE 服务器 是 Java 全栈服务器的 后端子集,而 全栈服务器 是一个更广义的架构概念。

常见的Java EE全栈应用服务器包括:

  • WildFly (原名JBoss AS)
  • GlassFish
  • IBM WebSphere Application Server
  • Oracle WebLogic Server

每个都有自己的优势和特定用途,选择哪一个取决于具体的需求、预算以及技术偏好。

# EJB

Enterprise JavaBeans(EJB)是Java EE(现Jakarta EE)平台中用于构建分布式、可扩展且安全的企业级应用的服务器端组件模型。它通过标准化架构,将业务逻辑与底层系统服务(如事务、安全性、持久化)解耦,使开发者能专注于核心业务需求。

或者说,EJB 是封装业务逻辑的可重用组件,例如订单处理、用户认证或支付计算。开发者通过编写符合规范的 Java 类(如会话 Bean、实体 Bean),并声明其行为(如事务类型、安全角色),即可部署至支持 EJB 的应用服务器(如 JBoss、WebLogic)。

# 作用

EJB 运行在 EJB 容器 中,容器负责注入以下系统级服务:

  • 事务管理:自动处理分布式事务(如数据库更新一致性)。
  • 安全性:通过注解或配置文件定义方法级访问控制。
  • 生命周期管理:实例化、激活/钝化(内存优化)、资源池化(如无状态 Bean 的实例池)。
  • 远程通信:透明处理 RMI/CORBA 等协议,客户端通过远程接口调用 Bean 方法。

到此简单的总结下,其实EJB就是————,一类组件的统称,帮助Java应用解决一些功能问题。

# 生效前提

EJB 需要完整的 Java EE/Jakarta EE 应用服务器

  • Tomcat 仅是 Web 容器(Servlet/JSP 容器),不支持 EJB。
  • Netty 是网络通信框架,与 EJB 无直接关系。
  • EJB 必须运行在支持 Java EE 全栈的应用服务器中,例如:
    • JBoss/WildFly
    • IBM WebSphere
    • Oracle WebLogic
    • Apache TomEE(Tomcat + Java EE 扩展)

替代方案:若需轻量级方案,可选择 Spring Boot + 声明式服务(事务、安全等),其设计思想部分借鉴了 EJB 的容器管理理念。

# 一些问题

# JBoss CVE-2015-7501

JBoss JMXInvokerServlet 反序列化漏洞 (CVE-2015-7501),威胁等级:严重,可能会给黑客留下可乘之机。

CVE-2015-7501 是一个高危的 JBoss 反序列化漏洞,攻击者利用此漏洞可以在您的服务器上远程执行任意代码,从而完全控制受影响的系统。

# 核心风险

  • 无需认证: 攻击者无需用户名密码即可利用。
  • 远程代码执行: 成功利用可让攻击者在您的服务器上运行任何命令或代码(例如:安装勒索软件、窃取数据、创建后门、加入僵尸网络)。
  • 严重威胁: 威胁等级为“严重”是准确的,此漏洞危害极大。

# 立即行动步骤

  1. 确认受影响系统:
    • 立即登录腾讯云主机安全控制台(您提供的链接:https://mc.tencent.com/VlOj5BWX)。
    • 在控制台中找到这条告警详情,精确确定是哪台或多台云服务器(CVM)检测到了此漏洞。注意主机IP/实例ID。
  2. 紧急临时缓解(必须立即执行):
    • 移除 JMXInvokerServlet: 这是最快最有效的临时阻断攻击途径的方法。
      • 找到受影响 JBoss 实例的部署目录(通常是 jboss-as/server//deploy/ 或类似路径)。
      • 定位并 删除(或重命名) 文件 jmx-invoker-adaptor-server.sar/invoker.war。删除后,访问 JMXInvokerServlet 的路径将失效。
      • 重启 JBoss 服务 使更改生效。
    • 禁用 JMXInvokerServlet (替代方法): 如果无法立即删除文件。
      • 编辑 jmx-invoker-adaptor-server.sar/invoker.war/WEB-INF/web.xml 文件。
      • 找到 JMXInvokerServlet 的配置项(包含 和)。
      • 将其注释掉(用 <!-- 和 --> 包裹)或直接删除该 Servlet 配置块。
      • 重启 JBoss 服务 使更改生效。
  3. 永久修复(根本解决):
    • 升级 JBoss: 这是最推荐的解决方案。
      • 将受影响的 JBoss Application Server 升级到已修复该漏洞的版本。请查阅 Red Hat JBoss 的官方公告和安全补丁说明(通常需要升级到较新的EAP版本或应用特定补丁)。该漏洞在很老的版本中存在,官方早已发布修复。
      • 重要: 升级前务必在测试环境验证兼容性。升级后彻底测试应用功能。
    • 应用官方补丁: 如果无法立即升级大版本,检查是否有适用于您当前JBoss版本的独立安全补丁包。但升级通常是更彻底的选择。
    • 移除/禁用不必要服务: 审查 JBoss 配置,永久禁用所有不需要的远程访问服务和组件(特别是像 JMXInvokerServlet 这样历史上有问题的 Invoker 组件)。
上次更新: 2025/07/10, 15:17:54
快捷输入相关
如何精准命名

← 快捷输入相关 如何精准命名→

最近更新
01
springboot中发送http
06-17
02
集成Redis及注意事项
06-08
03
Vue项目发布
06-04
更多文章>
Theme by Vdoing | Copyright © 2023-2025 EffectTang
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式