當項目被部署到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