簡體   English   中英

如何從Java SE應用程序使用嵌入式openejb?

[英]How to use embedded openejb from a java SE application?

我正在編寫一個小的Java庫,該庫旨在用於Web應用程序以及Java控制台應用程序。

為了從CDI和其他javaEE 6功能中受益,而不必維護該庫的兩個版本(java EE和java SE),我想對控制台應用程序使用openejb(嵌入式)。 因此,我在Eclipse中構建了一個Maven項目,並添加了openejb工件。

我只是不知道如何使控制台程序使用openejb-container,即解決了我的注入和其他javaEE功能。

可以說我有兩個非常簡單的類:

@Stateless
Class A {

    @Inject
    public B member;

    public A() {};

}

@Stateless
Class B {

    public B() {};

    public String getString () {
        return "Hello";

    }

}

因此,我如何使用main()方法獲得一個普通的舊Java類,使它使用嵌入式openejb實例化A的成員? -類似於:

public class TestOpenEJB {

    public static void main(String[] args) {

        Class A a = new A(); /*wrong of couse*/

        System.out.println( a.member.getString() );

    }
}

一個適用於此簡單示例的解決方案將很有幫助。

最后,我的目的是為內部使用嵌入式javaEE容器的庫提供Java SE api。

非常感謝!

除了我的評論外,我認為您的問題可以通過以下方式解決:

繼續並使用EJB對庫的行為進行建模(如代碼示例所示)。 這是一種很好的方法,因為容器關心諸如池化,並行訪問,事務之類的事情。

然后,您的Web應用程序(假設它在同一容器中)可以直接使用這些EJB。

為了通過控制台應用程序訪問它,您可以在應用程序客戶端容器中運行它(比嘗試將容器嵌入應用程序中要好),或者(我建議)以其他方式公開您的業務邏輯(例如通過REST),並在獨立的客戶端應用程序中使用它。

PS:要使用DI機制集成測試您的業務邏輯,請使用Arquillian

暫無
暫無

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

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