2010-10-03 174 views
1

我開始一個新的企業項目,並使用Glassfish 3作爲應用程序服務器,NetBeans 6.9作爲IDE。我有一些EJBs,我想從桌面Swing應用程序遠程訪問。據我所知有兩個選擇 - 要麼使用普通JNDI查找或運行一個應用程序客戶端容器的Swing應用程序並使用@EJB註解。我成功地嘗試了第一個選項,但我不得不復制所有glassfish庫來滿足依賴關係(大約50MB,這是我不認爲正常的)。現在我嘗試第二種選擇。在NetBeans中,我創建了一個新的Enterprise Application Client項目,將EJB項目添加爲依賴項並按運行。我收到以下例外情況:Sniffers with type [ejb] and type [appclient] should not claim the archive at the same time。現在,如果我刪除package複選框,旁邊的應用程序客戶端的項目屬性EJB項目,我得到一個不同的ClassNotFound例外,我的遠程接口。我有一些更有經驗的人,告訴我他們如何遠程訪問他們的EJB,使用Glassfish 3?正如我上面寫的,我成功的第一個選項,但50MB太多,我的認爲一個簡單的客戶端EJB遠程應用程序 - 客戶端

編輯:?你會選擇進行部署,並從客戶端遠程訪問有什麼辦法,如果你有ejbs業務邏輯的遠程服務器上

感謝您有什麼建議!

祝你一切順利,Petar

+0

你下載完整版或只是網上的個人資料? '嗅探器'是glassfish容器的一部分,該容器計算出部署jar文件時要啓動哪個容器。它反思了jar文件尋找告訴傳說文件,如web.xml等。由於嗅探器抱怨無法找到ejb容器,我猜測你可能已經下載了web配置文件。嘗試獲得'完整平臺' – 2010-10-04 04:58:49

+0

我下載完整版本,我認爲客戶端容器抱怨,因爲它發現兩件事 - ejb和應用程序客戶端,它不知道要運行哪個。但是我怎麼才能引用我的ejb項目呢? – 2010-10-04 10:24:07

+0

@Chuk另請參閱我的編輯。 – 2010-10-04 10:45:09

回答

1

我認爲你的情況中最好的方法是在你的服務器上創建一個Servlet(或者其他一些簡單的組件),並讓這個人跟你的EJB交談。如果您選擇這種情況,您將隔離您的客戶端/服務器通信和您的業務邏輯實施。

+0

感謝您的答案。但是我選擇了EJB,所以通過定義良好的@Remote接口,遠程通信變得更容易。此外,我不會有一個Web GUI,爲什麼創建一個servlet然後使用HTTP通信?它不是太低級別和人造? – 2010-10-04 12:18:10

+0

是的。但是如果你想避免所有的應用服務器依賴,我想這可能是一種方法。當然,最好的方法是在客戶端應用程序中與所有依賴關係進行真正的EJB通信。在某些情況下,這可能是一個問題(我有一個87MB的客戶端WebStart應用程序,但我們的客戶在專用網絡中使用它,所以它在這裏不成問題)。 – 2010-10-04 13:27:41