当项目被部署到tomcat的webapps目录下时,会出现spring context初始化两次,以及bean两次建立,以及其形成dubbo端口被占用Failed to bind NettyServer,以及其余重复建立对象等问题。java
/*Spring 打印2次初始化日志 Initializing Spring root WebApplicationContext ...... Initializing Spring root WebApplicationContext */
--查询数据库链接 --oracle select sess.sid,sess.serial#,sess.machine, lo.oracle_username,lo.os_user_name, ao.object_name,lo.locked_mode from v$locked_object lo, dba_objects ao,v$session sess where ao.object_id = lo.object_id and lo.session_id = sess.sid; --mysql select host, count(host) from information_schema.processlist; --mysql也能够直接status查看状态 status
/* 项目启动异常绑定某个IP:PORT失败,该端口已经被占用 Caused by: com.alibaba.dubbo.remoting.RemotingException: Failed to bind NettyServer on /10.0.15.163:20892, cause: Failed to bind to: /0.0.0.0:20892 ...... Caused by: org.jboss.netty.channel.ChannelException: Failed to bind to: /0.0.0.0:20892 ...... Caused by: java.net.BindException: Address already in use: bind ...... */
/*某个单例对象,打印了2次对象建立日志 [localhost-startStop-1] DEBUG 单例对象XXX建立成功! [localhost-startStop-1] DEBUG Creating instance of bean 'beanName' [localhost-startStop-1] DEBUG Creating shared instance of singleton bean 'beanName2' ......... [localhost-startStop-1] DEBUG 单例对象XXX建立成功! [localhost-startStop-1] DEBUG Creating instance of bean 'beanName' [localhost-startStop-1] DEBUG Creating shared instance of singleton bean 'beanName2' ......... */
<!--关闭Tomcat热部署和启动部署(能够不关deployOnStartup)以免两次部署,此时须要手动部署--> <Host appBase="webapps" autoDeploy="false" deployOnStartup="false" name="localhost" unpackWARs="true"> <!--内部节点--> <Context/> </Host>
将项目发布到tomcat\webapps\ROOT目录下mysql
修改项目的Deploy Path为除了tomcat\webapps之外的其余文件夹,如tomcat\myapp(这个方法对于Eclipse启动Tomcat来讲最方便实用)nginx
使用nginx指向tomcatweb