一.几款servlet容器对比:jetty,Tomcat,JBoss

二.JBOSS相关问题解决


一.几款servlet容器对比:jetty,Tomcat,JBoss

jetty VS Tomcat
https://baike.baidu.com/item/jetty/370234?fr=aladdin#2
Jetty更满足公有云的分布式环境的需求,而Tomcat更符合企业级环境

  • Jetty更轻量级。这是相对Tomcat而言的。
    由于Tomcat除了遵循Java Servlet规范之外,自身还扩展了大量JEE特性以满足企业级应用的需求,所以Tomcat是较重量级的,而且配置较Jetty亦复杂许多。但对于大量普通互联网应用而言,并不需要用到Tomcat其他高级特性,所以在这种情况下,使用Tomcat是很浪费资源的。这种劣势放在分布式环境下,更是明显。换成Jetty,每个应用服务器省下那几兆内存,对于大的分布式环境则是节省大量资源。而且,Jetty的轻量级也使其在处理高并发细粒度请求的场景下显得更快速高效
  • Jetty更灵活,体现在其可插拔性和可扩展性,更易于开发者对Jetty本身进行二次开发,定制一个适合自身需求的Web Server。
    相比之下,重量级的Tomcat原本便支持过多特性,要对其瘦身的成本远大于丰富Jetty的成本。用自己的理解,即增肥容易减肥难。
  • 然而,当支持大规模企业级应用时,Jetty也许便需要扩展,在这场景下Tomcat便是更优的。

jboss
说实话平时做一些小的开发设计使用的一般为tomcat,jetty也早就想尝试一下了,不都说“优雅的jetty”吗,然而奈何学校的课设需要使用jboss,对jboss的耳闻是因为去年看了《大型分布式网站技术架构-核心原理与案例分析》《大型分布式网站技术架构-设计与实践》这两本书后知道了早些年的淘宝网是使用jboss中间件的。眼看着课设的日子就要来了,万般无奈的下了个jboss,然而没有想到的是,它貌似许久都没有更新维护了,而且对jdk的支持貌似只达到了1.7版本,我原本的9.0.4在jboss中根本没法用。。。于是只好又装了一个1.7版的jdk,而且1.8的jdk它也是不支持的,更不要说1.9及现在的1.12了。。。
好想吐槽一下大学的课程:什么时候可以不要这么过时又无聊:)

二.JBOSS相关问题解决

1.JBOSS下载安装

下载网址为 http://www.jboss.org/jbossas/downloads/

测试JBoss

1.运行脚本jboss7.1.1\bin\standalone.bat完成启动。
2.访问http://127.0.0.1:8080/,出现 Welcome to AS 7访问界面,说明JBoss启动成功

2.处理jboss-as-7.1.1.Final与jdk1.8及1.8以上版本的不兼容问题

https://blog.csdn.net/tiegenZ/article/details/77881138
解决:只能安装小于1.8版本的jdk,例如1.7版本。

解决多个版本的jdk的切换问题

最好单独建立JAVA_HOME环境变量,在Path中使用JAVA_HOME
这样一来可以每次仅修改JAVA_HOME来达到jdk的切换

3.解决启动JBOSS的standalone.bat时端口占用冲突问题

测试JBoss

1.运行脚本D:\jboss7.1.1\bin\standalone.bat完成启动。
2.访问http://127.0.0.1:8080/,出现 Welcome to AS 7访问界面,说明JBoss启动成功

在运行jboss7.1.1\bin\standalone.bat出错
错误如下:

JBAS014777: Services which failed to start: service jboss.serverManagement.controller.management.http: org.jboss.msc.service.StartException in service jboss.serverManagement.controller.management.http: Address already in use: bind /127.0.0.1:9990

解决方案:
首先在不改动JBOSS启动端口的情况下,尝试关闭占用了该端口的windows服务:

C:\Users\lenovo>netstat -ano | find ":9990"
TCP 127.0.0.1:9990 0.0.0.0:0 LISTENING 4100
C:\Users\lenovo>tasklist | findstr 4100
NvNetworkService.exe 4100 Services 0 2,636 K
C:\Users\lenovo>taskkill /pid 4100
错误: 无法终止 PID 为 4100 的进程。
原因: 拒绝访问。
C:\Users\lenovo>taskkill -t /pid 4100
错误: 无法终止 PID 4100 (属于 PID 836 子进程)的进程。
原因: 拒绝访问。
C:\Users\lenovo>tasklist | findstr 836
services.exe 836 Services 0 7,652 K
svchost.exe 2836 Services 0 10,656 K

Notes:实用taskkill-ft选项时需注意:pid值较小的关键系统进程不可以随意杀死!!!

既然无法通过杀死占用了9990端口的进程的方式修复该问题,那么下面只能通过修改jboss.serverManagement.controller.management的启动端口的方式修复此问题:

  • 首先找到JBOSS的配置文件jboss7.1.1\standalone\configuration\standalone.xml
  • 打开该配置文件,找到下面这行内容:

<socket-binding name="management-http" port="${jboss.management.http.port:9990}" interface="management"/>

将9990端口改为一个其它未被占用的port。

C:\Users\lenovo>netstat -ano | find ":9991"
C:\Users\lenovo>

通过上述查找可发现9991port没有被占用,因此可将port="${jboss.management.http.port:9990}" 中的9990改为9991.

最后成功修复该问题:

4.设置外网访问

JBoss安装完成后,默认只能本地访问(即:只有127.0.0.1/localhost或http://localhost:8080能访问),如果想让其他人也可以访问你的网页,需要修改JBoss的配置文件,即修改standalone.xml,增加本机Web地址的内容。
(1). 打开JBOSS配置文件:D:\jboss7.1.1\standalone\configuration\standalone.xml
(2). 在<interfaces>与</interfaces>之间,增加一个interface节点,节点内容如下:

		<!-- 设置外网访问  -->
<interface name="any">
<any-ipv4-address/>
</interface>
  • 1
  • 2
  • 3
  • 4

接着,修改socket-binding-group节点的default-interface属性的为any

修改完后,重启JBoss7.1就可以用外网的IP来访问了。

5. 添加用户

添加用户程序:
\jboss7.1.1\bin\add-user.bat
.bat:windows ,.sh:linux
访问地址:
http://127.0.0.1:<consolePort>/console

具体步骤:
访问该Web服务器时,提示新增用户。可在服务端执行add-user.bat(在Jboss主目录下的bin目录中) 来添加管理员用户。
双击执行add-user.bat

What type of user do you wish to add?
a) Management User (mgmt-users.properties)
b) Application User (application-users.properties)
(a):a //输入a后回车
Enter the details of the new user to add.
Realm (ManagementRealm) : //回车,选用默认
Username : admin //填写管理员用户名admin
Password : //填写管理员密码123456(输入后不会被现实出来)
Re-enter Password :
The username ‘admin’ is easy to guess
Are you sure you want to add user ‘admin’ yes/no? yes
About to add user ‘admin’ for realm ‘ManagementRealm’
Is this correct yes/no? yes
Added user ‘admin’ to file ‘D:\jboss7.1.1\standalone\configuration\mgmt-users.properties’
Added user ‘admin’ to file ‘D:\jboss7.1.1\domain\configuration\mgmt-users.properties’
请按任意键继续. . .

添加管理员后,重新启动Jboss后访问http://127.0.0.1:9991/console,会弹出要求输入用户名和密码的页面,注意我在前面由于jboss console与windows中服务的端口冲突问题,修改了jboss console port为9991,其原本默认设置为9990.

6.在eclipse-jee中配置JBoss

为了实现在eclipse-jee中对JBoss的控制,可以将JBoss的启动和停止添加到eclipse-jee中。启动eclipse-jee后,进入菜单Window-> Preferences-> Server -> Runtime Environments,
点击右侧的Add选项即可添加servlet容器。
Eclipse Java EE Developer Tools https://marketplace.eclipse.org/content/eclipse-java-ee-developer-tools-0
目前为止在上述网址上下载eclipse-jee已经不支持配置JBoss7.1了,其支持的中间件如下:
只有使用老师下发的安装包才可以配置JBoss7.1

以上步骤完毕后,在Servers视图内会有JBoss服务器出现。选中JBoss7.1Runtime Server,在右键菜单中点击Start,JBoss服务器开始启动。若浏览器可以访问http://127.0.0.1:8080/,则配置成功。

7.在JBoss中配置mysql数据库连接池

  • D:\jboss-as-7.1.1.Final\modules\com路径下,新建文件夹mysql\main,并将mysql-connector-java-5.1.26-bin.jar 复制到main文件夹下,同时新建module.xml文件
    配置文件 module.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <module xmlns="urn:jboss:module:1.0" name="com.mysql">
    <resources>
    <resource-root path="mysql-connector-java-5.1.26-bin.jar"/>
    </resources>
    <dependencies>
    <module name="javax.api"/>
    </dependencies>
    </module>
  • 修改standalone.xml配置文件其路径为D:\jboss-as-7.1.1.Final\standalone\configuration。打开standalone.xml文件,找到 <datasources>标签,里面应该已经有一个默认的datasource:ExampleDS,现在加入我们的mysql的datasource

配置文件standalone.xml中的datasource标签
<datasource jndi-name="java:/MySqlDS" pool-name="MySqlDS" enabled="true" use-java-context="true">
<connection-url>jdbc:mysql://localhost:3306/jbossdb</connection-url>
<driver>mysql</driver>
<security>
<user-name>root</user-name>
<password>123</password>
</security>
</datasource>
接下来,在 <datasource>...<drivers>...</drivers>...</datasource>drivers标签中进行配置。
配置文件 standalone.xml中的driver标签
<drivers>
<driver name="mysql" module=" com.mysql ">
<driver-class>com.mysql.jdbc.Driver</driver-class>
<xa-datasource-class>
com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
</xa-datasource-class>
</driver>
</drivers>

文章最后发布于: 2019-05-05 15:26:53
有 0 个人打赏

servlet容器:jetty,Tomcat,JBoss的更多相关文章

  1. Web服务器(Apache)与Servlet容器(Tomcat)

    之前一直比较迷惑Apache与Tomcat的关系,通过查询资料,有所了解,现记录于此. Apache与Tomcat 两者定位:Apache是HTTP Web服务器,Tomcat是Web容器. 有一个非 ...

  2. Servlet容器 Jetty

    http://www.oschina.net/p/jettyJetty 是一个开源的servlet容器,它为基于Java的web内容,例如JSP和servlet提供运行环境.Jetty是使用Java语 ...

  3. JSP学习 —— 开篇:JSP,servlet容器,Tomcat,servlet容器之间的关系

    JSP(JAVA SERVER PAGE)的缩写,其本身就是servlet的简化,是一种动态网页标准,其特点是在HTML代码中嵌入JAVA代码,JSP标签或用户标签来生成网页.至于它为什么会出现,主要 ...

  4. 关于Apache/Tomcat/JBOSS/Neginx/lighttpd/Jetty等一些常见服务器的区别比较和理解

    先说Apache和Tomcat的区别: Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一. ...

  5. 对于Servlet、Servlet容器以及一个Servlet容器-Tomcat

    Servlet.Servlet容器等内容讲解 转载自http://blog.csdn.net/iAm333 对于Servlet.Servlet容器以及一个Servlet容器-Tomcat这些概念讲解的 ...

  6. Apache/Tomcat/JBOSS/Nginx区别

    先说Apache和Tomcat的区别: Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一. ...

  7. 浅析Apache/Tomcat/JBOSS/Nginx之区别

    浅析Apache/Tomcat/JBOSS/Nginx服务器之区别 一.Apache和Tomcat的区别 Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上, ...

  8. Apache/Tomcat/JBOSS/Nginx区别(转)

    先说Apache和Tomcat的区别: Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一. ...

  9. Servlet 容器

    Servlet容器主要是JavaWeb应用提供运行时环境,所以也可以称之为JavaWeb应用容器,或者Servlet/JSP容器.Servlet容器主要负责管理Servlet.JSP的生命周期以及它们 ...

  10. java框架之SpringBoot(8)-嵌入式Servlet容器

    前言 SpringBoot 默认使用的嵌入式 Servlet 容器为 Tomcat,通过依赖关系就可以看到: 问题: 如何定制和修改 Servlet 容器相关配置? SpringBoot 能否支持其它 ...

随机推荐

  1. JDBC 学习复习9 配置Tomcat数据源

    在实际开发中,我们有时候还会使用服务器提供给我们的数据库连接池,比如我们希望Tomcat服务器在启动的时候可以帮我们创建一个数据库连接池,那么我们在应用程序中就不需要手动去创建数据库连接池,直接使用T ...

  2. web.xml 转 学习!http://www.cnblogs.com/wkrbky/p/5929943.html

    1.spring 框架解决字符串编码问题:过滤器 CharacterEncodingFilter(filter-name) 2.在web.xml配置监听器ContextLoaderListener(l ...

  3. VisualSVN 关于权限(第2篇)

    最终的答案: 仓库本身不能给他增加访问权限,必须增加否则连不上,不增加的时候 他默认就是No Access: 仓库本身可以理解为:祖宗,他是访问权限的根基.子目录会继承他的权限. 那么既然必须给他增加 ...

  4. 关于微信小程序获取多个formId的实现方法

    在此之前,很多人使用过form和button的多层嵌套来实现点击一次获取多个formId的目的,如下图所示,点击一次“提交”,可以获取到多个formId 但是在今年3月份,这个投机取巧的方法(算是微信 ...

  5. nginx增加新模块

    以gunzip这个模块为例,讲述一下,在nginx中如何安装新的模块 1.首先查看nginx已经安装了哪些模块. nginx –V 2.发现没有gunzip模块,安装 进入nginx的安装目录中,不是 ...

  6. 记录一次OOM排查经历

    我是用了netty搭建了一个UDP接收日志,堆启动配置 Xmx256  Xms256 ,项目刚启动的时候,系统进程占用内存很正常,在250M左右. 长时间运行之后发现,进程占用内存不断增长,远远超过了 ...

  7. Linux学习笔记(十二)VIM编辑器

    一.概述 VI Visual interface 可视化接口,类似于Windows中的记事本 VI->VIM 操作模式: (1)Command mode 命令模式 (2)Insert mode ...

  8. JS不间断向上滚动 setInterval和clearInterval

    <div id=demo style=overflow:hidden;height:139;width:232;background:#f4f4f4;color:#ffffff><d ...

  9. Oracle自动化安装脚本-part02-亲试ok

     此为网络配置文件  network.conf [PUBLIC-IP] IP-LIST:192.168.7.198,192.168.8.221 HOSTNAME-LIST:mysql-198,RAC2 ...

  10. 第107题:二叉树的层次遍历II

    一. 问题描述 给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 ...