問題背景
今天發版本,是一個httpclient的跳轉(由於公司網絡原因,所以對外網的訪問都經過這個代理服務出去)。
問題原因
之前的開發一直在window系統的tomcat服務器上進行的,對jboss沒有一點了解。所以今天就出了兩個大坑。記錄下來。
問題一:
項目部署到jboss上,啟動服務沒有任何錯誤,並且服務器上的其他應用能正確訪問,但是我部署的項目死都訪問不了(黑線,一直糾結是不是網絡組的同事發包的問題)。到最后,只有請出團隊的靈魂人物,老大來幫忙看了,看了半天,確實是我打包的問題,我打war包的時候,是在eclipse中右擊項目--->tomcat project--->export to the WAR file sets in project properties 然后到處war包,當然,之前也需要在eclipse中設置打war包的一些參數。
經過上面的方法打好war包后,悲劇也來了。后面發現,這種打包方式確實有問題,war包中還包含了源碼。
有問題的war包:(jboss運行有問題,Tomcat可以運行)
然后老大直接在eclipse中用export --> war file 打包,放到jboss服務中,完美運行,項目也可以訪問了
沒問題war包
這是打包的一個坑。。。。
問題二:
因為項目要訪問客戶接口,客戶接口是https需要證書。所以在項目中需要拿到本地的安全證書。在項目中,我把證書放到根目錄下,因此在程序里通過class.getResource("").getPath()方法拿到編譯后的根路徑。但是打印出來看到路徑前面還有一個分割符,如:/E:/tomcat/project/....所以,我用了字符分割去掉了前面的“/”,把路徑變為:E:/tomcat/project/....在window環境下,取得證書完全沒問題,等項目部署到linux服務上時,發現,找不到證書的路徑。一查,原來就是因為前面的“/”沒有了的原因。當初去掉就是憑個人感覺,在window中不需要前面的“/”。后面測試,在window環境下有前面的“/”,也能取到本地的證書。所以不需要將前面的“/”去掉,在window和linux環境下都能訪問到。這個又是訪問路徑的一個大坑。
開發就是在無數個坑里面前進。