2012-03-29 96 views

回答

1

你可以通過使用支持比EJB精簡版以上的容器EJB 3.1 EJBContainer API。 EJB lite應該是最小的而不是最大的。

我知道OpenEJB支持嵌入JAX-RS,不確定其他人。如果他們通過嵌入式Arquillian適配器來支持JAX-RS,他們應該能夠通過標準的EJBContainer API來支持它,這個Java API用於測試Java或者獨立應用程序。

下面是一個例子:

,一個是沒有很好的記載,所以這裏的亮點。

首先,包含嵌入式容器庫。在這種情況下是以下Maven的依賴:

<dependency> 
    <groupId>org.apache.openejb</groupId> 
    <artifactId>openejb-cxf-rs</artifactId> 
    <version>4.0.0-beta-3-SNAPSHOT</version> 
    <scope>test</scope> 
</dependency> 

然後在你的測試用例,啓動的EJBContainer:

final Properties properties = new Properties(); 
properties.setProperty("openejb.embedded.remotable", "true"); 
EJBContainer.createEJBContainer(properties); 

你去好了,現在你可以發送請求到您的服務。使用CXF WebClient,可能看起來像這樣:

Response response = WebClient.create("http://localhost:4204/rest-on-ejb") 
     .path("/user/create") 
     .query("name", "dummy") 
     .query("pwd", "unbreakable") 
     .query("mail", "[email protected]") 
     .put(null); 

// Then check the results via invoking the bean directly 
List<User> list = service.list(0, 100); 
for (User u : list) { 
    if (!users.contains(u)) { 
     service.delete(u.getId()); 
     return; 
    } 
} 
fail("user was not added"); 

當然,普通的URL或Commons HttpClient也可以。