2016-11-22 44 views
1

私たちはEJB 3.0を使用しています。私は、Futureメソッドが3.1以降でのみ動作することを読んでいます。 3.0で将来のメソッドを実装する方法はありますか? JBoss 6.4.9をサーバーアプリケーションとして使用しています。EJB 3.0と将来のメソッド

私は次のメソッドを作成しました。このメソッドは、別のメソッドの開始時に呼び出され、最後にこのメソッドの応答が必要です。

@Asynchronous 
private Future<COPCustomerDTO> getCustomerFromHostSystem(ServerEncryptedString aAccountNumber) { 
    try { 
     COPCustomerDTO copCustomerDTO = customerAccountFacade.getCustomerDTOByAdministrativeAccountNumber(aAccountNumber); 
     return new AsyncResult<>(copCustomerDTO); 
    } catch (CoPCommunicationException | InvalidExternalAccountReferenceException e) { 
     throw new LogicRuntimeException("Unable to get COPCustomerDTO for customer", e); 
    } 
} 

おかげ

+0

これは、標準Java EEでは不可能です。しかし、一部のアプリケーションサーバーには拡張機能が実装されています。どのアプリケーションサーバーを使用していますか? –

+0

私たちはJBoss 6.4.9 – Gynnad

答えて

0
のJBoss 6.4.x :-)

グッドニュースがサポート@Asynchronous

しかし、あなたのコードはプライベートメソッドで動作しますが、@Asynchronousません。 これは、JBossがプロキシを作成する必要があるため、パブリックメソッドに対してのみ機能します。

+0

を使用していますので、私が行う必要があるのは、メソッドをpublicに変更することだけです。 – Gynnad

+0

変更する必要があるのは唯一のものではないことがわかりました。ここで良い説明を見つけることができます:http://docs.jboss.org/ejb3/app-server/reference/build/reference/en/html_single/# d0e427 – Gynnad

+0

プロキシのためにアノテーションを使用する場合は、常にメソッドをpublicにする必要があります。そして、あなたは他の何かを変える必要はありません。 JBoss 6.4はそれをそのままの状態でサポートします。 –