2012-02-21 32 views
2

私はEJB3のGlassFish - JNDIルックアップがSerialContextに失敗しました - NameNotFoundExceptionが

@Stateless (mappedName="TestBean") 
public class TestBean implements TestBeanRemote { 
public int add(int a, int b){ 
return a+b; 
} 
} 

とリモート・インタフェース

@Remote 
public interface TestBeanRemote { 
    public int add(int a, int b); 
} 
リモートEJBを持ってEJB3、GlassFishの3.0.1を使用し、HELIOS

日食よ

application.xmlの

<?xml version="1.0" encoding="UTF-8"?> 
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:application="http://java.sun.com/xml/ns/javaee/application_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd" id="Application_ID" version="6"> 
    <application-name>ear.proj</application-name> 
    <display-name>ear.proj</display-name> 
    <module> 
    <web> 
     <web-uri>war.proj</web-uri> 
     <context-root>/war</context-root> 
    </web> 
    </module> 
    <module> 
    <ejb>ejb.proj.jar</ejb> 
    </module> 
</application> 

は私が空の太陽のejb-jar.xmlのを持っていると私はそれが私がWEB

私と一緒にEARに私のEJBを入れているEJB3 ので、オプションだということを読んで私は、ejb-jar.xmlのを定義していませんでしたSerialContextに[ '::検索は、javaのために失敗したグローバル/ ear.proj/ejb.proj/TestBean私は次の例外に javax.naming.NamingExceptionのを取得するPOJOクラスに

InitialContext ic = new InitialContext(); 
ic.lookup("java:global/ear.proj/ejb.proj/TestBean"); 

をこのEJBを呼び出すしようとしていますルート例外はjavax.naming.NameNotFoundExceptionです:ear.proj]

私は問題がEJBの設定にあると思います私のEARは、GlassFish EJBのFAQにあるように、ポータブルキーワードが見つからないうちにポータブルグローバルJNDI名がserver.logに出力されます。

代わりに、私は以下を見ることができます INFO:アプリケーションバンドルでモジュールejb.proj.ejb.jarを見つけることができません

何かがありますか?

+0

あなたのPojoクラスについて詳しく説明できますか?上のコードではEJB3を使用しているので、EJB3インジェクションを使用しない特別な理由はありますか? @EJB TestBeanRemote TestBeanRemote; –

答えて

0

は、使用してみてください:

classesdirectoryは、Eclipseで、プロジェクトツリー内のクラス(TestBean.class)を含むディレクトリを=
ic.lookup("java:global/*classesdirectory*/TestBean"); 

。コンパイルクラッセ(でも、パッケージおよびサブパッケージAR)を使用すると、EJBプロジェクトを展開する場合

1

がいることを確認しますが、あなたがserver.logに

にこのことについて通知されているので

NetBeansで

あなたは

ic.lookup("java:global/classes/TestBean"); 

を試すことができます

INFO: Portable JNDI names for EJB ${EJB_Name}: 
INFO: Glassfish-specific (Non-portable) JNDI names for EJB ${EJB_Name}: 

コンテキストパスが表示されます。

PSこれらのログを表示するには、設定に応じてロガー設定を変更する必要があります。サーバー上でserver.logファイルを参照するように設定する必要があります。

関連する問題