我已经开发了带有Remote接口的EJB应用程序。此应用程序已部署在weblogic 12上。
对于Java应用程序,我尝试使用EJB应用程序,但是当我从InitialContext类调用方法查找时,出现以下消息“ javax.naming.NameNotFoundException:尝试查找'NewSessionBean.remote'时没有”找不到子上下文“ NewSessionBean”
这是来自远程接口的代码:
alpine
这是实现代码的一部分:
package co.com.tutorial.stateless;
import java.util.List;
import javax.ejb.Remote;
/**
*
* @author jquintep
*/
@Remote
public interface NewSessionBeanRemote {
void addBook(String bookName);
List getBooks();
}
这是我调用查阅代码的一部分:
package co.com.tutorial.stateless;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
/**
*
* @author jquintep
*/
@Stateless
public class NewSessionBean implements NewSessionBeanRemote {
List<String> bookShelf;
public NewSessionBean() {
bookShelf = new ArrayList<String>();
}
感谢您考虑我的要求。
PS 我正在tutorialspoint上关注EJB教程。
答案 0 :(得分:1)
您可以通过Weblogic控制台中的以下路径查看JNDI树
环境->服务器->选择服务器->单击查看JNDI树链接
我总是检查JNDI树是否存在查找问题。
为什么不使用JNDI可移植名称进行查找?
https://docs.oracle.com/cd/E19798-01/821-1841/girgn/index.html
如果您将实现部署为单独的EAR,则可以使用以下查询
ctx.lookup("java:global/[your ear name]/[your jar file name(module name)]/NewSessionBean!co.com.tutorial.stateless.NewSessionBeanRemote");
如果您将实现部署为单独的jar,则可以使用以下查找
ctx.lookup("java:global/[your jar file name(module name)]/NewSessionBean!co.com.tutorial.stateless.NewSessionBeanRemote");
如果要在同一个EAR中但在另一个广口瓶中查找
ctx.lookup("java:app/[your jar file name(module name)]/NewSessionBean!co.com.tutorial.stateless.NewSessionBeanRemote");
如果要在同一个EAR和同一个罐子中查找
ctx.lookup("java:module//NewSessionBean!co.com.tutorial.stateless.NewSessionBeanRemote");