JBoss5 Containerを使用してejbの例を実行しています。私は例を使用しています from here(Part one) 。
この例では、BeanをJBossにデプロイし、アプリケーションをTomcatにデプロイしました(JBossからBeanにアクセスするため)。 Tomcatサーバーの画面にエラーが表示されます
javax.naming.NameNotFoundException:greetJndiがバインドされていません
(greetJndiはjboss.xmlファイルのjndi-nameです)JBossにデプロイする特定のディレクトリ構造はありますか?
ありがとう
このエラーは、EJBコンポーネントにアタッチされていないJNDI名を検索しようとしていることを意味します。その名前のコンポーネントは存在しません。
Dir構造に関する限り、EJBコンポーネントを含むJARファイルを作成する必要があります。私が理解しているように、EJB 2.Xコンポーネントを使用したい(少なくともリンクされた例が示唆している)ため、JARファイルの構造は次のようになります。
/com/mypackage/MyEJB.class /com/mypackage/MyEJBInterface.class/com/mypackage/etc ... etc ... Java classes /META-INF/ejb-jar.xml /META-INF/jboss.xml
JARファイルは、ファイル拡張子がZipからJARに変更された多かれ少なかれZipファイルです。
ところで。 JBoss 5を使用している場合、EJB 3.0を使用できます。EJB3.0は設定がはるかに簡単です。最も単純なコンポーネントは
@Stateless(mappedName="MyComponentName")
@Remote(MyEJBInterface.class)
public class MyEJB implements MyEJBInterface{
public void bussinesMethod(){
}
}
Ejb-jar.xml、jboss.xmlは不要で、MyEJBおよびMyEJBInterfaceコンパイル済みクラスを持つEJB JARのみが必要です。
クライアントコードで、「MyComponentName」を検索する必要があります。