如標題所述,這裡分享的 java tomcat server 專案具有以下特點:
----- 以下開始採坑全記錄!
MacBook-Pro ~ % docker run -d --name=tomcat-ithelp -p 8088:8080 tomcat:9.0-jdk8-openjdk
container 長出來後,興沖沖地在 safari 鍵入 localhost:8088
解決方法:
看起來正常了!
既然 docker image 是宣稱 tomcat:9.0-jdk8-openjdk
確實是 java 8。
接下來把專案檔 managerWeb.war 複製一份到 container 的 webapps 目錄下。
MacBook-Pro ~ % docker cp ~/managerWeb/managerWeb.war tomcat-ithelp:/usr/local/tomcat/webapps
container log 噴錯了!
『 Failed to instantiate [com.mchange.v2.c3p0.ComboPooledDataSource]: Constructor threw exception; nested exception is java.lang.ExceptionInInitializerError』
解決方法:
RESTART container 後,繼續噴錯!
『com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure』
解決方法:
RESTART container 後,繼續噴錯!
『Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext/applicationContext-sessionFactory.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: javax.persistence.UniqueConstraint.name()Ljava/lang/String;』
經過google大神的指點後,
直接刪除 WEB-INF/lib 下的 persistence.jar
總算 ...
後記:
這篇主要是寫給未來的自己看的。
未來再處理到這種 Jar 檔沒有控管的專案,只好耐心地把這堆有衝突的 Jar 檔逐步移除了。