当前位置: 首页 > 知识库问答 >
问题:

netbeanss为什么用不同的方法调用企业bean?

程俊健
2023-03-14

我使用Netbeans来了解JavaEE。我使用“插入代码”和“调用企业bean”来获取一个远程bean,其接口位于我的项目中包含的库中。如果我的项目是一个web应用程序netbeans,那么这样做会插入一个如下所示的函数。(这是一个jndi查找,对吗?)

private CategoryBeanRemote lookupCategoryBeanRemote() {
    try {
        Context c = new InitialContext();
        return (CategoryBeanRemote) c.lookup("java:global/Shop2-ear/Shop2-database-ejb/CategoryBean!shop2.database.CategoryBeanRemote");
    } catch (NamingException ne) {
        Logger.getLogger(getClass().getName()).log(Level.SEVERE, "exception caught", ne);
        throw new RuntimeException(ne);
    }
}

当您在企业应用程序客户端中执行同样的操作时,netbeans只会给出

@EJB
private static BeverageBeanRemote beverageBean;

这是为什么?

如果我试图在web应用程序中手动创建第二个,服务器会出现如下错误,这是否正常

SEVERE: Unexpected error occurred
org.apache.wicket.WicketRuntimeException: Can't instantiate page using constructor 'public com.myapp.wicket.HomePage()'. Might be it doesn't exist, may be it is not visible (public).  
at org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:193)
at org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
at org.apache.wicket.DefaultMapperContext.newPageInstance(DefaultMapperContext.java:133)
...
Caused by:
java.lang.reflect.InvocationTargetException     
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:174)
... 40 more Caused by: java.lang.NullPointerException
at com.myapp.wicket.HomePage.<init>(HomePage.java:27) 
... 45 more

共有1个答案

衡高寒
2023-03-14

在Java EE中,真正重要的是配置。不幸的是,当你使用IDE时,学习如何正确配置你的应用程序真的很难(但是如果没有IDE,可能会更难:P)

我不是专家,但...

我的猜测是,当您创建客户端应用程序时,您会将其绑定到某个企业应用程序。它保存在配置文件中。这样,客户端应用程序“知道”远程Bean在哪里...并且jndi查找不是必需的。

我建议使用一些教程(这样你可能会知道幕后发生了什么)和/或创建像SVN这样的存储库,并在IDE进行的每个操作之后检查配置文件中发生了什么变化。

此外,在我看来,你还没有打印完整的stacktrace…但也许我错了

 类似资料:
  • 问题内容: 我正在尝试制作我的第一个Android应用程序。我注意到,如果数据库不存在,则不会调用该方法来创建表。但是,即使我尝试调试,该方法也无法正常工作。 请查看下面的代码,并给我任何建议。任何帮助将不胜感激。 问题答案: 我也遇到了 SQLiteOpenHelper的 麻烦。对我有用的是存储成员变量 在SQLiteOpenHelper子类中并调用 在构造函数中。 该问题的答案还包括一些有用的

  • 问题内容: 作为Java新手,我想知道:在世界上所有的语言中,为什么Java经常用于企业应用程序?与其他语言相比,是什么使它如此?在未来的几年中会继续这样吗? 非常感谢您的见解。提前致谢 :) 问题答案: 一句话:图书馆。Java具有大量优秀的库,用于解决开发企业应用程序时需要解决的大多数常见问题。在许多情况下,满足特定需求的选择不止一个好选择,而且这些图书馆通常是在具有商业友好性许可的情况下是免

  • 我正在学习RxJava。我订阅了一个长时间运行的回调作为可观察回调,并希望看到执行onNext回调: 我希望打印输出“6”,但该方法在此之前完成。 如果我没有在IO调度程序上订阅,那么调用将被阻止,并且我确实看到打印的输出。 我的问题是,如果在IO调度程序上运行,为什么不执行回调。我知道test()方法已终止,但尚未释放对订阅回调的引用。

  • 我知道从中调用带注释的方法,前面已经讨论过了。 但是我不明白为什么当bean被覆盖时它就不起作用了。 我有一个遗留类,我不能修改。它是一个配置,同时也是一个业务bean。这是一个简化版本: 现在,调用返回而不是。 当配置被删除并且测试上下文的配置被设置为时,一切都能正常工作(结果为)。 在测试中注册bean有什么不同?

  • 邀请您的客户、实习生或合作伙伴等加入企业,工作起来会更加方便,但为了保护企业隐私信息,您可以邀请他们成为企业的“访客”。访客只能被他人添加进频道,不能主动加入或创建频道,并且只能查看和联络那些有沟通需要的成员,对他们开放的信息和功能都非常有限。 1.手机版 查看访客方法:通讯录-我的企业-企业访客 2.电脑版 查看访客方法:通讯录-选择企业-企业访客

  • 我想优雅地关闭一个线程。然而,一旦关闭被启动,线程应该在结束通常的操作后执行一些关闭操作。 两个线程都使用Hibernate和/或等待,并处理中断异常,它们还在一个循环中处理任务,只需要几毫秒。所以我期望while循环结束,因为Thread.currentThread()。isInterrupted()变为“true”。 问题是,对于我的代码,有时我会得到日志“SHUTDOWN”,有时不会。此外,