【问题标题】:Java Netbeans errorJava Netbeans 错误
【发布时间】:2010-09-30 09:03:28
【问题描述】:

我一直在关注“Netbeans 电子商务教程”,目前正在执行此步骤: http://netbeans.org/kb/docs/javaee/ecommerce/entity-session.html

我已根据该页面完全配置了我的 Window 7 帐户,包括 NetBeans 6.9.1、Glassfish 服务器和 MySQL。

执行“类别”页面时出现错误 500(下面的日志摘录)。当我完成“使用 EJB 访问数据”此页面的“选定类别”子部分中的第 3 步时,错误就会显现出来。有问题的行是:

// get selected category
selectedCategory = categoryFacade.find(Short.parseShort(categoryId));

如果我将此行注释掉,错误就会消失。

日志文件sn-p在这里:

[#|2010-09-29T18:32:32.570+0100|WARNING|glassfish3.0.1|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=30;_ThreadName=http-thread-pool-8080-(2);|StandardWrapperValve[Controller]: PWC1406: Servlet.service() for servlet Controller threw exception
javax.ejb.EJBException
 at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:5119)
 at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5017)
 at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4805)
 at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2004)
 at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1955)
 at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:198)
 at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:84)
 at $Proxy355.find(Unknown Source)
 at session.__EJB31_Generated__CategoryFacade__Intf____Bean__.find(Unknown Source)
 at controller.ControllerServlet.doGet(ControllerServlet.java:68)

ControllerServlet 代码中的第 68 行就是上述代码。

我对 Java 和 Netbeans 的经验非常浅,以至于我什至不确定如何开始调试它。我已经非常密切地遵循了本教程,所以我不应该错过它 - 但确实会发生错误。

我了解基于所包含信息的彻底解决方案会很困难。如果需要任何进一步的信息,请询问。如果做不到这一点,如果有人对我如何自行进一步调查有任何建议,我将不胜感激。

我一直认为破解问题是最好的学习方式,但也很令人沮丧。

更新: 我一直在运行 NetBeans 调试器。看来问题出在演员代码(Short.parseShort(categoryId))上。当我用一个简单的数字替换它时,它可以工作。 例如此代码有效 // 获取选择的类别 selectedCategory = categoryFacade.find(1);

有人知道演员阵容失败的原因吗? categoryId 在调试器中被确认为值为“1”的字符串...

【问题讨论】:

  • 你是说 Netbeans 6.9.1?
  • 是的,我以为我在上次的帖子编辑中已经解决了这个问题。我现在有:D
  • 您在 EJB 的 find() 方法中得到了什么?这可能会有所帮助。
  • @Adeel。目前我有一个字符串转换为短。当我用数字替换字符串时,代码有效。如果我用字符串(例如“1”)替换 categoryId 变量,那么我会遇到同样的错误。因此,我想一定是演员失败了。

标签: java servlets netbeans


【解决方案1】:

好的,我已经破解了这个。明明是我的错……

表标识应该设置为一个短的,而不是我将它设置为一个整数。因此,通过将“categoryId”字符串转换为短字符串并将其传递给 find 方法,我传入了错误的数据类型。

将“Short.parseShort(categoryId)”参数替换为“Integer.parseInt(categoryId)”解决了问题。

对于那些花时间阅读本文的人;谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 2018-06-03
    • 2017-11-04
    • 2018-04-08
    • 1970-01-01
    相关资源
    最近更新 更多