對Spring Boot觀察了好久,最近終於開始有機會使用Spring Boot來做項目的開發,Spring Boot不需要部署,用jar包模式運行的機制,非常適合做快速開發,能在項目演示和迭代期間起到快速的推進作用。整體來說是一個非常好快速開發框架。
今天著重要說一下的是Spring Boot項目打包成war包,部署到J2EE容器,特別是Websphere遇到的問題。
首先Spring Boot項目build的war包,在Tomcat 7,8,Jetty等容器下,不論是嵌入到eclipse中,還是部署運行都是ok的.在Websphere 8.5.5 liberty profile中運行也沒有問題,但是在 Websphere 8.5.5的正式版本中,就有幾個地方需要注意,否則Spring Boot相關的包不會被服務器load,導致項目部署好了所有的訪問都是404.
解決辦法
使用maven package 對項目進行打包
創建共享庫,指定項目相關的Jar包存放路徑,並把war包中lib文件夾裡面的jar文件全部copy到該路徑下
創建共享庫
使用eclipse重新打包,把依賴的maven庫排除在打包文件之外,或者直接從打包好的war文件中刪除所有的jar
ECLIPSE重新打包
修改部署項目的classloader順序
修改classloader順序
到此為止,基本上項目就能正常運行了,如果還是繼續報404,重啟一下websphere,或者在項目的啟動行為那裡點擊一下(這裡我猜測,點擊之後項目會重新被容器load一次,這是會把所有相關的jar文件加載)
啟動行為
相關版本
Spring Boot version 1.3.3 IBM WebSphere Application Server Network Deployment 8.5.5.1 JDK7