開發模型簡化
- 無需 Home/Remote/Local 介面,單一 POJO + 註解即可
- 業務介面標註
@Remote 或 @Local
- Bean 類別標註
@Stateless
- JBoss 自動以介面全名為 JNDI Name
計數器介面與實作
@Remote
public interface Counter {
int add(int i);
int getNumber();
}
@Stateless
public class CounterBean implements Counter {
private int number = 0;
public int add(int i) { return number += i; }
public int getNumber() { return number; }
}
Client 測試程式
InitialContext ctx = new InitialContext();
Counter counter = (Counter) ctx.lookup(Counter.class.getName());
counter.add(10);
System.out.println(counter.getNumber()); // 10
Counter counter2 = (Counter) ctx.lookup(Counter.class.getName());
counter2.add(10);
System.out.println(counter2.getNumber()); // 20,同一 Bean 實例池共享狀態
Ant 建構腳本要點
- classpath 包含 JBoss lib、server/all/lib、ejb3.deployer、jboss-aop.deployer
- 打包為
.ejb3 檔案複製至 server/all/deploy
- 提供
clean.db 目標清理 Hypersonic 資料
部署驗證
- JBoss
run.bat -c all
- Ant
ejbjar → run
- 觀察主控台輸出 10、20 驗證無狀態 Bean 池共享特性