2

EJB クラス - GetTransactionDataForMercury を定義しました。以下のサンプルコードを見つけてください。

@Stateless
@TransactionAttribute(value = TransactionAttributeType.REQUIRES_NEW)
public class GetTransactionDataForMercury {

@EJB
private BusinessLocal business;

private Long historyId = null;

public GetTransactionDataForMercury(){
    super();
}

public void getHistoryForMercury() {
    try {
        historyId = getConfigHistoryId("QueryDslConfig");

    } catch (Exception exception) {
        notifier.error("Error Occured  -- > "+exception);
    }

}

public Long getConfigHistoryId(String requestType){
    notifier.info(" Processing QueryDslConfig " );
    Long historyId = null;
    BaseEntity entity = null;
    Long transactionStartTime = null;
    Long transactionEndTime = null;
    ConfigEntity configEntities[] = null;
    Query query = null;

    try{
        transactionStartTime = System.currentTimeMillis();
        notifier.info(" Going to Query  " );
        notifier.info("Business object created : " + business);
        List<BaseEntity> entities = business.query(new QueryFactory(requestType).create());
        notifier.info(" No. of entities fetched  " + entities.size());

        historyId = Long.parseLong(configEntities[0].getConfigId());
            notifier.info("History Id stored : " + historyId);

    }catch(Exception exception){
        transactionEndTime = System.currentTimeMillis();
        notifier.error("Error Occured  -- > "+exception.getMessage());
    }
    return historyId;
}

BusinessLocal は、EJB クラス (BusinessSLSB) によって実装される EJB インターフェースです。次の行で null エラーに直面しています。

notifier.info("Business object created : " + business);

EJB オブジェクトが null になる理由を知る必要がありますか? EJB クラス - GetTransactionDataForMercury の作成に問題はありますか?

提案してください!

4

1 に答える 1

0

SLSB が @Local または @Remote インターフェースを実装していないようです。そのため、JBoss によって適切に初期化されておらず、依存関係が注入されていない可能性があります。

于 2013-03-26T10:27:42.893 に答える