2011-01-14 9 views
2

5.1へのJBoss 4.3から移行している間は、次の問題が発生しました:javax.ejb.EJBLocalObjectインターフェイスを拡張する必要がありますか、または拡張してはいけませんか?

最初の例外をEJBLocalObjectのない実装でデプロイ時に発生:

Caused by: java.lang.IllegalStateException: EJB 3.0 Core Specification Violation (4.6.9): The session beanÔÇÖs local interface interface com.company.project.BeanLocal must extend the javax.ejb.EJBLocalO 
bject interface. 
     at org.jboss.metadata.annotation.creator.ejb.jboss.LocalHomeProcessor.setLocal(LocalHomeProcessor.java:73) 
     at org.jboss.metadata.annotation.creator.ejb.jboss.LocalHomeProcessor.process(LocalHomeProcessor.java:66) 
     at org.jboss.metadata.annotation.creator.ejb.jboss.LocalHomeProcessor.process(LocalHomeProcessor.java:45) 
     at org.jboss.metadata.annotation.creator.AbstractProcessor.processClass(AbstractProcessor.java:215) 
     at org.jboss.metadata.annotation.creator.AbstractProcessor.processClass(AbstractProcessor.java:172) 
     at org.jboss.metadata.annotation.creator.ejb.jboss.AbstractEnterpriseBeanProcessor.process(AbstractEnterpriseBeanProcessor.j 
ava:119) 
     at org.jboss.metadata.annotation.creator.ejb.jboss.AbstractEnterpriseBeanProcessor.process(AbstractEnterpriseBeanProcessor.j 
ava:94) 
     at org.jboss.metadata.annotation.creator.ejb.jboss.AbstractEnterpriseBeanProcessor.process(AbstractEnterpriseBeanProcessor.j 
ava:52) 
     at org.jboss.metadata.annotation.creator.AbstractCreator.process(AbstractCreator.java:154) 
     at org.jboss.metadata.annotation.creator.AbstractCreator.processMetaData(AbstractCreator.java:87) 
     at org.jboss.metadata.annotation.creator.ejb.jboss.JBoss50Creator.create(JBoss50Creator.java:109) 
     at org.jboss.deployment.OptAnnotationMetaDataDeployer.processJBossMetaData(OptAnnotationMetaDataDeployer.java:134) 
     at org.jboss.deployment.OptAnnotationMetaDataDeployer.processMetaData(OptAnnotationMetaDataDeployer.java:84) 
     at org.jboss.deployment.AnnotationMetaDataDeployer.deploy(AnnotationMetaDataDeployer.java:177) 
     ... 32 more 

OK、私はインターフェイスを実装したが、JBossのISN」 EJBLocalObjectを実装してはいけません! すべてのアイデア?

Caused by: java.lang.IllegalStateException: EJB 3.0 Core Specification Violation (4.6.6): The session beanÔÇÖs business interface in 
terface com.company.project.BeanLocal must not extend the javax.ejb.EJBLocalObject interface. 
     at org.jboss.metadata.annotation.creator.ejb.jboss.LocalProcessor.addBusinessInterface(LocalProcessor.java:57) 
     at org.jboss.metadata.annotation.creator.ejb.jboss.LocalProcessor.process(LocalProcessor.java:76) 
     at org.jboss.metadata.annotation.creator.ejb.jboss.LocalProcessor.process(LocalProcessor.java:45) 
     at org.jboss.metadata.annotation.creator.AbstractProcessor.processClass(AbstractProcessor.java:222) 
     at org.jboss.metadata.annotation.creator.AbstractProcessor.processClass(AbstractProcessor.java:172) 
     at org.jboss.metadata.annotation.creator.ejb.jboss.AbstractEnterpriseBeanProcessor.process(AbstractEnterpriseBeanProcessor.j 
ava:119) 
     at org.jboss.metadata.annotation.creator.ejb.jboss.AbstractEnterpriseBeanProcessor.process(AbstractEnterpriseBeanProcessor.j 
ava:94) 
     at org.jboss.metadata.annotation.creator.ejb.jboss.AbstractEnterpriseBeanProcessor.process(AbstractEnterpriseBeanProcessor.j 
ava:52) 
     at org.jboss.metadata.annotation.creator.AbstractCreator.process(AbstractCreator.java:154) 
     at org.jboss.metadata.annotation.creator.AbstractCreator.processMetaData(AbstractCreator.java:87) 
     at org.jboss.metadata.annotation.creator.ejb.jboss.JBoss50Creator.create(JBoss50Creator.java:109) 
     at org.jboss.deployment.OptAnnotationMetaDataDeployer.processJBossMetaData(OptAnnotationMetaDataDeployer.java:134) 
     at org.jboss.deployment.OptAnnotationMetaDataDeployer.processMetaData(OptAnnotationMetaDataDeployer.java:84) 
     at org.jboss.deployment.AnnotationMetaDataDeployer.deploy(AnnotationMetaDataDeployer.java:177) 
     ... 32 more 

EDIT:BeanはEJB 3.0と一緒にEJB 2.1クライアントビューを提供する必要があります。

宣言は次のようになります。

@TransactionManagement(TransactionManagementType.CONTAINER) 
@TransactionAttribute(TransactionAttributeType.REQUIRED) 
@Stateless 
@RemoteHome(R2PRegistrationHome.class) 
@RemoteHomeBinding(jndiBinding = JNDINames.BEAN_FOR_EJB_2_1_EJBHOME) 
@LocalHome(R2PRegistrationLocalHome.class) 
@LocalHomeBinding(jndiBinding = JNDINames.BEAN_FOR_EJB_2_1_LOCALHOME) 
public class Bean implements BeanLocal, BeanRemote { 
} 

答えて

1

Beanクラスは、コンポーネントインタフェースを実装するべきではありません。 Beanクラスからimplements句を削除し、BeanLocalインタフェースを変更してEJBLocalObjectを拡張し、BeanRemoteインタフェースを変更してEJBObjectを拡張します。

0

二スタックトレースによると、あなたが、ローカルとリモートの両方のインタフェースと同じインタフェースを使用していることが表示されます。別々のリモートインタフェースとローカルインタフェースをそれぞれ作成する場合は、正常に動作するはずです。

+0

おかげで、ローカルおよびリモートのが分離されて、私は私の質問を更新しました – stacker

2

あなたの人生をよりシンプルにするために、単一のBeanをEJB3とEJB2の両方のBeanにすることはお勧めしません。 EJB3に委譲する別個のEJB2 Beanを作成します。

これにより、EJB2 Beanをサポートしなくても簡単に削除することが簡単になります。

さらに、@TransactionManagement(TransactionManagementType.CONTAINER)@TransactionAttribute(TransactionAttributeType.REQUIRED)の両方を削除できます。これらはデフォルトであり、EJB3は設定よりも慣例を強調しているため、必要ありません。あなたがプログラミングし始めているスタイルは、EJB3の精神に少し反するようです。あなたが唯一のプログラマであればこれは問題ではないかもしれませんが、EJB3で訓練された他の人たちは親切に反応しないかもしれません。

次は十分なはずです:あなたの応答のための

@Stateless 
public class Bean implements BeanLocal, BeanRemote { 
} 
関連する問題