2015-10-28 38 views
-1

我創建了一個具有一個Main類的java項目。所以我正在使用這個Main類運行這個Java Project 主要方法。但是現在我的需求發生了變化,我必須創建此項目的EJB,並且可部署的工件將是EAR。因此,仍然在尋找我將如何在Websphere中部署此EAR時運行此主要方法。在EJB上部署EAR運行main方法

只想總結一下,我想在EJB中執行EJB中的main方法,在WebSphere中部署EAR,搜索了很多嘗試一兩種方法但仍然在尋找一些好方法。

+1

你不能那樣做。這不是EJB的工作原理。 –

+0

@Elliott Frisch,所以我會做的是有任何替代方式 – Tenacious

+0

你可以嘗試使用[''ServletContextListener'](http://java.sun.com/javaee/5/docs/api/javax/servlet/ServletContextListener html的);這與Servlet(而不是EJB)一樣。 –

回答

0

據我所知,如果您使用的是Java EE 6,並且希望以預定方式調用EJB方法,那麼可以使用@Schedule對其進行註釋來創建調度程序EJB,在其中注入EJB並使調度方法調用您注入的EJB方法。如果情況並非如此,並且您希望按需要調用它們,則需要像注入它們的Servlet那樣的客戶端。

+0

我不想製作預定的EJB,我只想創建監聽器所以我將能夠使用第 – Tenacious

+0

頁上的消息如果您試圖在JMS隊列上使用雙向消息,則需要創建一個MDB EJB,你可以找到很多關於如何做到這一點的谷歌教程:) – DSF

+0

其實從主要我想開始My Project的執行,並且這個主要方法是在EJB內,然後主要調用這個函數負責創建與某些API的連接,然後創建線程池以維護偵聽器讀取消息。所以我關心的主要問題是何時部署了EJB,然後websphere如何調用我的主要方法 – Tenacious

1

從您的問題和意見來看,如果您完全瞭解EJB如何工作(即它們的生命週期,它們如何被調用等),我不完全清楚。如果您還沒有這樣做,我建議您閱讀Java EE教程,例如this one from Oracle

一旦您瞭解事情的工作方式,have a look here並選擇最適合您的情況的方式。

通用於所有方法的是,您不能像以前那樣擁有主方法,但必須將其轉換爲您的EJB的普通公共方法,該方法將在啓動時調用。

由於您正在使用EAR,所以您還可以在EAR中將WAR包裝到您的EJB中,然後使用我的鏈接中描述的ContextListener方法。

但現在也幾乎沒有必要有一個EAR。您可以將所有內容都包裝在WAR中。看到這裏:Why use an ear instead of a war?