0

jboss を使用してい5.1.0.GA (build: SVNTag=JBoss_5_1_0_GA date=200905221634)ます。そして、Bean のビジネス インターフェイスを取得する必要があります。これは、トランザクション管理に必要です。ので、私は持っています:

@Local
public interface MyBeanInterface {
    void transactionalMethod();
}

@Stateless
public class MyBean implements MyBeanInterface {
    @Resource
    private SessionContext context;

    private int aState;

    public void someMethod() {
        aState = 42;
        context.getBusinessObject(MyBeanInterface.class).transactionalMethod();
    }

    @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
    public void transactionalMethod() {
        System.out.println(aState); // 0!!!!!
    }
}

何らかの理由で同じ Bean を取得できませんが、新しい Bean が作成されます。transactionalMethod正しく実行するには状態変数の値が必要なため、これは悲惨なことです。

私は何を間違っていますか、それは jboss のバグですか? ちなみに、Bean のクラスを介してビジネス オブジェクトを取得する機能に影響するバグがあります: https://issues.jboss.org/browse/EJBTHREE-2126。ただし、それが私の問題に関連しているかどうかはわかりません。

4

2 に答える 2

0

構文が完璧かどうかを確認する時間はありませんが、試してみてください。

InitialContext jndiContext = new InitialContext();
Object ref = jndiContext.lookup("projname/MyBeanInterface/local");
MyBeanInterfaceLocal m = (MyBeanInterfaceLocal) ref;

ただし、SessionContext フィールドがあることがわかったので、コードは少し異なるはずです。多分それは次のようになります:

Object ref = SessionContext.lookup("projname/MyBeanInterface/local");
MyBeanInterfaceLocal m = (MyBeanInterfaceLocal) ref;

これが役立つかどうか教えてください!

于 2013-01-28T01:13:27.327 に答える