簡體   English   中英

將預定的EJB部署到Glassfish服務器時出現問題

[英]Problem deploying scheduled EJB to Glassfish server

我有一個想部署到我的Glassfish 3.1應用程序服務器上的EJB的怪異(?)問題。

我有這個bean,應該使用@Schedule批注在Glassfish中連續執行。 在我向訪問數據庫的EJB添加一些代碼之前,這對我來說效果很好。

@Stateless
public class MyBean implements MyBeanLocal {

    @Schedule(second = "*", minute = "*", hour = "*")
    public void initiateProcess() {

        MyCoordinator mc = new MyCoordinatorImpl();
        List<Entity> entities = mc.methodAccessingDB();
    }
}

這是我的EJB,每秒執行一次。 上面我怎么說,如果調用ac.methodAccessingDB() ,則可以部署此EJB並成功執行。 這意味着,我什至無法將其部署到Glassfish。 玻璃魚告訴我

無效的ejb jar [...]:它包含零ejb。 注意:1.一個有效的ejb jar需要至少一個會話,實體(1.x / 2.x樣式)或消息驅動的bean。 2. EJB3 +實體bean(@Entity)是POJO,請將其打包為庫jar。 3.如果jar文件包含用EJB組件級別注釋(@ Stateless,@ Stateful,@ MessageDriven,@ Singleton)注釋的有效EJB,請檢查server.log以查看注釋是否已正確處理。請參閱服務器。登錄以獲取更多詳細信息。

如果我只寫List<Entity> entities = null; 而不是List<Entity> entities = ac.methodAccessingDB(); 我可以部署它,並且運行良好。

好的,現在我找到了解決該問題的方法。 EJB在部署的版本上找不到類。 解決方案是將所有內容打包到一個耳朵項目中。 我正在使用maven,所以我在最后3個項目中創建了。

  • 一個用於EJB <packaging>ejb</packaging>
  • 一個用於EAR <packaging>ear</packaging>
  • 第三個父項目,它將兩個其他項目集成為<module>

然后,我將打包好的耳朵放到Glassfish上,計時器開始計時,一切都准備就緒。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM