问题现象:tongweb服务启动时 提示:[SEVERE] [main] [core] [address already in use: 8005]
提示8005端口已经在用,此时我电脑上已经启动了tomcat tomcat的默认关闭端口就是8005。因此我们可以采用:关闭tomcat 、修改tomcat默认关闭端口、修改tongweb端口 等方式使得使用的端口不冲突。
本文介绍不关闭tomcat、不修改tomcat端口而是修改 tongweb端口的方式处理此类端口冲突问题。
要想修改端口,在未启动服务的情况下,需要通过修改配置文件来达成,因此我们需要了解tongweb的默认端口配置文件位置:
tongweb使用的默认端口情况如下:
服务程序 | 功能 | 默认端口/协议 | 端口作用 | 所在配置文件 |
---|---|---|---|---|
TongWeb | 提供服务的核心进程 | 8088 | 默认应用访问端口 | conf/tongweb.xml |
9060 | 默认控制台端口 | |||
7200 | JMX端口,并随机启动两个端口 | |||
5100 | EJB远程端口 | |||
8005 | 默认停止端口 |
可见tongweb默认的应用访问端口8088、控制台端口9060、jmx端口7200、EJB远程端口 5100以及默认停止端口8005均在安装根目录的conf文件夹里的tongweb.xml文件里,
找到此文件tongweb.xml,查看到内容大致如下(不同版本内容可能存在不同):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<tongweb>
<auto-deploy enabled="true" jsp-compile="false" dir="${tongweb.root}/autodeploy" check-interval="3000"/>
<hot-deploy enabled="false" watched-resource="WEB-INF/web.xml,MATA-INF/application.xml"/>
<apps>
<web-app name="console" original-location="${tongweb.upload}/console" location="${tongweb.sysapp}/console" context-root="/console" vs-names="admin" is-directory="true" enabled="true" description="console" deploy-order="1" object-type="sys" jsp-compile="false" dtd-validate="false" is-autodeploy="false" delegate="false"/>
<web-app name="heimdall" original-location="${tongweb.upload}/heimdall" location="${tongweb.sysapp}/heimdall" context-root="/heimdall" vs-names="admin" is-directory="true" enabled="true" description="heimdall" deploy-order="1" object-type="sys" jsp-compile="false" dtd-validate="false" is-autodeploy="false" delegate="false"/>
<web-app name="sysweb" original-location="${tongweb.upload}/sysweb" location="${tongweb.sysapp}/sysweb" context-root="/sysweb" vs-names="admin" is-directory="true" enabled="true" description="sysweb" deploy-order="1" object-type="sys" jsp-compile="false" dtd-validate="false" is-autodeploy="false" delegate="false"/>
<web-app name="ntkoSignServer" original-location="F:/SignServer/ntkoSignServer" location="F:/SignServer/ntkoSignServer" context-root="/ntkoSignServer" vs-names="server" is-directory="true" enabled="true" description="" deploy-order="100" object-type="user" jsp-compile="false" dtd-validate="false" is-autodeploy="false" version="" retire-state="none" retire-strategy="nature" retire-timeout="0" version-serial-number="1" delegate="false"/>
<connector-app name="genericra" original-location="${tongweb.upload}/genericra" location="${tongweb.sysapp}/genericra" is-directory="true" enabled="true" thread-pool="default-thread-pool" deploy-order="1" object-type="sys" dtd-validate="false" is-autodeploy="false" version="">
<property name="LogLevel" value="INFO"/>
<property name="JndiProperties" value="java.naming.factory.initial=com.sun.jndi.fscontext.RefFSContextFactory,java.naming.provider.url=file:${tongweb.root}/apache-activemq/conf"/>
<property name="RMPolicy" value="OnePerPhysicalConnection"/>
<property name="SupportsXA" value="false"/>
<property name="ProviderIntegrationMode" value="jndi"/>
</connector-app>
</apps>
<server jsf="false">
<web-container jsp-development="true" parameter-encoding="UTF-8" response-encoding="UTF-8" jvm-route="" session-timeout="30" hung-thread-threshold="0" hostnameVerifier="NullHostnameVerifier">
<access-log pattern="%{yyyyMMddHHmmssSSS}t %U %m %a %D" suffix=".txt" log-extend="false" file-date-format="yy.MM.dd.HH"/>
<virtual-host name="admin" listeners="system-http-listener" accesslog-enabled="false" accesslog-dir="logs/access" sso-enabled="false" remote-filter-enabled="false">
<sso/>
<remote-filter/>
</virtual-host>
<virtual-host name="server" listeners="tong-http-listener" accesslog-enabled="false" accesslog-dir="logs/access" sso-enabled="false" remote-filter-enabled="false">
<sso/>
<remote-filter/>
</virtual-host>
<http-listener name="system-http-listener" port="9060" io-mode="nio2" redirect-port="8443" uri-encoding="GBK" parse-body-methods="POST,DELETE,PUT" default-virtual-host="admin" create-time="2019-10-29 10:54:11">
<ssl/>
<protocol max-threads="200" min-spare-threads="10"/>
<http-options/>
<advance/>
</http-listener>
<http-listener name="tong-http-listener" port="8088" status="started" address="0.0.0.0" io-mode="nio2" http2-enabled="false" ssl-enabled="false" redirect-port="8443" uri-encoding="UTF-8" use-body-encoding-for-uri="false" max-parameter-count="10000" max-post-size="2097152" parse-body-methods="POST" default-virtual-host="server" create-time="2019-10-29 10:54:11">
<ssl/>
<protocol not-allow-HTTP-methods="TRACE,OPTIONS,HEAD,CONNECT,DELETE" async-timeout="10000" enable-lookups="false" max-header-count="100" use-ipv-hosts="false" xpowered-by="false" backlog="100" accept-thread-count="1" connection-timeout="60000" keep-alive-timeout="60000" max-threads="200" min-spare-threads="10" processor-cache="200" tcp-no-delay="true" max-connections="10000" self-tuned="false">
<property name="threadPriority" value="5"/>
</protocol>
<http-options compression="off" compressable-mime-type="text/html,text/xml,text/plain" compression-min-size="2048" disable-upload-timeout="true" max-http-header-size="8192" max-keep-alive-requests="100"/>
<advance disable-keep-alive-percentage="75" selector-timeout="1000" usecomet="true" use-sendfile="true" oom-parachute="1048576"/>
<property name="server" value="webserver"/>
</http-listener>
<http-listener name="ejb-server-listener" port="5100" uri-encoding="GBK" parse-body-methods="POST" default-virtual-host="server" create-time="2019-10-29 10:54:12">
<ssl/>
<protocol max-threads="200" min-spare-threads="10"/>
<http-options/>
<advance/>
</http-listener>
<property name="complete.message.timeout.seconds" value="0"/>
<property name="max.attack.times" value="3"/>
<property name="blacklist.expired.hours" value="12"/>
<property name="interrupt.current.connect" value="true"/>
<property name="unloadDelay" value="2"/>
<property name="addWebinfClassesResources" value="false"/>
<property name="sessionLog" value="false"/>
<property name="hostHeaderGuard" value="false"/>
<property name="hostHeaderGuardWhiteList" value=""/>
</web-container>
<ejb-container>
<stateful/>
<singleton/>
<stateless/>
<mdb/>
</ejb-container>
<security-service>
<auth-realm name="defaultRealm" type="File">
<property name="UsersFile" value="twusers.properties"/>
<property name="GroupsFile" value="twgroups.properties"/>
</auth-realm>
</security-service>
<transaction-service transaction-timeout-in-seconds="3600"/>
<monitor-service monitoring-enabled="false" flush-interval="60" flush-time-threshold="1800" persist-enabled="false" rotation-limit-val="10" rotation-limit-unit="MB">
<monitor-config name="Memory" monitoring-enabled="false" produce-interval="10" persistent-enabled="false"/>
<monitor-config name="JVMMemoryPool" monitoring-enabled="false" produce-interval="10" persistent-enabled="false"/>
<monitor-config name="GarbageCollector" monitoring-enabled="false" produce-interval="10" persistent-enabled="false"/>
<monitor-config name="JVMThread" monitoring-enabled="false" produce-interval="10" persistent-enabled="false"/>
<monitor-config name="Compilation" monitoring-enabled="false" produce-interval="10" persistent-enabled="false"/>
<monitor-config name="ClassLoading" monitoring-enabled="false" produce-interval="10" persistent-enabled="false"/>
<monitor-config name="Runtime" monitoring-enabled="false" produce-interval="10" persistent-enabled="false"/>
<monitor-config name="OperatingSystem" monitoring-enabled="false" produce-interval="10" persistent-enabled="false"/>
<monitor-config name="TWServer" monitoring-enabled="false" produce-interval="10" persistent-enabled="false"/>
<monitor-config name="ConnectorAndThreadPool" monitoring-enabled="false" produce-interval="10" persistent-enabled="false"/>
<monitor-config name="DataSource" monitoring-enabled="false" produce-interval="10" persistent-enabled="false"/>
<monitor-config name="DataSourceLite" monitoring-enabled="false" produce-interval="10" persistent-enabled="false"/>
<monitor-config name="TransactionManager" monitoring-enabled="false" produce-interval="10" persistent-enabled="false"/>
<monitor-config name="JCA" monitoring-enabled="false" produce-interval="10" persistent-enabled="false"/>
<monitor-config name="WebModule" monitoring-enabled="false" produce-interval="10" persistent-enabled="false"/>
<monitor-config name="SessionManager" monitoring-enabled="false" produce-interval="10" persistent-enabled="false"/>
<monitor-config name="Loader" monitoring-enabled="false" produce-interval="10" persistent-enabled="false"/>
<monitor-config name="ResourceCache" monitoring-enabled="false" produce-interval="10" persistent-enabled="false"/>
</monitor-service>
<jmx-service port="7200" address="127.0.0.1" protocol="rmi"/>
<jms-service/>
<log-service file="${tongweb.root}/logs/server.log" rotation-limit="50 MB" rotation-timelimit="0" rotation-file-count="20" rotation-by-day="false" log-format="[%d{yyyy-MM-dd HH:mm:ss SSS}] [%p] [%t] [%c] [%m]%n" rotation="true" verbose="false" asynclog-on="false" thread-num="1" capacity="2147483647">
<module-log-levels ejb-container="INFO" web-container="INFO" cdi="INFO" jpa="INFO" jsf-impl="INFO" jsf-api="INFO" jta="INFO" jca="INFO" data-source="INFO" jms-resource="INFO" beanvalidation="INFO" naming="INFO" admin="INFO" configuration="INFO" deployment="INFO" monitor-service="INFO" core="INFO" security="INFO" rmi-service="INFO" systemout="INFO" other="INFO" javamail="INFO"/>
</log-service>
<log-save-path sql-log-path="logs" audit-log-path="logs/audit-log" persistence-log-path="persistence"/>
<compress-log-service compress-enabled="false,false,false" log-dir="${tongweb.root}/logs,${tongweb.root}/logs/access,${tongweb.root}/persistence" compress-obj="1,2,3" rotation-time="1,1,1" execution-time="1,1,1"/>
<snmp-service enabled="false" port="161" address="0.0.0.0" version="3" transportType="udp" engineID="62:a0:c1:81:11:c3:17:33" securityName="public" authKey="nmsAuthKey" privKey="myDesPriviateKey"/>
<jca-thread-pool name="default-thread-pool" min-threads="10" max-threads="200" queue="100" keep-alive-time="3600"/>
</server>
<snapshot>
<auto-snapshot interval-second="5" relation="or">
<contents jstack="true" jmap="true" config="true" monitor="true" system-log="true" access-log="true" gc-log="true"/>
</auto-snapshot>
<size-clear disk-remain-percent="20%" clear-percent="60%"/>
<time-clear timeout-day="30"/>
</snapshot>
</tongweb>
可以看到涉及端口的信息如下:
system-http-listener 即系统控制台端口信息:
<http-listener name="system-http-listener" port="9060" io-mode="nio2" redirect-port="8443" uri-encoding="GBK" parse-body-methods="POST,DELETE,PUT" default-virtual-host="admin" create-time="2019-10-29 10:54:11">
<ssl/>
<protocol max-threads="200" min-spare-threads="10"/>
<http-options/>
<advance/>
</http-listener>
tong-http-listener 即http 通道端口 也就是应用程序访问端口信息:
<http-listener name="tong-http-listener" port="8088" status="started" address="0.0.0.0" io-mode="nio2" http2-enabled="false" ssl-enabled="false" redirect-port="8443" uri-encoding="UTF-8" use-body-encoding-for-uri="false" max-parameter-count="10000" max-post-size="2097152" parse-body-methods="POST" default-virtual-host="server" create-time="2019-10-29 10:54:11">
<ssl/>
<protocol not-allow-HTTP-methods="TRACE,OPTIONS,HEAD,CONNECT,DELETE" async-timeout="10000" enable-lookups="false" max-header-count="100" use-ipv-hosts="false" xpowered-by="false" backlog="100" accept-thread-count="1" connection-timeout="60000" keep-alive-timeout="60000" max-threads="200" min-spare-threads="10" processor-cache="200" tcp-no-delay="true" max-connections="10000" self-tuned="false">
<property name="threadPriority" value="5"/>
</protocol>
<http-options compression="off" compressable-mime-type="text/html,text/xml,text/plain" compression-min-size="2048" disable-upload-timeout="true" max-http-header-size="8192" max-keep-alive-requests="100"/>
<advance disable-keep-alive-percentage="75" selector-timeout="1000" usecomet="true" use-sendfile="true" oom-parachute="1048576"/>
<property name="server" value="webserver"/>
</http-listener>
ejb-server-listener 即ejb服务端口信息:
<http-listener name="ejb-server-listener" port="5100" uri-encoding="GBK" parse-body-methods="POST" default-virtual-host="server" create-time="2019-10-29 10:54:12">
<ssl/>
<protocol max-threads="200" min-spare-threads="10"/>
<http-options/>
<advance/>
</http-listener>
jmx-server port及jmx服务端口:
<jmx-service port="7200" address="127.0.0.1" protocol="rmi"/>
<jms-service/>
8005的端口信息比较难找 ,内容为:
<server jsf="false">
没有配置 就是默认的8005。 将此项内容改为:
<server shutdown-port="8006" jsf="false">
将对应的端口设置成可用的就可以了。
再重启tongweb服务,查看效果: