8

我正在將我的應用程序從GlassFish 3.0.1遷移到GlassFish 3.1.1。部署失敗,並顯示以下錯誤消息:「沒有堆棧跟蹤時加載應用程序時出現異常」

SEVERE: Exception while loading the app 
SEVERE: Exception while shutting down application container 
SEVERE: Exception while shutting down application container : java.lang.NullPointerException 
SEVERE: java.lang.RuntimeException: Error occurred during deployment: Exception while shutting down application container : java.lang.NullPointerException. Please see server.log for more details. 

沒有堆棧跟蹤。我打開根日誌記錄級別爲FINEST和焊縫消息後發生的第一嚴重的消息:

//... 
FINE: WELD-000105 Enabled interceptor types for Manager 
Enabled alternatives: [] [] 
Registered contexts: [interface javax.enterprise.context.SessionScoped, interface javax.enterprise.context.RequestScoped, interface javax.inject.Singleton, interface javax.enterprise.context.Dependent, interface javax.enterprise.context.ApplicationScoped, interface javax.enterprise.context.ConversationScoped] 
Registered beans: 0 
Specialized beans: 0 
: [] 

而之前像這樣的幾個消息(幾個不同的類):

FINE: PWC4451: File cannot be read /opt/sun/glassfish-3.1.1/glassfish/domains/domain1/applications/QmsWeb/WEB-INF/classes/org/jboss/seam/transaction/SeamTransaction.class 
FINE: PWC4451: File cannot be read /opt/sun/glassfish-3.1.1/glassfish/domains/domain1/applications/QmsWeb/WEB-INF/classes/org/jboss/seam/transaction/SeamTransaction.class 
FINE: PWC4451: File cannot be read /opt/sun/glassfish-3.1.1/glassfish/domains/domain1/applications/QmsWeb/WEB-INF/classes/net/sf/ehcache/config/TerracottaConfiguration$ValueMode.class 
//... 

有什麼事情引起這個錯誤?這些PWC4451消息是否表明某些庫沒有被加載?

+0

這看起來好像無處可去。如果任何開發工具程序員看到這一點,請記住:良好的錯誤消息是一個功能! – Nick

+2

這實際上被標記爲Glassfish問題,應該在Glassfish 4.0中修復,以解決該問題。請參閱http://java.net/jira/browse/GLASSFISH-18599,不幸的是,這無助於你或我現在。 –

回答

6

這是由於@ViewScoped bean沒有實現Serializable。顯然,我們使用的Weld的舊版本並沒有發現鈍化範圍的bean不是Serializable,但是由於它的存在,這個失敗了。哦,希望這能節省一些時間。

+1

你已經釘了它! – Matyas

3

3小時調試後,我固定一個問題像這樣的嘗試部署像焊接多條錯誤消息似乎在JBoss中6

申請沒有得到Glassfish的下正確記錄。在我的情況下,我使用@Stateless @RequestScoped註釋了一個EJB(這是非法的,必須是@Statefull)。 對於Glassfish,我只能看到「加載應用程序時出錯」,而在JBoss 6中,我得到了正確的錯誤消息,指出了違規代碼。

我建議你嘗試在JBoss 6上部署所有部分(例如@Resource,具有特定的JNDI路徑),以防止Weld部署人員掃描應用程序並驗證CDI內容。

+0

感謝您的建議,我會考慮在JBoss上運行我的應用程序。你知道這個bug是否已經報告給Seam/GlassFish人? – Nick

2

在我的情況下,問題是我的beans.xml由空的「beans」元素組成,它曾經工作但顯然不再存在。當我用一個完全空的0字節beans.xml替換它時,它工作正常。

+0

這解決了我的問題!謝謝......在我試過之前會花費很長時間*) –

2

當添加一個在Glassfish 3.1.2.2中不可序列化的攔截器時,我遇到了同樣的問題。剛剛得到NullPointerException沒有任何進一步的解釋。

當我攔截器執行Serializable時,它工作正常。

1

原因和解決方案我也遇到過關於這個問題:
- 沒有更新的目標(確保做一個maven乾淨,目標文件夾可能會被鎖定,請嘗試手動刪除它並重建你的耳朵(有幾個這個問題次)
- JDBC池的問題:刷新它們
- EJB的構造函數問題(注意它是創建bean的容器):容器需要能夠啓動它們,因此沒有參數的默認構造函數必須是目前

如果不起作用: 團隊 - >比較 - >最新工作版本並將每個EJB bean或DTO視爲Web服務的可能原因。評論您的更改並重試部署以查找問題。

以任何方式它是一個討厭的錯誤:(祝你好運!

0

就我而言,本着攔截者的精神,我很容易找到,因爲我在那裏玩耍。

我在攔截器上添加了無辜的@Interceptor,即使我將它與註釋一起使用。

我的版本的玻璃魚是3.1.2.2。

這個頁面說它是可選的Inteceptor Javadoc

相關問題