最简单的同台电脑运行多个Tomcat服务

本文介绍如何在同一台机器上部署多个Tomcat实例,并通过修改端口配置和创建启动脚本实现独立运行。此外,还提供了将Tomcat实例转换为Windows服务的方法,以便于管理和系统启动时自动运行。
想必在JAVA这块混的人,都有过同台机器跑多个tomcat的经历吧.估计很多想人第一时间就想到了,弄N个解压版的tomcat下来改改端口,就行了.当然没问题;当然还有人,会想到了apache server....当然也没问题,个人觉得后者配置有些烦锁,说实话,本人不喜欢第二种作法!本人选择第一种做法.但同样达到第二种的效果,而且简单!那要怎么做呢?请慢慢看下面的述说吧.

首先是实现一个Tomcat程序上,运行N个Tomcat实例,然后每个Tomcat实例对应一个应用。
1.解压Tomcat压缩包(非Tomcat安装版),在%Tomcat%目录下会有bin,common,conf,logs,server,shared,tmp,webapps,work等文件夹与文件,我统称这些为Tomcat程序。[附注:Tomcat解压版要能跑起来,最好配置一下JDK在系统中的环境变量,这个是Java基础了,在些不再多讲]

2.创建应用名称为Tomcat8080的文件夹(非%Tomcat%下,该为Tomcat80),将%Tomcat%文件夹下的conf,logs,tmp,work文件夹拷贝到%Tomcat8080%目录下。


3.修改%Tomcat8080%/conf/server.xml配置文件中的三个端口:
a.Server port=”8?05″ shutdown=”SHUTDOWN”
b.Connector port=”8?80″ maxHttpHeaderSize=”8192″ …
c.Connector port=”8?09″ enableLookups=”false” …

注:Tomcat默认的这三个端口号为8005,8080,8009,Tomcat80对应8105,80,8109,Tomcat8080对应8205,8080,8209,以此类推。

4.现在启动Tomcat实例,在%Tomcat8080%目录下创建startup.bat脚本,代码如下:
set JAVA_HOME=D:\jdk1.6
set CATALINA_BASE=D:\Tomcat8080
set CATALINA_HOME=D:\Tomcat8080
%CATALINA_HOME%\bin\catalina start

5.启动各自%Tomcat[?]%的startup.bat,各自独立的Tomcat实例就启动了。

那为什么我会想要将这些各自的Tomcat实例转成Windows服务呢?原因有三点:
1.多个Tomcat实例启动会有多个Tomcat的Shell在运行,非常不美观;
2.通常web服务器都需要远程登录,如果使用startup.bat脚本启动的方式,那管理员将不能使用注销,而只能关闭远程连接,这样做的后果是服务器会提示“超出最大连接数”的错误,非常麻烦;
3.将Tomcat实例转成Windows服务,可以让应用在系统启动时候一起启动,而不需要手动去启动每个Tomcat实例,非常方便;

其实将Tomcat实例转成Windows服务也是很简单的事情,只需要运行下面脚本
[size=medium][color=red][b]set JAVA_HOME=D:\jdk1.6
set CATALINA_BASE=D:\Tomcat8080
set CATALINA_HOME=D:\Tomcat8080
%CATALINA_HOME%\bin\service.bat install "Tomcat8080"[/b][/color][/size]

将上述存成.bat文件执行,就会在windows服务控制台出现了Apache Tomcat "Tomcat8080"的服务选项,接下就是服务设定了,不再此罗嗦了^_^

要出现Apache Tomcat "Tomcat8080"这个服务选项,就再改改上面的脚本了吧!

[b][color=green]超值附送^_^:windows下删除服务:
办法一: 用sc.exe这个Windows命令
开始——运行——cmd.exe,然后输入sc就可以看到了。使用办法很简单:
sc delete "服务名" (如果服务名中间有空格,就需要前后加引号)
如针对上面的: sc delete KSD2Service

方法二:直接进行注册表编辑(不推荐)
打开注册表编辑器,找到下面的键值:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 一般服务会以相同的名字在这里显示一个主健,直接删除相关的键值便可。[/color][/b]


[color=darkred][注:以上的配置,本人在windowsxp+jdk1.6+Tomcat5.5环境下测试通过,骗人是动物!][/color]
【四轴飞行器】非线性三自由度四轴飞行器模拟器研究(Matlab代码实现)内容概要:本文围绕非线性三自由度四轴飞行器模拟器的研究展开,重点介绍了基于Matlab的建模与仿真方法。通过对四轴飞行器的动力学特性进行分析,构建了非线性状态空间模型,并实现了姿态与位置的动态模拟。研究涵盖了飞行器运动方程的建立、控制系统设计及数值仿真验证等环节,突出非线性系统的精确建模与仿真优势,有助于深入理解飞行器在复杂工况下的行为特征。此外,文中还提到了多种配套技术如PID控制、状态估计与路径规划等,展示了Matlab在航空航天仿真中的综合应用能力。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的高校学生、科研人员及从事无人机系统开发的工程技术人员,尤其适合研究生及以上层次的研究者。; 使用场景及目标:①用于四轴飞行器控制系统的设计与验证,支持算法快速原型开发;②作为教学工具帮助理解非线性动力学系统建模与仿真过程;③支撑科研项目中对飞行器姿态控制、轨迹跟踪等问题的深入研究; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注动力学建模与控制模块的实现细节,同时可延伸学习文档中提及的PID控制、状态估计等相关技术内容,以全面提升系统仿真与分析能力。
### 问题分析 在已经部署了另一个消息队列(MQ)的情况下,修改 ActiveMQ 的端口后无法启动,通常是由于以下原因导致: 1. **端口冲突**:若修改后的端口已被其他服务(如 RabbitMQ、Kafka 或其他 ActiveMQ 实例)占用,则 ActiveMQ 将无法正常启动。例如,RabbitMQ 默认使用 `5672` 端口,而 ActiveMQ 默认使用 `61616` 作为数据通信端口[^3]。 2. **配置文件错误**:在修改 `activemq.xml` 或 `jetty.xml` 文件时,如果格式不正确或遗漏了某些配置项,也可能导致服务启动失败。例如,在 `jetty.xml` 中设置 Web 控制台端口时,若未正确关闭原有监听端口或将多个实例配置为相同端口,将引发异常[^1]。 3. **Docker 容器配置问题**:若 ActiveMQ 是通过 Docker 部署的,修改端口后需确保容器映射的端口与宿主机端口一致,并且在重启容器前已正确更新配置文件[^2]。 4. **防火墙或 SELinux 设置**:若新端口未被系统防火墙允许,或者 SELinux 限制了该端口的访问,也会造成 ActiveMQ 启动失败。 --- ### 解决方案 #### 检查并避免端口冲突 在修改 ActiveMQ 的端口后,应首先检查目标端口是否已被其他服务占用。可以使用以下命令查看端口占用情况: ```bash netstat -tulnp | grep <port> ``` 例如,若修改后的 ActiveMQ 数据通信端口为 `61617`,则执行: ```bash netstat -tulnp | grep 61617 ``` 如果发现该端口已被占用,建议更换为其他未被使用的端口,以避免与其他 MQ 服务发生冲突[^3]。 #### 验证配置文件完整性 确保 `conf/activemq.xml` 和 `conf/jetty.xml` 中的端口配置正确无误。例如,在 `activemq.xml` 中应确认 `<transportConnector>` 标签的 `uri` 属性指向新的端口号: ```xml <transportConnector name="openwire" uri="tcp://0.0.0.0:61617"/> ``` 在 `jetty.xml` 中应确认 Web 控制台端口配置如下: ```xml <bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start"> <property name="port" value="8162"/> </bean> ``` 修改完成后,重新启动 ActiveMQ 服务: ```bash ./bin/activemq start ``` 若启动失败,可查看日志文件 `data/activemq.log` 获取详细错误信息。 #### Docker 环境下的处理方式 若 ActiveMQ 是通过 Docker 容器部署的,需确保容器内的配置文件已同步更新,并且运行时映射了正确的端口。例如,在启动容器时应指定新的端口映射: ```bash docker run -d -p 61617:61616 -p 8162:8161 -v /path/to/conf:/opt/activemq/conf rmohr/activemq ``` 上述命令将容器内部的 `61616` 映射到宿主机的 `61617`,并将 Web 控制台端口从 `8161` 映射到 `8162`。确保挂载的配置文件中也相应地修改了端口设置[^2]。 #### 检查系统防火墙和 SELinux 设置 如果 ActiveMQ 服务仍然无法启动,应检查系统防火墙是否阻止了新端口的访问。例如,在 Linux 上可以使用以下命令开放端口: ```bash sudo ufw allow 61617/tcp ``` 此外,若启用了 SELinux,可能需要调整策略以允许 ActiveMQ 使用非标准端口: ```bash sudo semanage port -a -t http_port_t -p tcp 8162 ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值