privateなフィールドにDI ?
JBossの4.0.3 RC1を使ってチュートリアルのコードをちょっと変更したものを動かしてみる。privateなフィールドにDIできてしまうんですけどコレって普通なんでしょうか?気になる。
インタフェース
public interface Calculator { int multi(int x, int y); }
public interface ShoppingCart { int buy(int price, int qty); }
Stateless Session Beans
@Stateless @Remote(Calculator.class) public class CalculatorBean implements Calculator { public int multi(int x, int y) { return x * y; } }
@Stateless @Remote(ShoppingCart.class) public class ShoppingCartBean implements ShoppingCart { @EJB private Calculator calculator; public int buy(int price, int qty) { return calculator.multi(price, qty); } }
クライアント
public class Client { public static void main(String[] args) throws Exception { InitialContext ctx = new InitialContext(); ShoppingCart s = (ShoppingCart) ctx.lookup(ShoppingCart.class.getName()); System.out.println(s.buy(100,2)); } }
結果
200
その他
- @Localってうまく動かない。未実装?
- @EJBのnameとbeanNameの使いわけ方がよくわからない。