私は別のパッケージにいくつかのEJBを持つWebプロジェクトを持っています。しかし、私はEJBを捜す問題があります。EJBルックアップの問題
私のディレクトリ構造:2つのパッケージindex.jobおよびindex.ejb。
- パッケージindex.jobはPOJOのindex.javaを有する
- @Stateless(名= "indexEJB" にmappedName = "indexEJB")とによって定義されたEJBを有するindex.ejbパッケージ@LocalBean
- も@Local
私の地元の豆
012定義されたローカルEJBインタフェースを持っているindex.ejbパッケージpackage index.ejb;
import java.util.ArrayList;
import javax.ejb.Local;
@Local
public interface IndexEJBLocal {
public ArrayList getLatestVersions(String year, int start, int end);
}
マイEJB
package index.ejb;
import javax.ejb.Stateless;
import javax.annotation.Resource;
import javax.ejb.LocalBean;
@Stateless(name = "indexEJB", mappedName = "indexEJB")
@LocalBean
public class IndexEJB implements IndexEJBLocal {
@Resource(lookup = "jdbc/cap")
private DataSource ds;
@Override
public ArrayList getLatestVersions(String year, int start, int end) {
return null;
}
}
マイPOJO
//ADDED @ManagedBean ANNOTATION SO SERVER IDENTIFIES THIS OBJ AS A RESOURCE
//Also cannot use @PostConstruct as the execute method is overridden from quartz job interface
package index.job;
import javax.annotation.ManagedBean;
import javax.ejb.EJB;
import javax.inject.Inject;
@ManagedBean
public class IndexJob implements Job {
@EJB
IndexEJB billIndexEJB1;
@EJB
IndexEJBLocal billIndexEJB2;
@Inject
IndexEJB billIndexEJB3;
@Inject
IndexEJBLocal billIndexEJB4;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("1::"+billIndexEJB1); //ALWAYS NULL
System.out.println("2::"+billIndexEJB2); //ALWAYS NULL
System.out.println("3::"+billIndexEJB3); //ALWAYS NULL
System.out.println("4::"+billIndexEJB4); //ALWAYS NULL
try {
Context ctx = new InitialContext();
IndexEJBLocal billIndex = (IndexEJBLocal)
ctx.lookup("java:global.MY-PROJECT-NAME.IndexEJB!index.ejb.IndexEJBLocal");
//ABOVE LOOKUP ALWAYS FAILS WITH NameNotFoundException
System.out.println("billIndex::" + billIndex);
} catch (Exception e) {
e.printStackTrace();
}
}
}
これを解決することができる方法上の任意のヒントは非常にいただければ幸いです。
プロジェクトが実行されている場所:NetBeans 8.2; JDK 1.8b45; Java EE 7 Web WebLogic 12.2.1.1
あなたはどんな問題がありますか?コンテキストルックアップエラー?はいの場合は、起動ログを表示してください。正しく配置されていれば、WebロジックがEJBを呼び出すことができるJNDI名について通知する必要があります。 – Leonardo
ありがとう!私は起動ログを調べ、それが助けになりました。ルックアップパスをjava:module/IndexEJB!index.ejb.IndexEJBに更新してインタフェースを削除しなければならなかった。 –